You are here

function opigno_scorm_opigno_scorm_commit in Opigno SCORM 3.x

Same name and namespace in other branches
  1. 8 opigno_scorm.module \opigno_scorm_opigno_scorm_commit()

Implements hook_opigno_scorm_commit().

File

./opigno_scorm.module, line 271
Module functionality implementation.

Code

function opigno_scorm_opigno_scorm_commit($scorm, $sco_id, $data) {
  $account = Drupal::currentUser();
  if (!empty($data->scorm_version)) {
    switch ($data->scorm_version) {
      case '2004':

        // Store the last visited SCO id.
        opigno_scorm_scorm_cmi_set($account
          ->id(), $scorm->id, 'user.sco', $sco_id);

        // Store the last position.
        if (!empty($data->cmi->location)) {
          opigno_scorm_scorm_cmi_set($account
            ->id(), $scorm->id, 'cmi.location', $data->cmi->location);
        }

        // Store suspend data value.
        if (!empty($data->cmi->suspend_data)) {
          if (!is_null($sco_id)) {
            opigno_scorm_scorm_cmi_set($account
              ->id(), $scorm->id, 'cmi.suspend_data.' . $sco_id, $data->cmi->suspend_data);
          }
          opigno_scorm_scorm_cmi_set($account
            ->id(), $scorm->id, 'cmi.suspend_data', $data->cmi->suspend_data);
        }

        // Store the completion status.
        if (!empty($data->cmi->completion_status)) {
          opigno_scorm_scorm_cmi_set($account
            ->id(), $scorm->id, 'cmi.completion_status', $data->cmi->completion_status);
        }
        break;
      case '1.2':

        // Store the last position.
        if (!empty($data->cmi->core->lesson_location)) {
          opigno_scorm_scorm_cmi_set($account
            ->id(), $scorm->id, 'cmi.core.lesson_location', $data->cmi->core->lesson_location);
        }

        // Store suspend data value.
        if (!empty($data->cmi->suspend_data)) {
          opigno_scorm_scorm_cmi_set($account
            ->id(), $scorm->id, 'cmi.suspend_data', $data->cmi->suspend_data);
        }

        // Store the completion status.
        if (!empty($data->cmi->core->lesson_status)) {
          opigno_scorm_scorm_cmi_set($account
            ->id(), $scorm->id, 'cmi.core.lesson_status', $data->cmi->core->lesson_status);
        }
        break;
    }
  }
}