/** * Quiz for anonymous users * * @param boolean * @param int * @param int * @return boolean */ function learn_press_do_quiz_for_anonymous_user($continue, $quiz_id, $user_id) { $course_id = learn_press_get_course_by_quiz($quiz_id); if (learn_press_is_public_quiz($course_id)) { $session = LPR_Session::instance(); $session->set('anonymous_quiz', array('questions' => array_values(learn_press_get_quiz_questions($quiz_id)))); $continue = false; } return $continue; }
<?php $course_id = learn_press_get_course_by_quiz(get_the_ID()); $passed = learn_press_user_has_passed_course($course_id); $result = learn_press_get_quiz_result(); ?> <div class="clearfix"></div> <?php if ($passed) { ?> <?php learn_press_message(sprintf(__('You have passed this course with %.2f%% of total', 'learn_press'), $result['mark_percent'] * 100)); } else { ?> <?php $passing_condition = learn_press_get_course_passing_condition($course_id); ?> <?php learn_press_message(sprintf(__('Sorry, you have not passed this course. This course required you pass %.2f%% but your result is only %.2f%%', 'learn_press'), $passing_condition, $result['mark_percent'] * 100), 'error'); }
/** * Quiz for anonymous users * * @param boolean * @param int * @param int * @return boolean */ function do_quiz_for_anonymous_user($continue, $quiz_id, $user_id) { $course_id = learn_press_get_course_by_quiz($quiz_id); if ($this->is_public_quiz($course_id)) { $session = LPR_Session::instance(); $session->set('anonymous_quiz', array('questions' => array_values(learn_press_get_quiz_questions($quiz_id)), 'finished' => 0, 'answers' => array(), 'start' => time(), 'end' => null)); $continue = false; do_action('learn_press_user_start_quiz', $quiz_id, $user_id); } return $continue; }
function learn_press_load_question() { $question_id = !empty($_REQUEST['question_id']) ? intval($_REQUEST['question_id']) : 0; $quiz_id = !empty($_REQUEST['quiz_id']) ? intval($_REQUEST['quiz_id']) : 0; /*$ques = lpr_get_question( $question_id ); if( $ques ){ $quiz_answers = learn_press_get_question_answers(null, $quiz_id ); $ques->render( array( 'answer' => isset( $quiz_answers[$question_id] ) ? $quiz_answers[$question_id] : null )); }*/ learn_press_get_template('quiz/form-question.php', array('question_id' => $question_id, 'course_id' => learn_press_get_course_by_quiz($quiz_id))); die; }
function finish_quiz($quiz_id) { $quiz = LP_Quiz::get_quiz($quiz_id); if (!$quiz) { return; } $user_id = $this->id; $time = current_time('timestamp'); $quiz_start = get_user_meta($user_id, '_lpr_quiz_start_time', true); $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true); $quiz_duration = absint(get_post_meta($quiz_id, '_lpr_duration', true)) * 60; if ($time - $quiz_start[$quiz_id] > $quiz_duration) { $time = $quiz_start[$quiz_id] - $quiz_duration; } $quiz_completed[$quiz_id] = $time; update_user_meta($user_id, '_lpr_quiz_completed', $quiz_completed); $course_id = learn_press_get_course_by_quiz($quiz_id); if (!learn_press_user_has_finished_course($course_id)) { if (learn_press_user_has_completed_all_parts($course_id, $user_id)) { learn_press_finish_course($course_id, $user_id); } } do_action('learn_press_finish_quiz', $quiz_id, $user_id); }
function learn_press_is_final_quiz($quiz_id) { $course_id = learn_press_get_course_by_quiz($quiz_id); if (lpr_get_final_quiz($course_id) == $quiz_id) { return $course_id; } return false; }
/** * Output the content of current question */ function learn_press_quiz_question_nav() { $current_question = learn_press_get_question_position(); $question_id = $current_question['id']; learn_press_get_template('quiz/form-question.php', array('question_id' => $question_id, 'course_id' => learn_press_get_course_by_quiz(get_the_ID()))); }
/** * call this function when user hit "Start Quiz" and stores some * meta_key to mark that user has started this quiz */ function learn_press_frontend_action_start_quiz() { global $quiz; // should check user permission here to ensure user can start quiz $user_id = get_current_user_id(); $quiz_id = $quiz->id; // @since 0.9.5 if (!apply_filters('learn_press_before_user_start_quiz', true, $quiz_id, $user_id)) { return; } $current_time = current_time('timestamp'); // update start time, this is the time user begin the quiz $meta = get_user_meta($user_id, '_lpr_quiz_start_time', true); if (!is_array($meta)) { $meta = array($quiz_id => $current_time); } else { $meta[$quiz_id] = $current_time; } update_user_meta($user_id, '_lpr_quiz_start_time', $meta); // 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); } else { $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]); } else { $meta[$quiz_id] = $question_ids[0]; } update_user_meta($user_id, '_lpr_quiz_current_question', $meta); } $course_id = learn_press_get_course_by_quiz($quiz_id); $course_time = get_user_meta($user_id, '_lpr_course_time', true); if (empty($course_time[$course_id])) { $course_time[$course_id] = array('start' => $current_time, 'end' => null); update_user_meta($user_id, '_lpr_course_time', $course_time); } // update answers $quizzes = get_user_meta($user_id, '_lpr_quiz_question_answer', true); if (!is_array($quizzes)) { $quizzes = array(); } $quizzes[$quiz_id] = array(); update_user_meta($user_id, '_lpr_quiz_question_answer', $quizzes); // @since 0.9.5 do_action('learn_press_user_start_quiz', $quiz_id, $user_id); }