private static function update_time_remaining() { $time_remaining = learn_press_get_request('time_remaining'); $quiz_id = learn_press_get_request('quiz_id'); $user_id = learn_press_get_request('user_id'); if ($time_remaining) { $quiz_time_remaining = learn_press_get_quiz_time_remaining($user_id, $quiz_id); if ($time_remaining != $quiz_time_remaining) { $quiz_time = (array) get_user_meta($user_id, '_lpr_quiz_start_time', true); $quiz_duration = get_post_meta($quiz_id, '_lpr_duration', true); if (!empty($quiz_time[$quiz_id])) { echo $quiz_time[$quiz_id], ','; $quiz_time[$quiz_id] = current_time('timestamp') - $time_remaining; echo $quiz_time[$quiz_id], ','; update_user_meta($user_id, '_lpr_quiz_start_time', $quiz_time); } } } }
/** * Redirect to question if user access to a quiz that user has started * * @param string * * @return string */ function learn_press_redirect_to_question($template) { global $post_type; if (is_single() && $post_type == LP()->quiz_post_type) { $user = learn_press_get_current_user(); $quiz_id = get_the_ID(); $quiz_status = $user->get_quiz_status($quiz_id); if ($quiz_status == 'started' && learn_press_get_quiz_time_remaining($user->id, $quiz_id) == 0 && get_post_meta($quiz_id, '_lpr_duration', true)) { $user->finish_quiz($quiz_id); $quiz_status = 'completed'; } if (learn_press_get_request('question') && $quiz_status == '') { wp_redirect(get_the_permalink($quiz_id)); } elseif ($quiz_status == 'started') { if (learn_press_get_request('question')) { } else { wp_redirect(learn_press_get_user_question_url($quiz_id)); die; } } elseif ($quiz_status == 'completed' && learn_press_get_request('question')) { wp_redirect(get_the_permalink($quiz_id)); die; } } return $template; }
/** * 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 }