You are here

function _opigno_tincan_api_set_result in Opigno TinCan API 7

16 calls to _opigno_tincan_api_set_result()
opigno_tincan_api_cloze_statements_tincan_question_statement_cloze_alter in modules/opigno_tincan_api_cloze_statements/opigno_tincan_api_cloze_statements.module
opigno_tincan_api_in_house_training_statements_opigno_in_house_training_finished in modules/opigno_tincan_api_in_house_training_statements/opigno_tincan_api_in_house_training_statements.module
Implements hook_opigno_in_house_training_finished().
opigno_tincan_api_opigno_scorm_statements_tincan_question_statement_opigno_scorm_quiz_question_alter in modules/opigno_tincan_api_opigno_scorm_statements/opigno_tincan_api_opigno_scorm_statements.module
opigno_tincan_api_opigno_statements_opigno_course_passed in modules/opigno_tincan_api_opigno_statements/opigno_tincan_api_opigno_statements.module
opigno_tincan_api_quizfileupload_statements_tincan_question_statement_quizfileupload_alter in modules/opigno_tincan_api_quizfileupload_statements/opigno_tincan_api_quizfileupload_statements.module

... See full list

File

includes/opigno_tincan_api.statements_func.inc, line 155

Code

function _opigno_tincan_api_set_result(TinCan\Statement &$statement, $user_score = null, $score_max = null, $is_success = null, $response = null, $duration_s = null) {
  if (!_opigno_tincan_api_tincanphp_is_installed()) {
    return false;
  }
  $result = new TinCan\Result();
  if ($user_score !== null) {
    _opigno_tincan_api_set_score($result, $user_score, $score_max);
  }
  if ($is_success !== null) {
    $result
      ->setSuccess($is_success);
  }
  $result
    ->setCompletion(true);
  if ($response !== null) {
    $result
      ->setResponse($response);
  }
  if ($duration_s !== null) {
    $time_now = new DateTime();
    $time_more = new DateTime();
    $time_more
      ->add(new DateInterval('PT' . (int) $duration_s . 'S'));
    $time = $time_now
      ->diff($time_more);

    // Remove all the 0 in the formatted duration
    $duration_string = $time
      ->format('P%yY%mM%dDT%hH%iM%sS');
    $duration_string = preg_replace('/(\\D)0{1}\\D/i', '$1', $duration_string);
    $duration_string == 'PT' ? $duration_string = 'PT0S' : null;
    $result
      ->setDuration($duration_string);
  }
  $statement
    ->setResult($result);
}