You are here

function _opigno_tincan_activities_create_and_send_statements in Opigno TinCan API 8

Same name and namespace in other branches
  1. 3.x modules/opigno_tincan_activities/opigno_tincan_activities.module \_opigno_tincan_activities_create_and_send_statements()

The main function for building tincan statement object for opigno activity.

Parameters

\Drupal\opigno_module\Entity\OpignoAnswerInterface $answer: Answer object.

Throws

\Exception

1 call to _opigno_tincan_activities_create_and_send_statements()
opigno_tincan_activities_opigno_answer_insert in modules/opigno_tincan_activities/opigno_tincan_activities.module
Implements hook_ENTITY_TYPE_insert().

File

modules/opigno_tincan_activities/opigno_tincan_activities.module, line 66
Contains opigno_tincan_activities.module.

Code

function _opigno_tincan_activities_create_and_send_statements(OpignoAnswerInterface $answer) {
  $opigno_module = $answer
    ->getModule();
  $activity = $answer
    ->getActivity();
  $statement_properties = opigno_tincan_activities_get_verb_and_definition_type($activity
    ->getType());

  // Statement creation.
  $statement = OpignoTinCanApiStatements::statementBaseCreation($statement_properties['verb'], $statement_properties['definition_type'], $activity);
  if ($statement === FALSE) {
    return;
  }

  // Learning path is the main group for activities.
  $learning_path_id = OpignoGroupContext::getCurrentGroupId();

  // Context creation.
  $context = new Context();
  OpignoTinCanApiStatements::contextSetParents($context, [
    $opigno_module
      ->id(),
  ], OpignoTincanApiTinCanActivityDefinitionTypes::$module);
  OpignoTinCanApiStatements::contextSetGrouping($context, [
    $learning_path_id,
  ], OpignoTincanApiTinCanActivityDefinitionTypes::$group);
  $language_id = $opigno_module
    ->language()
    ->getId();
  OpignoTinCanApiStatements::contextSetLanguage($context, $language_id);

  // Set result.
  _opigno_tincan_activities_set_results($statement, $activity, $answer);

  // Set statement context.
  $statement
    ->setContext($context);

  // Sending statement.
  OpignoTinCanApiStatements::sendStatement($statement);
}