You are here

class QuizfileuploadResponse in Quiz File Upload 7.5

Same name and namespace in other branches
  1. 6 quizfileupload.classes.inc \QuizfileuploadResponse
  2. 7 quizfileupload.classes.inc \QuizfileuploadResponse
  3. 7.4 quizfileupload.classes.inc \QuizfileuploadResponse

Extension of QuizQuestionResponse.

Hierarchy

Expanded class hierarchy of QuizfileuploadResponse

1 string reference to 'QuizfileuploadResponse'
quizfileupload_quiz_question_info in ./quizfileupload.module
Implements hook_quiz_question_info().

File

./quizfileupload.classes.inc, line 223
File upload question class.

View source
class QuizfileuploadResponse extends QuizQuestionResponse {

  // ID of the answer.
  protected $answer_id = 0;
  protected $fid = NULL;
  private $answer_feedback;
  private $answer_feedback_format;

  /**
   * Constructor.
   */
  public function __construct($result_id, stdClass $question_node, $answer = NULL) {
    parent::__construct($result_id, $question_node, $answer);
    if (!isset($answer)) {
      $r = db_select('quiz_fileupload_user_answers', 'qfua')
        ->fields('qfua', array(
        'fid',
        'score',
        'is_evaluated',
        'answer_id',
        'answer_feedback',
        'answer_feedback_format',
      ))
        ->condition('result_answer_id', $this->result_answer_id, '=')
        ->execute()
        ->fetchObject();
      if (!empty($r)) {
        $this->answer = $r->fid;
        $this->score = $r->score;
        $this->evaluated = $r->is_evaluated;
        $this->answer_id = $r->answer_id;
        $this->answer_feedback = $r->answer_feedback;
        $this->answer_feedback_format = $r->answer_feedback_format;
      }
    }
    else {
      if (is_array($answer)) {
        $this->answer = $answer['fid'];
      }
      else {
        $this->answer = $answer;
      }
    }
  }

  /**
   * Implements save().
   *
   * @see QuizQuestionResponse#save()
   */
  public function save() {

    // Check if we need to manually evaluate this.
    $this->is_evaluated = isset($this->question->correct_answer_evaluation) && $this->question->correct_answer_evaluation == 1 ? 0 : 1;
    db_merge('quiz_fileupload_user_answers')
      ->key(array(
      'result_answer_id' => $this->result_answer_id,
    ))
      ->fields(array(
      'fid' => $this->answer,
      'result_answer_id' => $this->result_answer_id,
      'score' => $this
        ->getScore(FALSE),
      'is_evaluated' => $this->is_evaluated,
    ))
      ->execute();
  }

  /**
   * Implements delete().
   *
   * @see QuizQuestionResponse#delete()
   */
  public function delete() {
    db_delete('quiz_fileupload_user_answers')
      ->condition('result_answer_id', $this->result_answer_id)
      ->execute();
  }

  /**
   * Implements score().
   *
   * @see QuizQuestionResponse#score()
   */
  public function score() {
    $score = 0;
    if (isset($this->result_answer_id)) {

      // Manual scoring means we go with what is in the DB.
      if (isset($this->question->correct_answer_evaluation) && $this->question->correct_answer_evaluation == 1) {
        $score = db_select('quiz_fileupload_user_answers', 'qfua')
          ->fields('qfua', array(
          'score',
        ))
          ->condition('result_answer_id', $this->result_answer_id, '=')
          ->execute()
          ->fetchField();
        if (!$score) {
          $score = 0;
        }
      }
      else {
        $fileuploadAnswer = new QuizfileuploadQuestion($this->question);
        $score = $fileuploadAnswer
          ->getMaximumScore();
      }
    }
    return $score;
  }

  /**
   * Implements getResponse().
   *
   * @see QuizQuestionResponse#getResponse()
   */
  public function getResponse() {
    return $this->answer;
  }

  /**
   * Implements getFeedbackValues().
   */
  public function getFeedbackValues() {
    $data = array();

    // Hide the columns 'choice' and 'solution' as neither are really relevant
    // for a fileupload question.
    $data[] = array(
      'choice' => NULL,
      'attempt' => quiz_file_markup($this->answer),
      'correct' => $this->question->answers[0]['is_correct'] ? quiz_icon('correct') : quiz_icon(''),
      'score' => !$this->evaluated ? t('This answer has not yet been scored.') : $this
        ->getScore(),
      'answer_feedback' => check_markup($this->answer_feedback, $this->answer_feedback_format),
      'solution' => NULL,
    );
    return $data;
  }

  /**
   * Implements getReportFormAnswerFeedback().
   */
  public function getReportFormAnswerFeedback() {
    return array(
      '#title' => t('Enter feedback'),
      '#type' => 'text_format',
      '#default_value' => $this->answer_feedback,
      '#format' => isset($this->answer_feedback_format) ? $this->answer_feedback_format : filter_default_format(),
      '#attributes' => array(
        'class' => array(
          'quiz-report-score',
        ),
      ),
    );
  }

  /**
   * Implements getReportFormSubmit().
   *
   * @see QuizQuestionResponse#getReportFormSubmit()
   */
  public function getReportFormSubmit() {
    return 'quizfileupload_report_submit';
  }

}

Members

Namesort descending Modifiers Type Description Overrides
QuizfileuploadResponse::$answer_feedback private property
QuizfileuploadResponse::$answer_feedback_format private property
QuizfileuploadResponse::$answer_id protected property
QuizfileuploadResponse::$fid protected property
QuizfileuploadResponse::delete public function Implements delete().
QuizfileuploadResponse::getFeedbackValues public function Implements getFeedbackValues().
QuizfileuploadResponse::getReportFormAnswerFeedback public function Implements getReportFormAnswerFeedback().
QuizfileuploadResponse::getReportFormSubmit public function Implements getReportFormSubmit().
QuizfileuploadResponse::getResponse public function Implements getResponse().
QuizfileuploadResponse::save public function Implements save().
QuizfileuploadResponse::score public function Implements score().
QuizfileuploadResponse::__construct public function Constructor.