LLMS_Quiz_Attempt::delete()
Delete the object from the database.
Description Description
Overrides the parent method to perform other actions before deletion.
Return Return
(bool) true on success, false otherwise.
Source Source
File: includes/models/model.llms.quiz.attempt.php
public function delete() {
if ( ! $this->id ) {
return false;
}
$lesson = llms_get_post( $this->get( 'lesson_id' ) );
// No lesson, or lesson incomplete, nothing special to do here.
if ( ! $lesson || ! ( $lesson instanceof LLMS_Lesson ) || ! llms_is_complete( $this->get( 'student_id' ), $this->get( 'lesson_id' ), 'lesson' ) ) {
return parent::delete();
}
/**
* Prepare the query args to retrieve at least another sibling attempt,
* excluding the current one.
*/
$sibling_query_args = array(
'exclude' => $this->get_id( 'id' ),
'per_page' => 1,
);
/**
* If this lesson requires a passing grade, then retrieve only the possible passed sibling
* that might have been triggered the lesson completion.
*/
if ( llms_parse_bool( $lesson->get( 'require_passing_grade' ) ) ) {
$sibling_query_args['status'] = array(
'pass',
);
}
$sibling_attempts = $this->get_siblings( $sibling_query_args, 'ids' );
// If this is the only one relevant left attempt.
if ( empty( $sibling_attempts ) ) {
llms_mark_incomplete(
$this->get( 'student_id' ),
$this->get( 'lesson_id' ),
'lesson',
'quiz_' . $this->get( 'quiz_id' )
);
}
return parent::delete();
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.2.0 | Introduced. |