LLMS_Controller_Lesson_Progression::quiz_maybe_prevent_lesson_completion( bool $allow_completion, int $user_id, int $lesson_id, string $trigger, array $args )
Before a lesson is marked as complete, check if all the lesson’s quiz requirements are met
Parameters Parameters
- $allow_completion
-
(bool) (Required) Whether or not to allow completion (true by default, false if something else has already prevented).
- $user_id
-
(int) (Required) WP User ID of the student completing the lesson.
- $lesson_id
-
(int) (Required) WP Post ID of the lesson to be completed.
- $trigger
-
(string) (Required) Text string to record the reason why the lesson is being completed.
- $args
-
(array) (Optional) additional arguments from the triggering function.
Return Return
(bool)
Source Source
File: includes/controllers/class.llms.controller.lesson.progression.php
public function quiz_maybe_prevent_lesson_completion( $allow_completion, $user_id, $lesson_id, $trigger, $args ) { // If allow completion is already false, we don't need to run any quiz checks. if ( ! $allow_completion ) { return $allow_completion; } $lesson = llms_get_post( $lesson_id ); $passing_required = llms_parse_bool( $lesson->get( 'require_passing_grade' ) ); // If the lesson is being completed by a quiz. if ( 0 === strpos( $trigger, 'quiz_' ) ) { // Passing is required AND the attempt was a failure. if ( $passing_required && ! $args['attempt']->is_passing() ) { $allow_completion = false; } } elseif ( $lesson->is_quiz_enabled() ) { $quiz_id = $lesson->get( 'quiz' ); $student = llms_get_student( $user_id ); $attempt = $student->quizzes()->get_best_attempt( $quiz_id ); // Passing is not required but there's not attempts yet. // At least one attempt (passing or otherwise) is required!. if ( ! $passing_required && ! $attempt ) { $allow_completion = false; // Passing is required and there's no attempts or the best attempt is not passing. } elseif ( $passing_required && ( ! $attempt || ! $attempt->is_passing() ) ) { $allow_completion = false; } } return $allow_completion; }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
3.17.1 | Introduced. |