class OpignoScormController in Opigno SCORM 3.x
Same name and namespace in other branches
- 8 src/Controller/OpignoScormController.php \Drupal\opigno_scorm\Controller\OpignoScormController
Class OpignoScormController.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\opigno_scorm\Controller\OpignoScormController
Expanded class hierarchy of OpignoScormController
File
- src/
Controller/ OpignoScormController.php, line 14
Namespace
Drupal\opigno_scorm\ControllerView 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
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
46 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function | Returns a redirect response object for the specified route. | |
ControllerBase:: |
protected | function | Returns the state storage service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
OpignoScormController:: |
public | function | Scorm data commit method. | |
OpignoScormController:: |
public | function | ||
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |