You are here

function opigno_tincan_api_quiz_statements_tincan_question_statement_multichoice_alter in Opigno TinCan API 7

File

modules/opigno_tincan_api_quiz_statements/opigno_tincan_api_quiz_statements.questions_alter.inc, line 3

Code

function opigno_tincan_api_quiz_statements_tincan_question_statement_multichoice_alter(TinCan\Statement &$statement, $question, $answers) {

  /******
   ** Set the result
   ***/
  $user_answers = _opigno_tincan_api_get_multichoice_user_answers($question->nid, $question->vid, $answers[0]['result_id']);
  $response = implode('[,]', $user_answers);
  _opigno_tincan_api_set_result($statement, $answers[0]['score'], $question->max_score, $question->correct, $response);

  /******
   ** Set the interaction type properties
   ***/
  $objectDefinition = _opigno_tincan_api_get_object_definition($statement);
  $objectDefinition
    ->setInteractionType(OpignoTincanApiTinCanInteractionTypes::$choice);
  $choices = array();
  $correct = array();
  foreach ($question->alternatives as $alternative) {
    $choices[] = array(
      'id' => $alternative['id'],
      'description' => array(
        'en-US' => $alternative['answer']['value'],
      ),
    );
    if ($alternative['score_if_chosen'] > 0) {
      $correct[] = $alternative['id'];
    }
  }
  $objectDefinition
    ->setChoices($choices);
  $objectDefinition
    ->setCorrectResponsesPattern(array(
    implode('[,]', $correct),
  ));
}