LLMS_AJAX_Handler::quiz_start( array $request )
Start a Quiz Attempt.
Parameters Parameters
- $request
-
(array) (Required) $_POST data. required: (string) attempt_key or (int) quiz_id (int) lesson_id.
Return Return
(WP_Error|array) WP_Error on error or array containing html template of the first question.
Source Source
File: includes/class.llms.ajax.handler.php
* * @return WP_Error|array WP_Error on error or array containing html template of the first question. */ public static function quiz_start( $request ) { $err = new WP_Error(); $student = llms_get_student(); if ( ! $student ) { $err->add( 400, __( 'You must be logged in to take quizzes.', 'lifterlms' ) ); return $err; } // Limit reached? if ( isset( $request['quiz_id'] ) && ! ( new LLMS_Quiz( $request['quiz_id'] ) )->is_open() ) { $err->add( 400, __( "You've reached the maximum number of attempts for this quiz.", 'lifterlms' ) ); return $err; } $attempt = false; if ( ! empty( $request['attempt_key'] ) ) { $attempt = $student->quizzes()->get_attempt_by_key( $request['attempt_key'] ); } if ( ! $attempt || 'new' !== $attempt->get_status() ) { if ( ! isset( $request['quiz_id'] ) || ! isset( $request['lesson_id'] ) ) { $err->add( 400, __( 'There was an error starting the quiz. Please return to the lesson and begin again.', 'lifterlms' ) ); return $err; } $attempt = LLMS_Quiz_Attempt::init( absint( $request['quiz_id'] ), absint( $request['lesson_id'] ), $student->get( 'id' ) ); } $question_id = $attempt->get_first_question(); if ( ! $question_id ) { $err->add( 404, __( 'Unable to start quiz because the quiz does not contain any questions.', 'lifterlms' ) ); return $err; } $attempt->start(); $html = llms_get_template_ajax( 'content-single-question.php', array( 'attempt' => $attempt, 'question' => llms_get_post( $question_id ), ) ); $quiz = $attempt->get_quiz(); $limit = $quiz->has_time_limit() ? $quiz->get( 'time_limit' ) : false; return array( 'attempt_key' => $attempt->get_key(), 'html' => $html, 'time_limit' => $limit, 'question_id' => $question_id, 'total' => $attempt->get_count( 'questions' ),
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
6.4.0 | Make sure attempts limit was not reached. |
3.9.0 | |
3.16.4 | Introduced. |