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