/**
 * 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;
}
Exemple #2
0
<?php

$course_id = learn_press_get_course_by_quiz(get_the_ID());
$passed = learn_press_user_has_passed_course($course_id);
$result = learn_press_get_quiz_result();
?>
<div class="clearfix"></div>
<?php 
if ($passed) {
    ?>
    <?php 
    learn_press_message(sprintf(__('You have passed this course with %.2f%% of total', 'learn_press'), $result['mark_percent'] * 100));
} else {
    ?>
    <?php 
    $passing_condition = learn_press_get_course_passing_condition($course_id);
    ?>
    <?php 
    learn_press_message(sprintf(__('Sorry, you have not passed this course. This course required you pass %.2f%% but your result is only %.2f%%', 'learn_press'), $passing_condition, $result['mark_percent'] * 100), 'error');
}
 /**
  * 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;
 }
function learn_press_load_question()
{
    $question_id = !empty($_REQUEST['question_id']) ? intval($_REQUEST['question_id']) : 0;
    $quiz_id = !empty($_REQUEST['quiz_id']) ? intval($_REQUEST['quiz_id']) : 0;
    /*$ques = lpr_get_question( $question_id );
    	if( $ques ){
    		$quiz_answers = learn_press_get_question_answers(null, $quiz_id );
    		$ques->render( array(
    			'answer' => isset( $quiz_answers[$question_id] ) ? $quiz_answers[$question_id] : null
    		));
    	}*/
    learn_press_get_template('quiz/form-question.php', array('question_id' => $question_id, 'course_id' => learn_press_get_course_by_quiz($quiz_id)));
    die;
}
 function finish_quiz($quiz_id)
 {
     $quiz = LP_Quiz::get_quiz($quiz_id);
     if (!$quiz) {
         return;
     }
     $user_id = $this->id;
     $time = current_time('timestamp');
     $quiz_start = get_user_meta($user_id, '_lpr_quiz_start_time', true);
     $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true);
     $quiz_duration = absint(get_post_meta($quiz_id, '_lpr_duration', true)) * 60;
     if ($time - $quiz_start[$quiz_id] > $quiz_duration) {
         $time = $quiz_start[$quiz_id] - $quiz_duration;
     }
     $quiz_completed[$quiz_id] = $time;
     update_user_meta($user_id, '_lpr_quiz_completed', $quiz_completed);
     $course_id = learn_press_get_course_by_quiz($quiz_id);
     if (!learn_press_user_has_finished_course($course_id)) {
         if (learn_press_user_has_completed_all_parts($course_id, $user_id)) {
             learn_press_finish_course($course_id, $user_id);
         }
     }
     do_action('learn_press_finish_quiz', $quiz_id, $user_id);
 }
function learn_press_is_final_quiz($quiz_id)
{
    $course_id = learn_press_get_course_by_quiz($quiz_id);
    if (lpr_get_final_quiz($course_id) == $quiz_id) {
        return $course_id;
    }
    return false;
}
 /**
  * Output the content of current question
  */
 function learn_press_quiz_question_nav()
 {
     $current_question = learn_press_get_question_position();
     $question_id = $current_question['id'];
     learn_press_get_template('quiz/form-question.php', array('question_id' => $question_id, 'course_id' => learn_press_get_course_by_quiz(get_the_ID())));
 }
/**
 * call this function when user hit "Start Quiz" and stores some
 * meta_key to mark that user has started this quiz
 */
function learn_press_frontend_action_start_quiz()
{
    global $quiz;
    // should check user permission here to ensure user can start quiz
    $user_id = get_current_user_id();
    $quiz_id = $quiz->id;
    // @since 0.9.5
    if (!apply_filters('learn_press_before_user_start_quiz', true, $quiz_id, $user_id)) {
        return;
    }
    $current_time = current_time('timestamp');
    // 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 => $current_time);
    } else {
        $meta[$quiz_id] = $current_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' => $current_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);
}