ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilObjLTIConsumerGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2019 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 
26 {
27  const CFORM_CUSTOM_NEW = 99;
28 
29  const TAB_ID_INFO = 'tab_info';
30  const TAB_ID_CONTENT = 'tab_content';
31  const TAB_ID_SETTINGS = 'tab_settings';
32  const TAB_ID_STATEMENTS = 'tab_statements';
33  const TAB_ID_SCORING = 'tab_scoring';
34  const TAB_ID_METADATA = 'tab_metadata';
35  const TAB_ID_LEARNING_PROGRESS = 'learning_progress';
36  const TAB_ID_PERMISSIONS = 'perm_settings';
37 
38  const DEFAULT_CMD = 'launch';
39 
43  public $object;
44 
48  protected $ltiAccess;
49 
50  public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
51  {
52  global $DIC; /* @var \ILIAS\DI\Container $DIC */
53 
54  parent::__construct($a_id, $a_id_type, $a_parent_node_id);
55 
56  if ($this->object instanceof ilObjLTIConsumer) {
57  $this->ltiAccess = new ilLTIConsumerAccess($this->object);
58  }
59 
60  $DIC->language()->loadLanguageModule("lti");
61  $DIC->language()->loadLanguageModule("rep");
62  }
63 
64  public function getType()
65  {
66  return 'lti';
67  }
68 
69  public function initCreationForms($a_new_type)
70  {
71  global $DIC; /* @var \ILIAS\DI\Container $DIC */
72 
73  $forms = array(
74  self::CFORM_NEW => $this->initCreateForm($a_new_type)
75  );
76 
78  $forms[self::CFORM_CUSTOM_NEW] = $this->initCustomCreateForm($a_new_type);
79  }
80 
81  //$forms[self::CFORM_IMPORT] = $this->initImportForm($a_new_type), // no import yet
82  $forms[self::CFORM_CLONE] = $this->fillCloneTemplate(null, $a_new_type);
83 
84  return $forms;
85  }
86 
87  public function initCreateForm($a_new_type)
88  {
89  global $DIC; /* @var \ILIAS\DI\Container $DIC */
90 
91  $form = $this->buildProviderSelectionForm($a_new_type);
92 
93  $globalProviderList = new ilLTIConsumeProviderList();
94  $globalProviderList->setAvailabilityFilter(ilLTIConsumeProvider::AVAILABILITY_CREATE);
95  $globalProviderList->setScopeFilter(ilLTIConsumeProviderList::SCOPE_GLOBAL);
96 
97  $userProviderList = new ilLTIConsumeProviderList();
98  $userProviderList->setAvailabilityFilter(ilLTIConsumeProvider::AVAILABILITY_CREATE);
99  $userProviderList->setScopeFilter(ilLTIConsumeProviderList::SCOPE_USER);
100  $userProviderList->setCreatorFilter($DIC->user()->getId());
101 
102  if ($form->getFilter('title')) {
103  $globalProviderList->setTitleFilter($form->getFilter('title'));
104  $userProviderList->setTitleFilter($form->getFilter('title'));
105  }
106 
107  if ($form->getFilter('category')) {
108  $globalProviderList->setCategoryFilter($form->getFilter('category'));
109  $userProviderList->setCategoryFilter($form->getFilter('category'));
110  }
111 
112  if ($form->getFilter('keyword')) {
113  $globalProviderList->setKeywordFilter($form->getFilter('keyword'));
114  $userProviderList->setKeywordFilter($form->getFilter('keyword'));
115  }
116 
117  if ($form->getFilter('outcome')) {
118  $globalProviderList->setHasOutcomeFilter(true);
119  $userProviderList->setHasOutcomeFilter(true);
120  }
121 
122  if ($form->getFilter('internal')) {
123  $globalProviderList->setIsExternalFilter(false);
124  $userProviderList->setIsExternalFilter(false);
125  }
126 
127  if ($form->getFilter('with_key')) {
128  $globalProviderList->setIsProviderKeyCustomizableFilter(false);
129  $userProviderList->setIsProviderKeyCustomizableFilter(false);
130  }
131 
132  $globalProviderList->load();
133  $userProviderList->load();
134 
135  $form->setData(array_merge(
136  $globalProviderList->getTableData(),
137  $userProviderList->getTableData()
138  ));
139 
140  return $form;
141  }
142 
143  public function initCustomCreateForm($a_new_type)
144  {
145  global $DIC; /* @var \ILIAS\DI\Container $DIC */
146 
147  $provider = new ilLTIConsumeProvider();
148 
149  $form = new ilLTIConsumeProviderFormGUI($provider);
150 
151  $form->initForm($this->ctrl->getFormAction($this, "save"), '', '');
152 
153  $form->clearCommandButtons();
154  $form->addCommandButton("saveCustom", $this->lng->txt($a_new_type . "_add_own_provider"));
155  $form->addCommandButton("cancel", $this->lng->txt("cancel"));
156 
157  $form->setTitle($DIC->language()->txt($a_new_type . '_custom_new'));
158 
159  return $form;
160  }
161 
162  protected function buildProviderSelectionForm($a_new_type)
163  {
165  $a_new_type,
166  $this,
167  'create',
168  'applyProviderFilter',
169  'resetProviderFilter'
170  );
171  }
172 
173  protected function applyProviderFilter()
174  {
175  $form = $this->buildProviderSelectionForm('');
176  $form->applyFilter();
177  $this->createObject();
178  }
179 
180  protected function resetProviderFilter()
181  {
182  $form = $this->buildProviderSelectionForm('');
183  $form->resetFilter();
184  $this->createObject();
185  }
186 
187  protected function createNewObject($newType, $title, $description)
188  {
189  $classname = "ilObj" . $this->objDefinition->getClassName($newType);
190 
191  $newObj = new $classname();
192  $newObj->setType($newType);
193  $newObj->setTitle($title);
194  $newObj->setDescription($description);
195  $newObj->create();
196 
197  $this->putObjectInTree($newObj);
198 
199  return $newObj;
200  }
201 
202  public function saveCustom()
203  {
205  throw new ilLtiConsumerException('permission denied!');
206  }
207 
208  global $DIC; /* @var \ILIAS\DI\Container $DIC */
209 
210  $new_type = $_REQUEST["new_type"];
211  $DIC->ctrl()->setParameter($this, "new_type", $new_type);
212 
213  $DIC->language()->loadLanguageModule($new_type);
214 
215  $form = $this->initCustomCreateForm($new_type);
216 
217  if ($form->checkInput()) {
218  $DIC->ctrl()->setParameter($this, "new_type", "");
219 
220  // create object
221  $newObj = $this->createNewObject(
222  $new_type,
223  $form->getInput('title'),
224  $form->getInput('desc')
225  );
226 
227  // apply didactic template?
228  $dtpl = $this->getDidacticTemplateVar("dtpl");
229  if ($dtpl) {
230  $newObj->applyDidacticTemplate($dtpl);
231  }
232 
233  // auto rating
234  $this->handleAutoRating($newObj);
235 
236  $this->afterSave($newObj);
237 
238  return;
239  }
240 
241  $form->setValuesByPost();
242 
243  $DIC->ui()->mainTemplate()->setContent($form->getHtml());
244  }
245 
246  public function afterSave(ilObject $newObject)
247  {
248  /* @var ilObjLTIConsumer $newObject */
249  global $DIC; /* @var \ILIAS\DI\Container $DIC */
250 
251  if (isset($_GET['provider_id']) && (int) $_GET['provider_id']) {
252  $newObject->setProviderId((int) $_GET['provider_id']);
253  $newObject->initProvider();
254  $newObject->save();
255 
256  $newObject->setTitle($newObject->getProvider()->getTitle());
257  $newObject->setMasteryScore($newObject->getProvider()->getMasteryScore());
258  $newObject->update();
259 
260  $this->initMetadata($newObject);
261 
262  $DIC->ctrl()->redirectByClass(ilLTIConsumerSettingsGUI::class);
263  }
264 
266  throw new ilLtiConsumerException('permission denied!');
267  }
268 
269  $form = $this->initCustomCreateForm($newObject->getType());
270 
271  if ($form->checkInput()) {
272  $provider = new ilLTIConsumeProvider();
273  $form->initProvider($provider);
274  $provider->setAvailability(ilLTIConsumeProvider::AVAILABILITY_CREATE);
275  $provider->setIsGlobal(false);
276  $provider->setCreator($DIC->user()->getId());
277  $provider->save();
278 
279  $newObject->setProviderId($provider->getId());
280  $newObject->setProvider($provider);
281  $newObject->save();
282 
283  $newObject->setTitle($provider->getTitle());
284  $newObject->setMasteryScore($newObject->getProvider()->getMasteryScore());
285  $newObject->update();
286 
287  $this->initMetadata($newObject);
288 
289  $DIC->ctrl()->redirectByClass(ilObjLTIConsumerGUI::class);
290  }
291 
292  throw new ilLtiConsumerException(
293  'form validation seems to not have worked in ilObjLTIConsumer::saveCustom()!'
294  );
295  }
296 
298  {
299  $metadata = new ilMD($object->getId(), $object->getId(), $object->getType());
300 
301  $generalMetadata = $metadata->getGeneral();
302 
303  if (!$generalMetadata) {
304  $generalMetadata = $metadata->addGeneral();
305  }
306 
307  $generalMetadata->setTitle($object->getTitle());
308  $generalMetadata->save();
309 
310  $id = $generalMetadata->addIdentifier();
311  $id->setCatalog('ILIAS');
312  $id->setEntry('il__' . $object->getType() . '_' . $object->getId());
313  $id->save();
314 
315  $keywords = $object->getProvider()->getKeywordsArray();
316  ilMDKeyword::updateKeywords($generalMetadata, $keywords);
317  }
318 
319  protected function initHeaderAction($a_sub_type = null, $a_sub_id = null)
320  {
321  global $DIC; /* @var \ILIAS\DI\Container $DIC */
322 
323  $return = parent::initHeaderAction($a_sub_type, $a_sub_id);
324 
325  if ($this->creation_mode) {
326  return $return;
327  }
328 
329  $validator = new ilCertificateDownloadValidator();
330  if ($validator->isCertificateDownloadable((int) $DIC->user()->getId(), (int) $this->object->getId())) {
331  $certLink = $DIC->ctrl()->getLinkTargetByClass(
332  [ilObjLTIConsumerGUI::class, ilLTIConsumerSettingsGUI::class],
334  );
335 
336  $DIC->language()->loadLanguageModule('certificate');
337 
338  $return->addCustomCommand($certLink, 'download_certificate');
339 
340  $return->addHeaderIcon(
341  'cert_icon',
342  ilUtil::getImagePath('icon_cert.svg'),
343  $DIC->language()->txt('download_certificate'),
344  null,
345  null,
346  $certLink
347  );
348  }
349 
350  return $return;
351  }
352 
353  public static function _goto($a_target)
354  {
355  global $DIC; /* @var \ILIAS\DI\Container $DIC */
356  $err = $DIC['ilErr']; /* @var ilErrorHandling $err */
357  $ctrl = $DIC->ctrl();
358  $request = $DIC->http()->request();
359  $access = $DIC->access();
360  $lng = $DIC->language();
361 
362  $targetParameters = explode('_', $a_target);
363  $id = (int) $targetParameters[0];
364 
365  if ($id <= 0) {
366  $err->raiseError($lng->txt('msg_no_perm_read'), $err->FATAL);
367  }
368 
369  if ($access->checkAccess('read', '', $id)) {
370  $ctrl->setTargetScript('ilias.php');
371  $ctrl->initBaseClass(ilRepositoryGUI::class);
372  $ctrl->setParameterByClass(ilObjLTIConsumerGUI::class, 'ref_id', $id);
373  if (isset($request->getQueryParams()['gotolp'])) {
374  $ctrl->setParameterByClass(ilObjLTIConsumerGUI::class, 'gotolp', 1);
375  }
376  $ctrl->redirectByClass([ilRepositoryGUI::class, ilObjLTIConsumerGUI::class]);
377  } elseif ($access->checkAccess('visible', '', $id)) {
378  ilObjectGUI::_gotoRepositoryNode($id, 'infoScreen');
379  } elseif ($access->checkAccess('read', '', ROOT_FOLDER_ID)) {
381  sprintf(
382  $DIC->language()->txt('msg_no_perm_read_item'),
384  ),
385  true
386  );
387 
389  }
390 
391  $err->raiseError($DIC->language()->txt("msg_no_perm_read_lm"), $err->FATAL);
392  }
393 
397  public function executeCommand()
398  {
399  global $DIC; /* @var \ILIAS\DI\Container $DIC */
400 
401  // TODO: general access checks (!)
402 
404  $this->prepareOutput();
405  $this->addHeaderAction();
406  }
407 
408  if (!$this->creation_mode) {
409  $this->trackObjectReadEvent();
410 
411  if ($this->object->getProvider()->hasProviderIcon()) {
412  $DIC->ui()->mainTemplate()->setTitleIcon(
413  $this->object->getProvider()->getProviderIcon()->getAbsoluteFilePath(),
414  'Icon ' . $this->object->getProvider()->getTitle()
415  );
416  }
417 
418  $link = ilLink::_getLink($this->object->getRefId(), $this->object->getType());
419  $navigationHistory = $DIC['ilNavigationHistory']; /* @var ilNavigationHistory $navigationHistory */
420  $navigationHistory->addItem($this->object->getRefId(), $link, $this->object->getType());
421  }
422 
423  switch ($DIC->ctrl()->getNextClass()) {
424  case strtolower(ilObjectCopyGUI::class):
425 
426  $gui = new ilObjectCopyGUI($this);
427  $gui->setType($this->getType());
428  $DIC->ctrl()->forwardCommand($gui);
429  break;
430 
431  case strtolower(ilCommonActionDispatcherGUI::class):
432 
434  $DIC->ctrl()->forwardCommand($gui);
435  break;
436 
437  case strtolower(ilLearningProgressGUI::class):
438 
439  $DIC->tabs()->activateTab(self::TAB_ID_LEARNING_PROGRESS);
440 
441  $gui = new ilLearningProgressGUI(
443  $this->object->getRefId()
444  );
445 
446  $DIC->ctrl()->forwardCommand($gui);
447 
448  break;
449 
450  case strtolower(ilObjectMetaDataGUI::class):
451 
452  if (!$DIC->access()->checkAccess('write', '', $this->object->getRefId())) {
453  $DIC['ilErr']->raiseError($DIC->language()->txt("msg_no_perm_write"));
454  } else {
455  $DIC->tabs()->activateTab(self::TAB_ID_METADATA);
456 
457  $gui = new ilObjectMetaDataGUI($this->object);
458  $DIC->ctrl()->forwardCommand($gui);
459  }
460  break;
461 
462  case strtolower(ilPermissionGUI::class):
463 
464  $DIC->tabs()->activateTab(self::TAB_ID_PERMISSIONS);
465 
466  $gui = new ilPermissionGUI($this);
467  $DIC->ctrl()->forwardCommand($gui);
468  break;
469 
470  case strtolower(ilLTIConsumerSettingsGUI::class):
471 
472  if (!$DIC->access()->checkAccess('write', '', $this->object->getRefId())) {
473  $DIC['ilErr']->raiseError($DIC->language()->txt("msg_no_perm_write"));
474  } else {
475  $DIC->tabs()->activateTab(self::TAB_ID_SETTINGS);
476 
477  $gui = new ilLTIConsumerSettingsGUI($this->object, $this->ltiAccess);
478  $DIC->ctrl()->forwardCommand($gui);
479  }
480  break;
481 
482  case strtolower(ilLTIConsumerXapiStatementsGUI::class):
483 
484  $DIC->tabs()->activateTab(self::TAB_ID_STATEMENTS);
485 
486  $gui = new ilLTIConsumerXapiStatementsGUI($this->object);
487  $DIC->ctrl()->forwardCommand($gui);
488 
489  break;
490 
491  case strtolower(ilLTIConsumerScoringGUI::class):
492 
493  $DIC->tabs()->activateTab(self::TAB_ID_SCORING);
494 
495  $gui = new ilLTIConsumerScoringGUI($this->object);
496  $DIC->ctrl()->forwardCommand($gui);
497 
498  break;
499 
500  case strtolower(ilLTIConsumerContentGUI::class):
501 
502  if (!$DIC->access()->checkAccess('read', '', $this->object->getRefId())) {
503  $DIC['ilErr']->raiseError($DIC->language()->txt("msg_no_perm_read"));
504  } else {
505  $DIC->tabs()->activateTab(self::TAB_ID_CONTENT);
506 
507  $gui = new ilLTIConsumerContentGUI($this->object);
508  $DIC->ctrl()->forwardCommand($gui);
509  }
510 
511  break;
512 
513  case strtolower(ilInfoScreenGUI::class):
514 
515  $DIC->tabs()->activateTab(self::TAB_ID_INFO);
516  $this->infoScreen();
517 
518  break;
519 
520  default:
521  $command = $DIC->ctrl()->getCmd(self::DEFAULT_CMD);
522  $this->{$command}();
523  }
524  }
525 
526  public function setTabs()
527  {
528  global $DIC; /* @var \ILIAS\DI\Container $DIC */
529  $DIC->language()->loadLanguageModule('lti');
530 
531  $DIC->help()->setScreenIdComponent("lti");
532 
533  if (!$this->object->getOfflineStatus() &&
534  $this->object->getProvider()->getAvailability() != ilLTIConsumeProvider::AVAILABILITY_NONE
535  ) {
536  $DIC->tabs()->addTab(
537  self::TAB_ID_CONTENT,
538  $DIC->language()->txt(self::TAB_ID_CONTENT),
539  $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerContentGUI::class)
540  );
541  }
542 
543  $DIC->tabs()->addTab(
544  self::TAB_ID_INFO,
545  $DIC->language()->txt(self::TAB_ID_INFO),
546  $this->ctrl->getLinkTargetByClass(ilInfoScreenGUI::class)
547  );
548 
549 
550  if ($this->ltiAccess->hasWriteAccess()) {
551  $DIC->tabs()->addTab(
552  self::TAB_ID_SETTINGS,
553  $DIC->language()->txt(self::TAB_ID_SETTINGS),
554  $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerSettingsGUI::class)
555  );
556  }
557 
558  if ($this->ltiAccess->hasStatementsAccess()) {
559  $DIC->tabs()->addTab(
560  self::TAB_ID_STATEMENTS,
561  $DIC->language()->txt(self::TAB_ID_STATEMENTS),
562  $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerXapiStatementsGUI::class)
563  );
564  }
565 
566  if ($this->ltiAccess->hasHighscoreAccess()) {
567  $DIC->language()->loadLanguageModule('lti');
568  $DIC->tabs()->addTab(
569  self::TAB_ID_SCORING,
570  $DIC->language()->txt(self::TAB_ID_SCORING),
571  $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerScoringGUI::class)
572  );
573  }
574 
575  if ($this->ltiAccess->hasLearningProgressAccess() && $this->object->getProvider()->getHasOutcome()) {
576  $DIC->tabs()->addTab(
577  self::TAB_ID_LEARNING_PROGRESS,
578  $DIC->language()->txt(self::TAB_ID_LEARNING_PROGRESS),
579  $DIC->ctrl()->getLinkTargetByClass(ilLearningProgressGUI::class)
580  );
581  }
582 
583  if ($this->ltiAccess->hasWriteAccess()) {
584  $gui = new ilObjectMetaDataGUI($this->object);
585  $link = $gui->getTab();
586 
587  if (strlen($link)) {
588  $DIC->tabs()->addTab(
589  self::TAB_ID_METADATA,
590  $DIC->language()->txt('meta_data'),
591  $link
592  );
593  }
594  }
595 
596  if ($this->ltiAccess->hasEditPermissionsAccess()) {
597  $DIC->tabs()->addTab(
598  self::TAB_ID_PERMISSIONS,
599  $DIC->language()->txt(self::TAB_ID_PERMISSIONS),
600  $DIC->ctrl()->getLinkTargetByClass(ilPermissionGUI::class, 'perm')
601  );
602  }
603 
604  if (defined('DEVMODE') && DEVMODE) {
605  $DIC->tabs()->addTab(
606  'debug',
607  'DEBUG',
608  $DIC->ctrl()->getLinkTarget($this, 'debug')
609  );
610  }
611  }
612 
613  protected function debug()
614  {
615  global $DIC; /* @var \ILIAS\DI\Container $DIC */
616 
617  $DIC->tabs()->activateTab('debug');
618 
619  $filter = new ilCmiXapiStatementsReportFilter();
620  $filter->setActivityId($this->object->getActivityId());
621 
622  $aggregateEndPointUrl = str_replace(
623  'data/xAPI',
624  'api/statements/aggregate',
625  $this->object->getProvider()->getXapiLaunchUrl() // should be named endpoint not launch url
626  );
627 
628  $linkBuilder = new ilCmiXapiHighscoreReportLinkBuilder(
629  $this->object,
630  $aggregateEndPointUrl,
631  $filter
632  );
633 
635  $this->object->getProvider()->getXapiLaunchKey(),
636  $this->object->getProvider()->getXapiLaunchSecret()
637  );
638 
640  $basicAuth,
641  $linkBuilder
642  );
643 
644  try {
645  $report = $request->queryReport($this->object);
646 
647  $DIC->ui()->mainTemplate()->setContent(
648  $report->getResponseDebug()
649  );
650 
651  //ilUtil::sendSuccess('Object ID: '.$this->object->getId());
652  ilUtil::sendInfo($linkBuilder->getPipelineDebug());
653  ilUtil::sendQuestion('<pre>' . print_r($report->getTableData(), 1) . '</pre>');
654  } catch (Exception $e) {
655  ilUtil::sendFailure($e->getMessage());
656  }
657  }
658 
659  public function addLocatorItems()
660  {
661  global $DIC; /* @var \ILIAS\DI\Container $DIC */
662 
663  $locator = $DIC['ilLocator']; /* @var ilLocatorGUI $locator */
664  $locator->addItem(
665  $this->object->getTitle(),
666  $this->ctrl->getLinkTarget($this, self::DEFAULT_CMD),
667  "",
668  $_GET["ref_id"]
669  );
670  }
671 
672  protected function trackObjectReadEvent()
673  {
674  global $DIC; /* @var \ILIAS\DI\Container $DIC */
675 
677  $this->object->getType(),
678  $this->object->getRefId(),
679  $this->object->getId(),
680  $DIC->user()->getId()
681  );
682 
683  ilLPStatusWrapper::_updateStatus($this->object->getId(), $DIC->user()->getId());
684  }
685 
686  protected function launch() : void
687  {
689  $obj = $this->object;
690  $this->tabs_gui->activateTab(self::TAB_ID_CONTENT);
691  $gui = new ilLTIConsumerContentGUI($obj);
692  $this->ctrl->forwardCommand($gui);
693  }
694 
695  protected function infoScreen()
696  {
697  global $DIC; /* @var \ILIAS\DI\Container $DIC */
698 
699  $DIC->tabs()->activateTab(self::TAB_ID_INFO);
700 
701  $DIC->ctrl()->setCmd("showSummary");
702  $DIC->ctrl()->setCmdClass("ilinfoscreengui");
703  $this->infoScreenForward();
704  }
705 
706  protected function infoScreenForward()
707  {
708  global $DIC; /* @var \ILIAS\DI\Container $DIC */
709  $ilErr = $DIC['ilErr']; /* @var ilErrorHandling $ilErr */
710 
711  if (!$this->checkPermissionBool("visible") && !$this->checkPermissionBool("read")) {
712  $ilErr->raiseError($DIC->language()->txt("msg_no_perm_read"));
713  }
714 
715  $this->handleAvailablityMessage();
716 
717  $info = new ilInfoScreenGUI($this);
718 
719  $info->enablePrivateNotes();
720 
721  if ($this->checkPermissionBool("read")) {
722  $info->enableNews();
723  }
724 
725  $info->enableNewsEditing(false);
726 
727  if ($this->checkPermissionBool("write")) {
728  $news_set = new ilSetting("news");
729  $enable_internal_rss = $news_set->get("enable_rss_for_internal");
730 
731  if ($enable_internal_rss) {
732  $info->setBlockProperty("news", "settings", true);
733  $info->setBlockProperty("news", "public_notifications_option", true);
734  }
735  }
736 
737  // standard meta data
738  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
739 
740  if (DEVMODE) {
741  // Development Info
742  $info->addSection('DEVMODE Info');
743  $info->addProperty('Local Object ID', $this->object->getId());
744  $info->addProperty('Current User ID', $DIC->user()->getId());
745  }
746 
747  require_once('Services/Tracking/classes/class.ilLPObjSettings.php');
748  if ($this->object->getProvider()->getHasOutcome() && ilLPObjSettings::_lookupDBMode($this->object->getId()) != 0) {
749  $info->addSection($DIC->language()->txt("lti_info_learning_progress_section"));
750  $info->addProperty(
751  $DIC->language()->txt("mastery_score"),
752  ($this->object->getMasteryScorePercent()) . ' %'
753  );
754  }
755 
756  // LTI Ressource Info about privacy
757  $info->addSection($DIC->language()->txt("lti_info_privacy_section"));
758 
759  $info->addProperty(
760  $DIC->language()->txt("lti_con_prov_url"),
761  $this->object->getProvider()->getProviderUrl()
762  );
763 
764  $info->addProperty(
765  $DIC->language()->txt("conf_privacy_name"),
766  $DIC->language()->txt('conf_privacy_name_' . ilObjCmiXapiGUI::getPrivacyNameString($this->object->getProvider()->getPrivacyName()))
767  );
768 
769  $info->addProperty(
770  $DIC->language()->txt("conf_privacy_ident"),
771  $DIC->language()->txt('conf_privacy_ident_' . ilObjCmiXapiGUI::getPrivacyIdentString($this->object->getProvider()->getPrivacyIdent()))
772  );
773  if ($this->object->getProvider()->isExternalProvider()) {
774  $info->addProperty(
775  $DIC->language()->txt("lti_info_external_provider_label"),
776  $DIC->language()->txt('lti_info_external_provider_info')
777  );
778  }
779 
780  if ($this->object->getProvider()->getUseXapi()) {
781  $info->addProperty(
782  $DIC->language()->txt("lti_con_prov_xapi_launch_url"),
783  $this->object->getProvider()->getXapiLaunchUrl()
784  );
785  }
786 
787  // FINISHED INFO SCREEN, NOW FORWARD
788  $this->ctrl->forwardCommand($info);
789  }
790 
791  protected function handleAvailablityMessage()
792  {
793  global $DIC; /* @var \ILIAS\DI\Container $DIC */
794  if ($this->object->getProvider()->getProviderUrl() == '') {
795  ilUtil::sendFailure($DIC->language()->txt('lti_provider_not_set_msg'));
796  } elseif ($this->object->getProvider()->getAvailability() == ilLTIConsumeProvider::AVAILABILITY_NONE) {
797  ilUtil::sendFailure($DIC->language()->txt('lti_provider_not_avail_msg'));
798  }
799  }
800 }
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
Class ilObjectMetaDataGUI.
Class ilInfoScreenGUI.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
New implementation of ilObjectGUI.
GUI class for the workflow of copying objects.
const ROOT_FOLDER_ID
Definition: constants.php:30
$_GET["client_id"]
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
afterSave(ilObject $newObject)
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
fillCloneTemplate($a_tpl_varname, $a_type)
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
static _lookupTitle($a_id)
lookup object title
createObject()
create new object form
setTitle($a_title)
set object title
static updateKeywords(ilMDGeneral $a_md_section, array $a_keywords)
Update keywords from input array.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
& addGeneral()
Definition: class.ilMD.php:52
static _lookupDBMode($a_obj_id)
createNewObject($newType, $title, $description)
getId()
get object id public
static getPrivacyIdentString(int $ident)
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
static getPrivacyNameString(int $ident)
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static _lookupObjId($a_id)
static buildBasicAuth($lrsKey, $lrsSecret)
Validates if an active certificate is stored in the database and can be downloaded by the user...
global $DIC
Definition: goto.php:24
handleAutoRating(ilObject $a_new_obj)
getTitle()
get object title public
& getGeneral()
Definition: class.ilMD.php:40
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
getType()
get object type public
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
putObjectInTree(ilObject $a_obj, $a_parent_node_id=null)
Add object to tree at given position.
__construct(Container $dic, ilPlugin $plugin)
prepareOutput($a_show_subobjects=true)
getDidacticTemplateVar($a_type)
Get didactic template setting from creation screen.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
initMetadata(ilObjLTIConsumer $object)
update()
update object in db
initHeaderAction($a_sub_type=null, $a_sub_id=null)
addHeaderAction()
Add header action menu.
Class ilObjUserTrackingGUI.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call