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); } }
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; }
/** * 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; }