You are here

function _quiz_question_response_get_instance in Quiz 8.5

Same name and namespace in other branches
  1. 8.6 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  2. 8.4 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  3. 6.6 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  4. 6.3 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  5. 6.4 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  6. 6.5 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  7. 7.6 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  8. 7 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  9. 7.4 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()
  10. 7.5 question_types/quiz_question/quiz_question.module \_quiz_question_response_get_instance()

Get an instance of a quiz question response.

Get information about the class and use it to construct a new object of the appropriate type.

Parameters

int $result_id: Result id.

stdClass $question: The question node (not a QuizQuestion instance).

mixed $answer: Response to the answering form.

$nid: The Question node ID.

$vid: The Question revision ID.

Return value

QuizQuestionResponse The appropriate QuizQuestionResponse extension instance.

4 calls to _quiz_question_response_get_instance()
MatchingResponse::viewsGetAnswers in question_types/quiz_matching/src/Plugin/quiz/QuizQuestion/MatchingResponse.php
Get answers for a question in a result.
MultichoiceResponse::viewsGetAnswers in question_types/quiz_multichoice/src/Plugin/quiz/QuizQuestion/MultichoiceResponse.php
Get answers for a question in a result.
QuizResultAnswerEntityTrait::viewsGetAnswers in src/Entity/QuizResultAnswerEntityTrait.php
Get answers for a question in a result.
quiz_question_quiz_question_score in question_types/quiz_question/quiz_question.module
Implements hook_quiz_question_score().

File

question_types/quiz_question/quiz_question.module, line 225
Quiz Question module.

Code

function _quiz_question_response_get_instance($result_id, $question, $answer = NULL, $nid = NULL, $vid = NULL) {
  $info = quiz_question_get_info();

  // If the question node isn't set we fetch it from the QuizQuestion instance
  // this response belongs to.
  if (!isset($question)) {
    $question = node_load($nid, $vid);
  }
  if (!empty($question->type)) {
    $constructor = $info[$question->type]['response provider'];
  }
  if (empty($constructor)) {
    $constructor = 'QuizQuestionResponseBroken';
    $question = new stdClass();
  }
  $to_return = new $constructor($result_id, $question, $answer);

  // All response classes must extend QuizQuestionResponse.
  if (!$to_return instanceof QuizQuestionResponse) {
    drupal_set_message(t("The question-response isn't a QuizQuestionResponse. It needs to extend the QuizQuestionResponse interface, or extend the abstractQuizQuestionResponse class."), 'error', FALSE);
  }
  $result = $to_return
    ->getReport();
  $to_return->question->answers[$result['answer_id']] = $result;
  $to_return->question->correct = $result['is_correct'];
  return $to_return;
}