You are here

protected function TincanContentAnswerAssistant::getStatementFinalScore in Opigno module 3.x

Same name and namespace in other branches
  1. 8 ActivityTypes/opigno_tincan_activity/src/TincanContentAnswerAssistant.php \Drupal\opigno_tincan_activity\TincanContentAnswerAssistant::getStatementFinalScore()

Get the statement containing the final score.

Parameters

\TinCan\RemoteLRS $lrs: The LRS connection.

string $registration_uuid: The registration UUID.

string $activity_id: The activity ID of the statement.

Return value

bool|\TinCan\Statement The statement. If not found, returns FALSE.

1 call to TincanContentAnswerAssistant::getStatementFinalScore()
TincanContentAnswerAssistant::getScoreFromLrs in ActivityTypes/opigno_tincan_activity/src/TincanContentAnswerAssistant.php
This method will return the score from the LRS system for this response.

File

ActivityTypes/opigno_tincan_activity/src/TincanContentAnswerAssistant.php, line 219

Class

TincanContentAnswerAssistant
Class TincanContentAnswerAssistant.

Namespace

Drupal\opigno_tincan_activity

Code

protected function getStatementFinalScore(RemoteLRS $lrs, $registration_uuid, $activity_id) {
  $activity = new Activity();
  $activity
    ->setId($activity_id);
  $verb_passed = new Verb();
  $verb_passed
    ->setId(OpignoTincanApiTinCanVerbs::$passed['id']);

  // Test with verb "passed".
  $result = $lrs
    ->queryStatements([
    'activity' => $activity,
    'registration' => $registration_uuid,
    'verb' => $verb_passed,
    'limit' => 1,
  ]);
  $statements = [];
  if (!empty($result->content) && is_object($result->content)) {
    $statements = $result->content
      ->getStatements();

    // If nothing with "passed", test with "failed" verb.
    if (count($statements) === 0) {
      $verb_failed = new Verb();
      $verb_failed
        ->setId(OpignoTincanApiTinCanVerbs::$failed['id']);
      $result = $lrs
        ->queryStatements([
        'activity' => $activity,
        'registration' => $registration_uuid,
        'verb' => $verb_failed,
        'limit' => 1,
      ]);
      if (!empty($result->content) && is_object($result->content)) {
        $statements = $result->content
          ->getStatements();
      }
    }
  }
  if (count($statements) > 0) {
    return $statements[0];
  }
  else {
    return FALSE;
  }
}