You are here

class TrueFalseResponse in Quiz 6.6

Same name and namespace in other branches
  1. 6.3 question_types/quiz_question/quiz_question.truefalse.inc \TrueFalseResponse
  2. 6.4 question_types/truefalse/truefalse.classes.inc \TrueFalseResponse
  3. 6.5 question_types/quiz_question/quiz_question.truefalse.inc \TrueFalseResponse
  4. 7.6 question_types/truefalse/truefalse.classes.inc \TrueFalseResponse
  5. 7 question_types/truefalse/truefalse.classes.inc \TrueFalseResponse
  6. 7.4 question_types/truefalse/truefalse.classes.inc \TrueFalseResponse
  7. 7.5 question_types/truefalse/truefalse.classes.inc \TrueFalseResponse

Hierarchy

Expanded class hierarchy of TrueFalseResponse

1 string reference to 'TrueFalseResponse'
truefalse_quiz_question_info in question_types/truefalse/truefalse.module
Implementation of hook_quiz_question_info().

File

question_types/truefalse/truefalse.classes.inc, line 152
Defines the classes necessary for a True/False quiz.

View source
class TrueFalseResponse extends AbstractQuizQuestionResponse {
  public function __construct($rid, $question, $answer = NULL) {
    $this->rid = $rid;
    $this->question = $question;
    if (!isset($answer)) {
      $r = $this
        ->getCorrectAnswer();
      if (!empty($r)) {
        $this->answer = $r->answer;
        $this->score = $r->score;
      }
    }
    else {
      $this->answer = $answer;
    }
  }
  public function save() {
    $sql = "INSERT INTO {quiz_truefalse_user_answers} (question_nid, question_vid, result_id, answer, score) VALUES (%d, %d, %d, %d, %d)";
    db_query($sql, $this->question->nid, $this->question->vid, $this->rid, (int) $this->answer, (int) $this
      ->getScore());
  }
  public function delete() {
    $sql = "DELETE FROM {quiz_truefalse_user_answers} WHERE question_nid = %d AND question_vid = %d AND result_id = %d";
    db_query($sql, $this->question->nid, $this->question->vid, $this->rid);
  }
  public function score() {
    $tfQuestion = new TrueFalseQuestion($this->question);
    return $this
      ->getResponse() == $tfQuestion
      ->getCorrectAnswer() ? 1 : 0;
  }
  public function getResponse() {
    if (!isset($this->answer)) {
      $correct_answer = $this
        ->getCorrectAnswer();
      $this->answer = $correct_answer->answer;
    }
    return $this->answer;
  }
  public function getCorrectAnswer() {
    $sql = "SELECT answer, score FROM {quiz_truefalse_user_answers} WHERE question_vid = %d AND result_id = %d";
    return db_fetch_object(db_query($sql, $this->question->vid, $this->rid));
  }
  public function formatReport($showpoints = TRUE, $showfeedback = TRUE) {

    // Build the question answers header (add blank space for IE).
    if ($showpoints) {
      $innerheader[] = t('Correct Answer');
    }
    $innerheader[] = t('User Answer');
    if ($showfeedback) {
      $innerheader[] = ' ';
    }
    if (empty($this->question->answers)) {
      return t('Missing question.');
    }
    $answer = $this->question->answers[0];
    $correct_answer = $answer['is_correct'];

    //? $answer['answer'] : !$answer['answer'];
    $user_answer = $answer['answer'];
    if ($showpoints) {
      $rows[0][] = $correct_answer ? t('True') : t('False');
    }
    $rows[0][] = $user_answer ? t('True') : t('False');
    if ($showfeedback && !empty($this->question->feedback)) {
      $rows[0][] = $this->question->feedback;
    }

    // Add the cell with the question and the answers.
    $q_output = '<div class="quiz_summary_question"><span class="quiz_question_bullet">Q:</span> ' . check_markup($this->question->body, $this->question->format) . '</div>';
    $q_output .= theme('table', $innerheader, $rows) . '<br />';
    return $q_output;
  }

}

Members