function learn_press_submit_answer()
{
    _deprecated_function('learn_press_submit_answer', '0.9.15', false);
    $quiz_id = !empty($_REQUEST['quiz_id']) ? intval($_REQUEST['quiz_id']) : 0;
    $question_id = !empty($_REQUEST['question_id']) ? intval($_REQUEST['question_id']) : 0;
    $next_id = !empty($_REQUEST['next_id']) ? intval($_REQUEST['next_id']) : learn_press_get_next_question($quiz_id, $question_id);
    $question_answer = isset($_REQUEST['question_answer']) ? $_REQUEST['question_answer'] : null;
    $finish = isset($_REQUEST['finish']) ? $_REQUEST['finish'] : null;
    $user_id = get_current_user_id();
    $json = array();
    $ques = lpr_get_question($question_id);
    if ($ques) {
        $ques->submit_answer($quiz_id, $question_answer);
    }
    ob_start();
    if ($next_id) {
        do_action('learn_press_submit_answer', $question_answer, $question_id, $quiz_id, $user_id, false);
        learn_press_get_template('quiz/form-question.php', array('question_id' => $next_id, 'course_id' => learn_press_get_course_by_quiz($quiz_id)));
    } else {
        $question_ids = learn_press_get_user_quiz_questions($quiz_id, $user_id);
        $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true);
        $quiz_completed[$quiz_id] = current_time('timestamp');
        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);
            }
        }
        learn_press_get_template('quiz/result.php');
        $json['quiz_completed'] = true;
        do_action('learn_press_submit_answer', $question_answer, $question_id, $quiz_id, $user_id, true);
    }
    $output = ob_get_clean();
    if (defined('DOING_AJAX') && DOING_AJAX) {
        $json['html'] = $output;
        $json['redirect'] = apply_filters('learn_press_submit_answer_redirect_url', get_the_permalink($quiz_id), $question_answer, $question_id, $quiz_id, $user_id);
        learn_press_send_json($json);
    }
}
示例#2
0
 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);
 }
/**
 * Return if a student passes course or not
 *
 * @param  $course_id int
 * @param  $user_id   int
 *
 * @return boolean
 */
