You are here

function _opigno_tincan_api_send_quiz_results in Opigno TinCan API 7

2 calls to _opigno_tincan_api_send_quiz_results()
opigno_tincan_api_quiz_finished in modules/opigno_tincan_api_quiz_statements/opigno_tincan_api_quiz_statements.module
opigno_tincan_api_quiz_scored 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 72

Code

function _opigno_tincan_api_send_quiz_results($quiz, $score, $rid) {

  /**
   * - When user finish a quiz
   * Actor: user
   * Verb: xAPI/passed || xAPI/failed
   * Object: xAPI/lesson
   * Result: Get final quiz result
   * Context: Course
   */

  // Know if the user has passed or failed this quiz
  $passed = $score['percentage_score'] >= $quiz->pass_rate;

  //////

  // Statement creation
  $statement = _opigno_tincan_api_statement_base_creation($passed ? OpignoTincanApiTinCanVerbs::$passed : OpignoTincanApiTinCanVerbs::$failed, OpignoTincanApiTinCanActivityDefinitionTypes::$lesson, $quiz);
  if ($statement === false) {
    return;
  }

  //////

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

  // If there is a parent, set it.
  if (isset($quiz->og_group_ref[LANGUAGE_NONE])) {
    $parent_courses_nids = array_map(function ($e) {
      return $e['target_id'];
    }, $quiz->og_group_ref[LANGUAGE_NONE]);
    _opigno_tincan_api_context_set_parents($context, $parent_courses_nids, OpignoTincanApiTinCanActivityDefinitionTypes::$course);
  }
  _opigno_tincan_api_context_set_language($context, $quiz->language);
  $result = _opigno_tincan_api_get_result_data($rid);
  if (!empty($result)) {
    $duration = $result->time_end - $result->time_start;
    _opigno_tincan_api_set_result($statement, $score['numeric_score'], $score['possible_score'], $passed, null, $duration);
  }
  _opigno_tincan_api_send_questions_results($quiz, $rid);
  $statement
    ->setContext($context);

  //////

  // Sending statement
  _opigno_tincan_api_send_statement($statement);
}