Esempio n. 1
0
 /**
  * Remove user from lesson, deleting all data from the corresponding quiz
  *
  * @param int $lesson_id
  * @param int $user_id
  * @return boolean
  */
 public static function sensei_remove_user_from_lesson($lesson_id = 0, $user_id = 0, $from_course = false)
 {
     if (!$lesson_id) {
         return false;
     }
     if (intval($user_id) == 0) {
         $user_id = get_current_user_id();
     }
     // Process quiz
     $lesson_quiz_id = Sensei()->lesson->lesson_quizzes($lesson_id);
     // Delete quiz answers, this auto deletes the corresponding meta data, such as the question/answer grade
     Sensei_Utils::sensei_delete_quiz_answers($lesson_quiz_id, $user_id);
     // Delete lesson status
     $args = array('post_id' => $lesson_id, 'type' => 'sensei_lesson_status', 'user_id' => $user_id);
     // This auto deletes the corresponding meta data, such as the quiz grade, and questions asked
     Sensei_Utils::sensei_delete_activities($args);
     if (!$from_course) {
         do_action('sensei_user_lesson_reset', $user_id, $lesson_id);
     }
     return true;
 }
Esempio n. 2
0
 /**
  * Reset user submitted questions
  *
  * This function resets the quiz data for a user that has been submitted fro grading already. It is different to
  * the save_user_answers as currently the saved and submitted answers are stored differently.
  *
  * @since 1.7.4
  * @access public
  *
  * @return bool $reset_success
  * @param int $user_id
  * @param int $lesson_id
  */
 public function reset_user_lesson_data($lesson_id, $user_id = 0)
 {
     //make sure the parameters are valid
     if (empty($lesson_id) || empty($user_id) || 'lesson' != get_post_type($lesson_id) || !get_userdata($user_id)) {
         return false;
     }
     //get the users lesson status to make
     $user_lesson_status = Sensei_Utils::user_lesson_status($lesson_id, $user_id);
     if (!isset($user_lesson_status->comment_ID)) {
         // this user is not taking this lesson so this process is not needed
         return false;
     }
     //get the lesson quiz and course
     $quiz_id = Sensei()->lesson->lesson_quizzes($lesson_id);
     $course_id = Sensei()->lesson->get_course_id($lesson_id);
     // reset the transients
     $answers_transient_key = 'sensei_answers_' . $user_id . '_' . $lesson_id;
     $grades_transient_key = 'quiz_grades_' . $user_id . '_' . $lesson_id;
     $answers_feedback_transient_key = 'sensei_answers_feedback_' . $user_id . '_' . $lesson_id;
     delete_transient($answers_transient_key);
     delete_transient($grades_transient_key);
     delete_transient($answers_feedback_transient_key);
     // reset the quiz answers and feedback notes
     $deleted_answers = Sensei_Utils::delete_user_data('quiz_answers', $lesson_id, $user_id);
     $deleted_grades = Sensei_Utils::delete_user_data('quiz_grades', $lesson_id, $user_id);
     $deleted_user_feedback = Sensei_Utils::delete_user_data('quiz_answers_feedback', $lesson_id, $user_id);
     // Delete quiz answers, this auto deletes the corresponding meta data, such as the question/answer grade
     Sensei_Utils::sensei_delete_quiz_answers($quiz_id, $user_id);
     Sensei_Utils::update_lesson_status($user_id, $lesson_id, 'in-progress', array('questions_asked' => '', 'grade' => ''));
     // Update course completion
     Sensei_Utils::update_course_status($user_id, $course_id);
     // Run any action on quiz/lesson reset (previously this didn't occur on resetting a quiz, see resetting a lesson in sensei_complete_lesson()
     do_action('sensei_user_lesson_reset', $user_id, $lesson_id);
     Sensei()->frontend->messages = '<div class="sensei-message note">' . __('Quiz Reset Successfully.', 'woothemes-sensei') . '</div>';
     return $deleted_answers && $deleted_grades;
 }