ILIAS  release_7 Revision v7.30-3-g800a261c036
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
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}
$_GET["client_id"]
An exception for terminatinating execution or to throw for unit testing.
Validates if an active certificate is stored in the database and can be downloaded by the user.
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.
static buildBasicAuth($lrsKey, $lrsSecret)
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Class ilInfoScreenGUI.
static _lookupDBMode($a_obj_id)
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
Class ilObjUserTrackingGUI.
static updateKeywords(ilMDGeneral $a_md_section, array $a_keywords)
Update keywords from input array.
static getPrivacyNameString(int $ident)
static getPrivacyIdentString(int $ident)
getType()
Functions that must be overwritten.
initHeaderAction($a_sub_type=null, $a_sub_id=null)
Add header action menu.
addLocatorItems()
Functions to be overwritten.
initMetadata(ilObjLTIConsumer $object)
createNewObject($newType, $title, $description)
afterSave(ilObject $newObject)
Post (successful) object creation hook.
setTabs()
create tabs (repository/workspace switch)
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
Constructor.
initCreationForms($a_new_type)
Init creation froms.
initCreateForm($a_new_type)
Init object creation form.
New implementation of ilObjectGUI.
handleAutoRating(ilObject $a_new_obj)
fillCloneTemplate($a_tpl_varname, $a_type)
Fill object clone template This method can be called from any object GUI class that wants to offer ob...
prepareOutput($a_show_subobjects=true)
prepare output
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
putObjectInTree(ilObject $a_obj, $a_parent_node_id=null)
Add object to tree at given position.
GUI class for the workflow of copying objects.
getDidacticTemplateVar($a_type)
Get didactic template setting from creation screen.
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
addHeaderAction()
Add header action menu.
createObject()
create new object form
Class ilObjectMetaDataGUI.
Class ilObject Basic functions for all objects.
getType()
get object type @access public
static _lookupObjId($a_id)
update()
update object in db
static _lookupTitle($a_id)
lookup object title
setTitle($a_title)
set object title
getTitle()
get object title @access public
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
ILIAS Setting Class.
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
const ROOT_FOLDER_ID
Definition: constants.php:30
global $DIC
Definition: goto.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc