コード例 #1
0
 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;
 }
コード例 #2
0
/**
 * 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;
}
コード例 #3
0
function learn_press_user_start_quiz($quiz_id, $user_id)
{
    learn_press_send_json(array('redirect' => learn_press_get_user_question_url($quiz_id)));
}