/** * Get mark of a quiz for an user * * @param $quiz_id * * @return int */ function get_quiz_mark($quiz_id) { $quiz_questions = get_post_meta($quiz_id, '_lpr_quiz_questions', true); $mark = 0; if (!$quiz_questions) { foreach ($quiz_questions as $question) { $correct_answer = get_post_meta($question, '_lpr_question_correct_answer', true); $question_mark = get_post_meta($question, '_lpr_question_mark', true); $student_answer = lpr_get_question_answer($quiz_id, $question); if (array_key_exists($question, $student_answer)) { if ($correct_answer == $student_answer) { $mark += $question_mark; } } } } return $mark; }
/** * Finish quiz */ public static function finish_quiz() { $user_id = get_current_user_id(); $quiz_id = $_POST['quiz_id']; $question_id = $_POST['question_id']; $question_answer = $_POST['question_answer']; // save current answer as if user may change lpr_save_question_answer($quiz_id, $question_id, $question_answer); // Show result to frontend $quiz_id = $_POST['quiz_id']; $quiz_questions = get_post_meta($quiz_id, '_lpr_quiz_questions', true); $mark = 0; if ($quiz_questions) { foreach ($quiz_questions as $question) { $correct_answer = get_post_meta($question, '_lpr_question_correct_answer', true); $question_mark = get_post_meta($question, '_lpr_question_mark', true); $student_answer = lpr_get_question_answer($quiz_id, $question_id); if (array_key_exists($question, $student_answer)) { if ($correct_answer == $student_answer) { $mark += $question_mark; } } } } // add this quiz to list of completed quizzes $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true); if ($quiz_completed) { if (!isset($quiz_completed[$quiz_id]) || !is_array($quiz_completed[$quiz_id])) { $quiz_completed[$quiz_id] = array(); } array_push($quiz_completed[$quiz_id], $mark); update_user_meta($user_id, '_lpr_quiz_completed', $quiz_completed); } else { $quiz_completed = array(); if (!isset($quiz_completed[$quiz_id]) || !is_array($quiz_completed[$quiz_id])) { $quiz_completed[$quiz_id] = array(); } array_push($quiz_completed[$quiz_id], $mark); update_user_meta($user_id, '_lpr_quiz_completed', $quiz_completed); } $retake = get_user_meta($user_id, '_lpr_quiz_retake', true); if (isset($retake) && is_array($retake)) { $key = array_search($quiz_id, $retake); if ($key !== false) { unset($retake[$key]); update_user_meta($user_id, '_lpr_quiz_retake', $retake); } } die; }