You are here

function _opigno_tincan_learning_path_send_statemets_certificate in Opigno TinCan API 8

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

Sends statements certificate.

Parameters

\Drupal\group\Entity\Group $group: Group.

Throws

\Exception

1 call to _opigno_tincan_learning_path_send_statemets_certificate()
_opigno_tincan_learning_path_create_and_send_training_statements in modules/opigno_tincan_learning_path/opigno_tincan_learning_path.module
Creates and sends training statement.

File

modules/opigno_tincan_learning_path/opigno_tincan_learning_path.module, line 158
Contains opigno_tincan_learning_path.module.

Code

function _opigno_tincan_learning_path_send_statemets_certificate(Group $group) {

  /****
   * - When user get a certificate
   * Actor: user
   * Verb: activitystrea.ms/received
   * Object: Opigno/Certificate
   * Result: None
   * Context: Training
   */
  $certificate_id = $group
    ->get('field_certificate')->target_id;
  if (!$certificate_id) {

    // There is no certificate.
    return;
  }
  $certificate = OpignoCertificate::load($certificate_id);
  $statement = new Statement();

  // Set Actor.
  OpignoTinCanApiStatements::setActor($statement);

  // Set verb.
  OpignoTinCanApiStatements::setVerb($statement, OpignoTincanApiTinCanVerbs::$received);

  // Set certificate entity.
  $url = Url::fromRoute('entity.opigno_certificate.canonical', [
    'opigno_certificate' => $certificate
      ->id(),
  ], [
    'absolute' => TRUE,
  ])
    ->toString();
  $statement
    ->setObject([
    'id' => $url,
    'definition' => [
      'name' => [
        'en-US' => 'Certificate for: ' . $group
          ->label(),
      ],
      'type' => OpignoTincanApiTinCanActivityDefinitionTypes::$certificate,
    ],
  ]);

  // Context creation.
  $context = new Context();

  // Get parents.
  $parent_ids = [
    $group
      ->id(),
  ];
  OpignoTinCanApiStatements::contextSetGrouping($context, $parent_ids, OpignoTincanApiTinCanActivityDefinitionTypes::$group);

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

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