コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  *   Load next question
  */
 public static function load_next_question()
 {
     $next_question_id = $_POST['next_question_id'];
     $quiz_id = $_POST['quiz_id'];
     $question_id = $_POST['question_id'];
     $question_answer = $_POST['question_answer'];
     lpr_save_question_answer($quiz_id, $question_id, $question_answer);
     do_action('lpr_load_question', $next_question_id);
     die;
 }