function learn_press_user_has_passed_course($course_id = null, $user_id = null)
{
    $course_id = learn_press_get_course_id($course_id);
    if (!$user_id) {
        $user_id = get_current_user_id();
    }
    if (!$course_id || !$user_id) {
        return 0;
    }
    $has_finished = learn_press_user_has_finished_course($course_id, $user_id);
    if (get_post_meta($course_id, '_lpr_course_final', true) == 'yes' && ($quiz = lpr_get_final_quiz($course_id))) {
        $passed = learn_press_quiz_evaluation($quiz, $user_id);
        $passing_condition = learn_press_get_course_passing_condition($course_id);
    } else {
        $passed = lpr_course_evaluation($course_id);
        $passing_condition = 0;
    }
    return $passing_condition ? $passed >= $passing_condition ? $passed : 0 : $passed == 100;
}
示例#4
0
 /**
  * Retake course action
  */
 public static function retake_course()
 {
     $course_id = !empty($_REQUEST['course_id']) ? $_REQUEST['course_id'] : 0;
     $user_id = !empty($_REQUEST['user_id']) ? $_REQUEST['user_id'] : get_current_user_id();
     if (!$user_id || !$course_id) {
         wp_die(__('Error', 'learn_press'));
     }
     ////
     // Of course, user only retake course if he has finished
     if (!learn_press_user_has_finished_course($course_id, $user_id)) {
         wp_die(__('Error', 'learn_press'));
     }
     // reset course start time
     $course_time = get_user_meta($user_id, '_lpr_course_time', true);
     if ($course_time && !empty($course_time[$course_id])) {
         $course_time[$course_id] = array('start' => time(), 'end' => null);
         update_user_meta($user_id, '_lpr_course_time', $course_time);
     }
     // reset course user finished
     $course_finished = get_user_meta($user_id, '_lpr_course_finished', true);
     if ($course_finished && in_array($course_id, $course_finished)) {
         if (false !== ($position = array_search($course_id, $course_finished))) {
             unset($course_finished[$position]);
             update_user_meta($user_id, '_lpr_course_finished', $course_finished);
         }
     }
     $user_finished = get_post_meta($course_id, '_lpr_user_finished', true);
     if ($user_finished) {
         if (false !== ($position = array_search($user_id, $user_finished))) {
             unset($user_finished[$position]);
             update_post_meta($course_id, '_lpr_user_finished', $user_finished);
         }
     }
     // reset the lessons user has completed
     $lessons = get_user_meta($user_id, '_lpr_lesson_completed', true);
     if ($lessons && isset($lessons[$course_id])) {
         unset($lessons[$course_id]);
         update_user_meta($user_id, '_lpr_lesson_completed', $lessons);
     }
     $quizzes = learn_press_get_quizzes($course_id);
     // remove all quizzes in the course which user has taken
     if ($quizzes) {
         $quiz_start_time = get_user_meta($user_id, '_lpr_quiz_start_time', true);
         $quiz_question = get_user_meta($user_id, '_lpr_quiz_questions', true);
         $quiz_current_question = get_user_meta($user_id, '_lpr_quiz_current_question', true);
         $quiz_question_answer = get_user_meta($user_id, '_lpr_quiz_question_answer', true);
         $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true);
         foreach ($quizzes as $quiz_id) {
             delete_user_meta($user_id, '_lpr_quiz_taken', $quiz_id);
             if (isset($quiz_start_time[$quiz_id])) {
                 unset($quiz_start_time[$quiz_id]);
             }
             if (isset($quiz_question[$quiz_id])) {
                 unset($quiz_question[$quiz_id]);
             }
             if (isset($quiz_current_question[$quiz_id])) {
                 unset($quiz_current_question[$quiz_id]);
             }
             if (isset($quiz_question_answer[$quiz_id])) {
                 unset($quiz_question_answer[$quiz_id]);
             }
             if (isset($quiz_completed[$quiz_id])) {
                 unset($quiz_completed[$quiz_id]);
             }
         }
         update_user_meta($user_id, '_lpr_quiz_start_time', $quiz_start_time);
         update_user_meta($user_id, '_lpr_quiz_questions', $quiz_question);
         update_user_meta($user_id, '_lpr_quiz_current_question', $quiz_current_question);
         update_user_meta($user_id, '_lpr_quiz_question_answer', $quiz_question_answer);
         update_user_meta($user_id, '_lpr_quiz_completed', $quiz_completed);
     }
     update_user_meta($user_id, '_lpr_course_taken', $course_id);
     wp_send_json(array('redirect' => get_permalink($course_id)));
     die;
 }
 /**
  * Display the "Complete button" if user hasn't completed lesson
  * Otherwise, display the message says that they has finished
  */
 function learn_press_course_content_lesson_action()
 {
     // we are in lesson not course
     if (learn_press_user_has_completed_lesson()) {
         _e('Congratulations! You have completed this lesson.', 'learn_press');
     } else {
         $course_id = learn_press_get_course_by_lesson(get_the_ID());
         if (!learn_press_user_has_finished_course($course_id) && learn_press_user_has_enrolled_course($course_id)) {
             printf('<button class="complete-lesson-button" data-id="%d">%s</button>', get_the_ID(), __('Complete Lesson', 'learn_press'));
         }
     }
 }
function learn_press_submit_answer()
{
    $quiz_id = !empty($_REQUEST['quiz_id']) ? intval($_REQUEST['quiz_id']) : 0;
    $question_id = !empty($_REQUEST['question_id']) ? intval($_REQUEST['question_id']) : 0;
    $next_id = !empty($_REQUEST['next_id']) ? intval($_REQUEST['next_id']) : 0;
    $question_answer = isset($_REQUEST['question_answer']) ? $_REQUEST['question_answer'] : null;
    $finish = isset($_REQUEST['finish']) ? $_REQUEST['finish'] : null;
    $user_id = get_current_user_id();
    $json = array();
    ob_start();
    $ques = lpr_get_question($question_id);
    if ($ques) {
        $ques->submit_answer($quiz_id, $question_answer);
    }
    if ($next_id) {
        /*$ques = lpr_get_question( $next_id );
        
                if( $ques ){
                    $quiz_answers = learn_press_get_question_answers(null, $quiz_id );
                    $ques->render( array(
                        'answer' => isset( $quiz_answers[$next_id] ) ? $quiz_answers[$next_id] : null
                    ));
                }*/
        learn_press_get_template('quiz/form-question.php', array('question_id' => $next_id, 'course_id' => learn_press_get_course_by_quiz($quiz_id)));
    } else {
        $question_ids = learn_press_get_user_quiz_questions($quiz_id, $user_id);
        $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true);
        $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);
            }
        }
        learn_press_get_template('quiz/result.php');
        $json['quiz_completed'] = true;
    }
    $json['html'] = ob_get_clean();
    wp_send_json($json);
    die;
}