function start_quiz() { $quiz_id = !empty($_REQUEST['quiz_id']) ? absint($_REQUEST['quiz_id']) : 0; if (!$quiz_id) { learn_press_send_json(array('result' => 'error', 'message' => __('The quiz ID is empty', 'learn_press'))); } $quiz = LP_Quiz::get_quiz($quiz_id); if (!$quiz->id || $quiz->id != $quiz_id) { learn_press_send_json(array('result' => 'error', 'message' => __('Something is wrong! Please try again', 'learn_press'))); } $user = learn_press_get_current_user(); if ($quiz->is_require_enrollment() && $user->is('guest')) { learn_press_send_json(array('result' => 'error', 'message' => __('Please login to do this quiz', 'learn_press'))); } $user->set_quiz($quiz); switch (strtolower($user->get_quiz_status())) { case 'completed': learn_press_send_json(array('result' => 'error', 'message' => __('You have completed this quiz', 'learn_press'), 'data' => $user->get_quiz_result())); break; case 'started': learn_press_send_json(array('result' => 'error', 'message' => __('You have started this quiz', 'learn_press'), 'data' => array('status' => $user->get_quiz_status()))); break; default: $result = $user->start_quiz(); learn_press_send_json(array('result' => 'success', 'data' => $result, 'question_url' => learn_press_get_user_question_url($quiz_id), 'question_content' => $user->get_current_question($quiz_id, 'html'))); } die; }
/** * 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; }
function learn_press_user_start_quiz($quiz_id, $user_id) { learn_press_send_json(array('redirect' => learn_press_get_user_question_url($quiz_id))); }