You are here

function _opigno_tincan_api_send_questions_results in Opigno TinCan API 7

1 call to _opigno_tincan_api_send_questions_results()
_opigno_tincan_api_send_quiz_results in modules/opigno_tincan_api_quiz_statements/opigno_tincan_api_quiz_statements.module

File

modules/opigno_tincan_api_quiz_statements/opigno_tincan_api_quiz_statements.module, line 135

Code

function _opigno_tincan_api_send_questions_results($quiz, $rid) {

  /**
   * - When user answered a question
   * Actor: user
   * Verb: xAPI/answered
   * Object: xAPI/question
   * Result: Get this question result
   * Context: Quiz
   */

  // Take all the questions
  $questions = _quiz_get_answers($quiz, $rid);

  // Create the statement for each questions
  foreach ($questions as $question) {

    //////

    // Statement creation
    $statement = _opigno_tincan_api_statement_base_creation(OpignoTincanApiTinCanVerbs::$answered, OpignoTincanApiTinCanActivityDefinitionTypes::$question, $question);
    if ($statement === false) {
      return;
    }

    //////

    // Context creation
    $context = new TinCan\Context();

    // Get course nids
    $courses_nids = array();
    if (!empty($quiz->og_group_ref[LANGUAGE_NONE]) && !empty($quiz->og_group_ref[LANGUAGE_NONE][0]['target_id'])) {
      foreach ($quiz->og_group_ref[LANGUAGE_NONE] as $raw_course_nid) {
        $courses_nids[] = $raw_course_nid['target_id'];
      }
    }
    _opigno_tincan_api_context_set_language($context, $question->language);
    _opigno_tincan_api_context_set_parents($context, _opigno_tincan_api_get_parent_quiz($question));
    _opigno_tincan_api_context_set_grouping($context, $courses_nids, OpignoTincanApiTinCanActivityDefinitionTypes::$course);
    $statement
      ->setContext($context);

    //////

    // Alter statement by question type
    // Hook will looks like hook_tincan_question_statement_cloze_alter()
    $hook = 'tincan_question_statement_' . $question->type;
    drupal_alter($hook, $statement, $question, $question->answers);

    //////

    // Sending statement
    _opigno_tincan_api_send_statement($statement);
  }
}