protected function _settings() { $current_question_id = learn_press_get_current_question(); // !empty( $_REQUEST['question_id'] ) ? intval( $_REQUEST['question_id'] ) : 0; $questions = learn_press_get_quiz_questions(); if ($questions) { $question_ids = array_keys($questions); } else { $question_ids = array(); } if (!$current_question_id || !in_array($current_question_id, $question_ids)) { $current_question_id = reset($question_ids); } $question = LP_Question_Factory::get_question($current_question_id); $user_id = get_current_user_id(); $user = learn_press_get_current_user(); $js = array('time_format' => $this->duration > 300 ? 'h%:m%:s%' : 'm%:s%', 'total_time' => $this->duration, 'id' => $this->id, 'questions' => $question_ids, 'question_id' => absint($current_question_id), 'status' => $user->get_quiz_status($this->id), 'time_remaining' => ($time_remaining = $user->get_quiz_time_remaining($this->id)) !== false && !in_array($user->get_quiz_status($this->id), array('', 'completed')) ? $time_remaining : $this->duration, 'permalink' => get_the_permalink(), 'ajaxurl' => admin_url('admin-ajax.php'), 'user_id' => $user->id); return apply_filters('learn_press_single_quiz_params', $js, $this); }
/** * 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; }
<?php if (!learn_press_get_quiz_questions()) { ?> <p class="no-question"><?php _e('No question in this quiz', 'learn_press'); ?> </p> <?php }
/** * Start quiz for the user * * @param null $quiz_id * * @return array|void */ function start_quiz($quiz_id = null) { if (!$quiz_id) { $quiz_id = $this->get_quiz_field('id'); } $user_id = $this->id; $location_time = current_time('timestamp'); // @since 0.9.5 if (!apply_filters('learn_press_before_user_start_quiz', true, $quiz_id, $user_id)) { return; } // 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 => $location_time); } else { $meta[$quiz_id] = $location_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' => $location_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); return array('start' => $location_time, 'end' => null); }
/** * 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); } }
<?php /** * */ //print_r(learn_press_get_quiz_questions()); $question_list = learn_press_get_quiz_questions(); do_action('learn_press_quiz_questions_before_questions'); if ($question_list) { ?> <div class="quiz-questions hidden"> <?php $title = apply_filters('learn_press_list_of_questions_text', esc_attr__('List of questions', 'learn_press')); ?> <?php if ($title) { ?> <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');
/** * 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; }
/** * Output js script configuration for single quiz page */ function learn_press_print_quiz_question_content_script() { $current_question_id = learn_press_get_current_question(); // !empty( $_REQUEST['question_id'] ) ? intval( $_REQUEST['question_id'] ) : 0; $questions = learn_press_get_quiz_questions(); if ($questions) { $question_ids = array_keys($questions); } else { $question_ids = array(); } if (!$current_question_id || !in_array($current_question_id, $question_ids)) { $current_question_id = reset($question_ids); } $question = LPR_Question_Type::instance($current_question_id); $user_id = get_current_user_id(); global $quiz; if ($quiz && !empty($quiz->id)) { $user = learn_press_get_current_user(); $js = array('id' => $quiz->id, 'questions' => $question_ids, 'status' => $user->get_quiz_status($quiz->id), 'time_remaining' => learn_press_get_quiz_time_remaining($user->id, $quiz->id), 'question_id' => $current_question_id, 'permalink' => get_the_permalink(), 'ajaxurl' => admin_url('admin-ajax.php'), 'user_id' => $user->id); ?> <script type="text/javascript"> jQuery(document).ready(function () { LearnPress.initQuiz(<?php echo json_encode($js); ?> ); }) </script> <?php } }
/** * Output js script configuration for single quiz page */ function learn_press_print_quiz_question_content_script() { $current_question_id = !empty($_REQUEST['question_id']) ? intval($_REQUEST['question_id']) : 0; $questions = learn_press_get_quiz_questions(); if ($questions) { $question_ids = array_keys($questions); } else { $question_ids = array(); } if (!$current_question_id || !in_array($current_question_id, $question_ids)) { $current_question_id = reset($question_ids); } $question = LPR_Question_Type::instance($current_question_id); $user_id = get_current_user_id(); global $quiz; $js = array('quiz_id' => get_the_ID(), 'question_id' => $current_question_id, 'questions' => $question_ids, 'time_remaining' => learn_press_get_quiz_time_remaining($user_id, $quiz->ID), 'quiz_started' => learn_press_user_has_started_quiz(), 'quiz_completed' => learn_press_user_has_completed_quiz()); ?> <script type="text/javascript"> var dataFromParent; function init() { console.log(dataFromParent); jQuery('.quiz-main').attr('course-id', dataFromParent); } jQuery(function() { LearnPress.singleQuizInit( <?php echo json_encode($js); ?> ); }); </script> <?php }