Esempio n. 1
0
 /**
  * Get the user's answers feedback.
  *
  * This function returns the feedback submitted by the teacher/admin
  * during grading. Grading occurs manually or automatically.
  *
  * @since 1.7.5
  * @access public
  *
  * @param int $lesson_id
  * @param int $user_id
  *
  * @return false | array $answers_feedback{
  *  $type int $question_id
  *  $type string $question_feedback
  * }
  */
 public function get_user_answers_feedback($lesson_id, $user_id = 0)
 {
     $answers_feedback = array();
     // get the user_id if none was passed in use the current logged in user
     if (!intval($user_id) > 0) {
         $user_id = get_current_user_id();
     }
     if (!intval($lesson_id) > 0 || 'lesson' != get_post_type($lesson_id) || !intval($user_id) > 0 || !get_userdata($user_id)) {
         return false;
     }
     // first check the transient to save a few split seconds
     $transient_key = 'sensei_answers_feedback_' . $user_id . '_' . $lesson_id;
     $encoded_feedback = get_transient($transient_key);
     // get the data if nothing was stored in the transient
     if (empty($encoded_feedback) || !$encoded_feedback) {
         $encoded_feedback = Sensei_Utils::get_user_data('quiz_answers_feedback', $lesson_id, $user_id);
         //set the transient with the new valid data for faster retrieval in future
         set_transient($transient_key, $encoded_feedback, 10 * DAY_IN_SECONDS);
     }
     // end if transient check
     // if there is no data for this user
     if (!is_array($encoded_feedback)) {
         return false;
     }
     foreach ($encoded_feedback as $question_id => $feedback) {
         $answers_feedback[$question_id] = base64_decode($feedback);
     }
     return $answers_feedback;
 }