You are here

class OpignoScormController in Opigno SCORM 3.x

Same name and namespace in other branches
  1. 8 src/Controller/OpignoScormController.php \Drupal\opigno_scorm\Controller\OpignoScormController

Class OpignoScormController.

Hierarchy

Expanded class hierarchy of OpignoScormController

File

src/Controller/OpignoScormController.php, line 14

Namespace

Drupal\opigno_scorm\Controller
View source
class OpignoScormController extends ControllerBase {

  /**
   * {@inheritdoc}
   */
  public function scormIntegrateSco($opigno_scorm_sco) {
    $scorm_service = \Drupal::service('opigno_scorm.scorm');
    $sco = $scorm_service
      ->scormLoadSco($opigno_scorm_sco);

    // Does the SCO have a launch property ?
    if (!empty($sco->launch)) {
      $query = [];

      // Load the SCO data.
      $scorm = $scorm_service
        ->scormLoadById($sco->scorm_id);

      // Remove the URL parameters from the launch URL.
      if (!empty($sco->attributes['parameters'])) {
        $sco->launch .= $sco->attributes['parameters'];
      }
      $parts = explode('?', $sco->launch);
      $launch = array_shift($parts);
      if (!empty($parts)) {

        // Failsafe - in case a launch URL has 2 or more '?'.
        $parameters = implode('&', $parts);
      }

      // Get the SCO location on the filesystem.
      $sco_location = "{$scorm->extracted_dir}/{$launch}";
      $sco_path = file_create_url($sco_location);

      // Where there any parameters ? If so, prepare them for Drupal.
      if (!empty($parameters)) {
        foreach (explode('&', $parameters) as $param) {
          list($key, $value) = explode('=', $param);
          $query[$key] = !empty($value) ? $value : '';
        }
        if ($query) {
          $query = UrlHelper::buildQuery($query);
          $sco_path = $sco_path . '?' . $query;
        }
      }
      return new TrustedRedirectResponse($sco_path);
    }
    else {
      throw new NotFoundHttpException();
    }
  }

  /**
   * Scorm data commit method.
   */
  public function scormCommit($opigno_scorm_id, $opigno_scorm_sco_id) {
    $data_content = $GLOBALS['request']
      ->getContent();
    if (!empty($_POST['data'])) {
      $data = json_decode($_POST['data']);
    }
    elseif ($data_content) {
      $data = json_decode($data_content);
    }
    if (!empty($data)) {
      if (!empty($data->cmi->interactions)) {
        $_SESSION['scorm_answer_results'] = [
          'opigno_scorm_id' => $opigno_scorm_id,
          'opigno_scorm_sco_id' => $opigno_scorm_sco_id,
          'data' => $data,
        ];
      }
      $scorm_service = \Drupal::service('opigno_scorm.scorm');
      $scorm = $scorm_service
        ->scormLoadById($opigno_scorm_id);
      \Drupal::moduleHandler()
        ->invokeAll('opigno_scorm_commit', [
        $scorm,
        $opigno_scorm_sco_id,
        $data,
      ]);
      return new JsonResponse([
        'success' => 1,
      ]);
    }
    else {
      return new JsonResponse([
        'error' => 1,
        'message' => 'no data received',
      ]);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ControllerBase::$configFactory protected property The configuration factory.
ControllerBase::$currentUser protected property The current user service. 1
ControllerBase::$entityFormBuilder protected property The entity form builder.
ControllerBase::$entityTypeManager protected property The entity type manager.
ControllerBase::$formBuilder protected property The form builder. 2
ControllerBase::$keyValue protected property The key-value storage. 1
ControllerBase::$languageManager protected property The language manager. 1
ControllerBase::$moduleHandler protected property The module handler. 2
ControllerBase::$stateService protected property The state service.
ControllerBase::cache protected function Returns the requested cache bin.
ControllerBase::config protected function Retrieves a configuration object.
ControllerBase::container private function Returns the service container.
ControllerBase::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create 46
ControllerBase::currentUser protected function Returns the current user. 1
ControllerBase::entityFormBuilder protected function Retrieves the entity form builder.
ControllerBase::entityTypeManager protected function Retrieves the entity type manager.
ControllerBase::formBuilder protected function Returns the form builder service. 2
ControllerBase::keyValue protected function Returns a key/value storage collection. 1
ControllerBase::languageManager protected function Returns the language manager service. 1
ControllerBase::moduleHandler protected function Returns the module handler. 2
ControllerBase::redirect protected function Returns a redirect response object for the specified route.
ControllerBase::state protected function Returns the state storage service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 27
MessengerTrait::messenger public function Gets the messenger. 27
MessengerTrait::setMessenger public function Sets the messenger.
OpignoScormController::scormCommit public function Scorm data commit method.
OpignoScormController::scormIntegrateSco public function
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.