function learn_press_reset_user_quiz($user_id = null, $quiz_id = null) { if (empty($user_id)) { $user_id = get_current_user_id(); } $quiz_id = learn_press_get_quiz_id($quiz_id); if (!apply_filters('learn_press_reset_user_quiz', true, $quiz_id, $user_id)) { return; } $keys = array('_lpr_quiz_start_time', '_lpr_quiz_completed', '_lpr_question_answer', '_lpr_quiz_questions', '_lpr_quiz_question_answer', '_lpr_quiz_current_question'); foreach ($keys as $meta_key) { $meta = get_user_meta($user_id, $meta_key, true); if (!empty($meta[$quiz_id])) { unset($meta[$quiz_id]); if (count($meta)) { update_user_meta($user_id, $meta_key, $meta); } else { delete_user_meta($user_id, $meta_key); } } } if ($course_id = learn_press_is_final_quiz($quiz_id)) { $finished_courses = get_user_meta($user_id, '_lpr_course_finished', true); if (is_array($finished_courses) && ($pos = array_search($course_id, $finished_courses)) !== false) { unset($finished_courses[$pos]); update_user_meta($user_id, '_lpr_course_finished', $finished_courses); } $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); } } } do_action('learn_press_after_reset_user_quiz', $quiz_id, $user_id); }
/** * Check if user has completed a quiz or not * * @author TuNN * * @param int $user_id The ID of user need to check * @param int $quiz_id The ID of quiz need to check * * @return boolean */ function learn_press_user_has_completed_quiz($user_id = null, $quiz_id = null) { _deprecated_function(__FUNCTION__, '1.0', 'Need to edit this function'); $completed = false; // if $user_id is not passed, try to get it from current user if (!$user_id) { $user_id = learn_press_get_current_user_id(); if (!$user_id) { $completed = false; } } // if $quiz_id is not passed, try to get it from current quiz $quiz_id = learn_press_get_quiz_id($quiz_id); $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true); $retake = get_user_meta($user_id, '_lpr_quiz_retake', true); // if user can not retake a quiz or has already completed a quiz if ((!$retake || !in_array($quiz_id, $retake)) && $quiz_completed && array_key_exists($quiz_id, $quiz_completed)) { $completed = true; } return apply_filters('learn_press_user_has_completed_quiz', $completed, $user_id, $quiz_id); }
/** * Get questions from quiz for user * * @param int $quiz_id * @param int $user_id * @return array */ function learn_press_get_user_quiz_questions($quiz_id = null, $user_id = null) { $quiz_id = learn_press_get_quiz_id($quiz_id); if (!$user_id) { $user_id = get_current_user_id(); } $questions = get_user_meta($user_id, '_lpr_quiz_questions', true); if ($questions && !empty($questions[$quiz_id])) { $user_quiz_questions = $questions[$quiz_id]; $quiz_questions = get_post_meta($quiz_id, '_lpr_quiz_questions', true); if ($quiz_questions) { $quiz_questions = array_keys($quiz_questions); } else { $quiz_questions = array(); } return array_unique(array_merge($user_quiz_questions, $quiz_questions)); } return null; }
function learn_press_output_question($question_id, $with_answered = true, $quiz_id = 0) { if (!$question_id && $quiz_id) { /*if( $questions = learn_press_get_quiz_questions( $quiz_id ) ){ $question_id = reset( $questions ); }*/ } if ($question_id) { $question = LPR_Question_Type::instance($question_id); $answered = null; if ($with_answered) { $answers = learn_press_get_question_answers(null, learn_press_get_quiz_id(0)); if (isset($answers[$question_id])) { $answered = array('answer' => $answers[$question_id]); } } $question && $question->render($answered); } }