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;
 }
Exemple #3
0
<?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 
    }