You are here

public function MultichoiceResponse::score in Quiz 7.4

Same name and namespace in other branches
  1. 6.4 question_types/multichoice/multichoice.classes.inc \MultichoiceResponse::score()
  2. 7.6 question_types/multichoice/multichoice.classes.inc \MultichoiceResponse::score()
  3. 7 question_types/multichoice/multichoice.classes.inc \MultichoiceResponse::score()
  4. 7.5 question_types/multichoice/multichoice.classes.inc \MultichoiceResponse::score()

Implementation of score

Return value

uint

Overrides QuizQuestionResponse::score

See also

QuizQuestionResponse#score()

File

question_types/multichoice/multichoice.classes.inc, line 917
The main classes for the multichoice question type.

Class

MultichoiceResponse
Extension of QuizQuestionResponse

Code

public function score() {
  if ($this->question->choice_boolean || $this
    ->isAllWrong()) {
    $score = $this
      ->getMaxScore();
    foreach ($this->question->alternatives as $key => $alt) {
      if (in_array($alt['id'], $this->user_answer_ids)) {
        if ($alt['score_if_chosen'] <= $alt['score_if_not_chosen']) {
          $score = 0;
        }
      }
      else {
        if ($alt['score_if_chosen'] > $alt['score_if_not_chosen']) {
          $score = 0;
        }
      }
    }
  }
  else {
    $score = 0;
    foreach ($this->question->alternatives as $key => $alt) {
      if (in_array($alt['id'], $this->user_answer_ids)) {
        $score += $alt['score_if_chosen'];
      }
      else {
        $score += $alt['score_if_not_chosen'];
      }
    }
  }
  return $score;
}