get_id(), true );
if ( ! $quizPostModel instanceof QuizPostModel ) {
return;
}
$total_question = $quizPostModel->count_questions();
$questions = array();
$show_check = $quizPostModel->has_instant_check();
$show_correct_review = $quizPostModel->has_show_correct_review();
$question_ids = $quizPostModel->get_question_ids();
$user_js = array();
$answered = array();
$status = '';
$checked_questions = array();
$crypto_js_aes = false;
$user = learn_press_get_current_user();
$editable = $user->is_admin() || get_post_field( $user->is_author_of( $courseModel->get_id() ) );
$max_retrying = learn_press_get_quiz_max_retrying( $quiz->get_id(), $courseModel->get_id() );
$quiz_results = null;
$userQuizModel = null;
if ( $userModel ) {
$userQuizModel = UserQuizModel::find_user_item(
$userModel->get_id(),
$quiz->get_id(),
LP_QUIZ_CPT,
$courseModel->get_id(),
LP_COURSE_CPT,
true
);
if ( $userQuizModel instanceof UserQuizModel ) {
$status = $userQuizModel->get_status();
$quiz_results = $userQuizModel->get_result();
$checked_questions = $userQuizModel->get_checked_questions();
$start_time_obj = new LP_Datetime( $userQuizModel->get_start_time() );
$start_time_timestamp = $start_time_obj->getTimestamp();
$user_js = array(
'status' => $status,
'attempts' => $userQuizModel->get_history(),
'checked_questions' => $checked_questions,
'start_time' => $userQuizModel->get_start_time(),
'time_spend' => time() - $start_time_timestamp,
'retaken' => $userQuizModel->get_retaken_count(),
'total_time' => $userQuizModel->get_time_remaining(),
'results' => $quiz_results,
);
$answered = $quiz_results['questions'];
}
}
if ( ! $userQuizModel ) {
// Display quiz content.
echo '
';
global $post;
$original_post = $post;
$post = get_post( $quizPostModel->get_id() );
setup_postdata( $post );
echo $quizPostModel->get_the_content();
$post = $original_post;
setup_postdata( $post );
echo '
';
}
$questions = learn_press_rest_prepare_user_questions(
$question_ids,
array(
'instant_check' => $show_check,
'quiz_status' => $status,
'checked_questions' => $checked_questions,
'answered' => $answered,
'show_correct_review' => $show_correct_review,
'status' => $status,
)
);
$duration = $quiz->get_duration();
$js = array(
'course_id' => $courseModel->get_id(),
'nonce' => wp_create_nonce( sprintf( 'user-quiz-%d', get_current_user_id() ) ),
'id' => $quizPostModel->get_id(),
'title' => $quizPostModel->get_the_title(),
'content' => '',
'questions' => $questions,
'question_ids' => $question_ids,
'number_questions_to_do' => $quiz->get_number_questions_to_do(),
'current_question' => absint( reset( $question_ids ) ),
'question_nav' => '',
'status' => '',
'attempts' => array(),
'answered' => $answered ? (object) $answered : new stdClass(),
'checked_questions' => array(),
'passing_grade' => $quizPostModel->get_passing_grade(),
'negative_marking' => $quizPostModel->has_negative_marking(),
'show_correct_review' => $show_correct_review,
'instant_check' => $quizPostModel->has_instant_check(),
'retake_count' => absint( $quizPostModel->get_retake_count() ),
'retaken' => 0,
'questions_per_page' => $quiz->get_pagination(),
'page_numbers' => get_post_meta( $quiz->get_id(), '_lp_pagination_numbers', true ) === 'yes',
'review_questions' => $quizPostModel->get_meta_value_by_key( QuizPostModel::META_KEY_REVIEW, 'yes' ) === 'yes',
'support_options' => learn_press_get_question_support_answer_options(),
'duration' => $duration ? $duration->get() : false,
'crypto' => $crypto_js_aes,
'edit_permalink' => $editable ? $quizPostModel->get_edit_link() : '',
'results' => array(),
'required_password' => post_password_required( $quiz->get_id() ),
'allow_retake' => $quizPostModel->get_retake_count() == - 1,
);
global $post;
$original_post = $post;
$post = get_post( $quizPostModel->get_id() );
setup_postdata( $post );
$js['quiz_description'] = $quizPostModel->get_the_content();
$post = $original_post;
setup_postdata( $post );
$js = array_merge( $js, $user_js );
// To show data debug.
LP_Helper::print_inline_script_tag( 'lp_quiz_js_data', [ 'data' => $js ] );
if ( $total_question ) {
?>