/** * print out class for quiz body * * @param null $class * @return bool */ function learn_press_quiz_class($class = null) { $quiz = LP()->quiz; if (!$quiz) { return false; } if ($class && is_string($class)) { $class = explode(' ', $class); } elseif (!$class) { $class = array(); } $class[] = "single-quiz"; if (learn_press_user_has_completed_quiz()) { $class[] = "completed"; } elseif (learn_press_user_has_started_quiz()) { $class[] = "started"; } if ($quiz->has('questions')) { $class[] = 'has-questions'; } $class[] = 'clearfix'; $class = array_unique($class); post_class(join(' ', $class)); }
<?php do_action('learn_press_before_quiz_results'); do_action('learn_press_before_enrolled_course'); $my_query = learn_press_get_enrolled_courses($user->ID); $check = 0; if ($my_query->have_posts()) { while ($my_query->have_posts()) { $my_query->the_post(); $quizzes = learn_press_get_quizzes(get_the_ID()); do_action('learn_press_before_quiz_result'); foreach ($quizzes as $quiz) { if (learn_press_user_has_completed_quiz($user->ID, $quiz)) { $check = 1; learn_press_get_template('profile/quiz-content.php', array('user_id' => $user->ID, 'quiz_id' => $quiz)); } } do_action('learn_press_after_quiz_result'); } if (!$check) { do_action('learn_press_before_no_completed_quiz'); echo '<p>' . __('You have not finished any quizzes yet!', 'learn_press') . '</p>'; do_action('learn_press_after_no_completed_quiz'); } } else { do_action('learn_press_before_no_enrolled_course'); echo '<p>' . __('You have not taken any courses yet!', 'learn_press') . '</p>'; do_action('learn_press_after_no_enrolled_course'); } do_action('learn_press_after_enrolled_course'); wp_reset_postdata();
/** * Mark a quiz is completed for an user * * @param int $quiz_id * @param int $user_id */ function learn_press_mark_quiz_complete($quiz_id = null, $user_id = null) { $quiz_id = learn_press_get_quiz_id($quiz_id); if (!learn_press_user_has_completed_quiz($quiz_id)) { if (!$user_id) { $user_id = get_current_user_id(); } // update quiz start time if not set $quiz_start_time = get_user_meta($user_id, '_lpr_quiz_start_time', true); if (empty($quiz_start_time[$quiz_id])) { $quiz_start_time[$quiz_id] = time(); update_user_meta($user_id, '_lpr_quiz_start_time', $quiz_start_time); } // update questions if ($questions = learn_press_get_quiz_questions($quiz_id)) { // stores the questions $question_ids = array_keys($questions); $meta = get_user_meta($user_id, '_lpr_quiz_questions', true); if (!is_array($meta)) { $meta = array($quiz_id => $question_ids); } if (empty($meta[$quiz_id])) { $meta[$quiz_id] = $question_ids; } update_user_meta($user_id, '_lpr_quiz_questions', $meta); // stores current question $meta = get_user_meta($user_id, '_lpr_quiz_current_question', true); if (!is_array($meta)) { $meta = array($quiz_id => $question_ids[0]); } if (empty($meta[$quiz_id])) { $meta[$quiz_id] = end($question_ids); } update_user_meta($user_id, '_lpr_quiz_current_question', $meta); } // update answers $quizzes = get_user_meta($user_id, '_lpr_quiz_question_answer', true); if (!is_array($quizzes)) { $quizzes = array(); } if (empty($quizzes[$quiz_id])) { $quizzes[$quiz_id] = array(); update_user_meta($user_id, '_lpr_quiz_question_answer', $quizzes); } // update the quiz's ID to the completed list $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true); if (!$quiz_completed) { $quiz_completed = array(); } if (empty($quiz_completed[$quiz_id])) { $quiz_completed[$quiz_id] = time(); update_user_meta($user_id, '_lpr_quiz_completed', $quiz_completed); } // count //add_user_meta($user_id, '_lpr_quiz_taken', $quiz_id); } }
/** * Get quiz status for the user * * @param null $quiz_id * * @return mixed */ function get_quiz_status($quiz_id = null) { if (!$quiz_id) { $quiz_id = $this->get_quiz_field('id'); } $status = ''; if (learn_press_user_has_started_quiz($this->id, $quiz_id)) { $status = 'started'; } if (learn_press_user_has_completed_quiz($this->id, $quiz_id)) { $status = 'completed'; } return apply_filters('learn_press_user_quiz_status', $status, $this, $quiz_id); }
<h3><?php echo $title; ?> </h3> <?php } ?> <?php do_action('learn_press_quiz_questions_before_questions_loop'); ?> <ul> <?php $index = 0; $question_loop_template = learn_press_locate_template('quiz/loop.php'); $current_question = learn_press_get_current_question(); $quiz_completed = learn_press_user_has_completed_quiz(); if (!empty($question_list)) { foreach ($question_list as $question_id => $question_options) { $index++; $question_title = get_the_title($question_id); $question = get_post($question_id); if ($current_question && $current_question == $question_id && !$quiz_completed) { $current = true; } else { $current = false; } // include to ensure that sub-template can be load all variables from here require $question_loop_template; } } ?>
<?php /** * Template for displaying the remaining time of a quiz * */ learn_press_prevent_access_directly(); if (learn_press_user_has_completed_quiz()) { return; } if (learn_press_get_quiz_duration()) { do_action('learn_press_before_quiz_clock'); ?> <div class="quiz-clock"> <div class="quiz-timer"> <div id="quiz-countdown"></div> <p class="quiz-countdown-text"> <span class="quiz-time-remaining-text"> <?php echo apply_filters('learn_press_quiz_time_remaining_text', __('Time remaining', 'learn_press')); ?> </span> <span class="quiz-time-remaining-label"><?php echo apply_filters('learn_press_quiz_time_label', __('mins/secs', 'learn_press')); ?> </span> </p> </div> </div> <?php do_action('learn_press_after_quiz_clock');
/** * The class of lesson in course curriculum * * @param int $quiz_id * @param string|array $class */ function learn_press_course_quiz_class($quiz_id = null, $class = null) { if (is_string($class) && $class) { $class = preg_split('!\\s+!', $class); } else { $class = array(); } $classes = array('course-quiz course-item'); if (learn_press_user_has_completed_quiz(null, $quiz_id)) { $classes[] = "completed"; } $classes = array_unique(array_merge($classes, $class)); echo 'class="' . join(' ', $classes) . '"'; }
<?php learn_press_prevent_access_directly(); if (learn_press_user_has_completed_quiz(learn_press_get_current_user_id())) { return; } do_action('learn_press_before_quiz_question_nav_buttons'); ?> <div class="quiz-question-nav-buttons"> <?php $question_id = !empty($_REQUEST['question']) ? $_REQUEST['question'] : 0; ?> <?php //if( $prev = learn_press_get_user_prev_question_url( get_the_ID(), $question_id ) ){ ?> <button type="button" data-nav="prev" class="prev-question" data-url="<?php echo $prev; ?> "><?php echo apply_filters('learn_press_quiz_question_nav_button_back_title', __('Back', 'learn_press')); ?> </button> <?php //} ?> <?php //if( $next = learn_press_get_user_next_question_url( get_the_ID(), $question_id ) ){ ?> <button type="button" data-nav="next" class="next-question" data-url="<?php echo $next; ?>
function learn_press_course_lesson_quiz_before_title($lesson_or_quiz, $enrolled) { global $learn_press_lesson_quiz_tooltips; if (!$learn_press_lesson_quiz_tooltips) { $learn_press_lesson_quiz_tooltips = array(); } if (!empty($learn_press_lesson_quiz_tooltips[$lesson_or_quiz])) { return; } if (!$enrolled) { if ('lpr_quiz' == get_post_type($lesson_or_quiz)) { $learn_press_lesson_quiz_tooltips[$lesson_or_quiz] = array('message' => __('This is a quiz. Please enroll to do this quiz', 'learn_press')); } else { $learn_press_lesson_quiz_tooltips[$lesson_or_quiz] = array('message' => __('This is a lesson. Please enroll to study this lesson', 'learn_press')); } } else { if ('lpr_quiz' == get_post_type($lesson_or_quiz)) { if (learn_press_user_has_started_quiz(null, $lesson_or_quiz)) { $result = learn_press_get_quiz_result(null, $lesson_or_quiz); $tooltip = sprintf(__('%s and answered correctly %d out of %d total questions', 'learn_press'), learn_press_user_has_completed_quiz(null, $lesson_or_quiz) ? __('You have finished this quiz', 'learn_press') : __('You have started this quiz', 'learn_press'), $result['correct'], $result['questions_count']); } else { $tooltip = __('This is a quiz. Click on link to complete this quiz', 'learn_press'); } $learn_press_lesson_quiz_tooltips[$lesson_or_quiz] = array('message' => $tooltip); } else { if (learn_press_user_has_completed_lesson($lesson_or_quiz)) { $learn_press_lesson_quiz_tooltips[$lesson_or_quiz] = array('completed' => __('Congratulations! You have completed this lesson', 'learn_press')); } else { $learn_press_lesson_quiz_tooltips[$lesson_or_quiz] = array('current' => __('You are studying this lesson', 'learn_press'), 'message' => __('This is a lesson. Click on link to complete this lesson', 'learn_press')); } } } if ('lpr_quiz' == get_post_type($lesson_or_quiz)) { echo '<span class="lesson-quiz-icon quiz"></span>'; } else { echo '<span class="lesson-quiz-icon lesson"></span>'; } }