Beispiel #1
0
 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 
    }