3 declare(strict_types=1);
49 private \ILIAS\DI\Container
$dic;
57 $this->main_tpl = $DIC->ui()->mainTemplate();
63 $this->dic->tabs()->addSubTab(
64 self::SUBTAB_ID_SETTINGS,
65 $this->
language->txt(self::SUBTAB_ID_SETTINGS),
66 $this->dic->ctrl()->getLinkTarget($this, self::CMD_SHOW)
71 if ($validator->validate()) {
72 $this->dic->tabs()->addSubTab(
73 self::SUBTAB_ID_CERTIFICATE,
74 $this->
language->txt(self::SUBTAB_ID_CERTIFICATE),
75 $this->dic->ctrl()->getLinkTargetByClass([ilCmiXapiSettingsGUI::class,ilCertificateGUI::class],
'certificateEditor')
84 switch ($this->dic->ctrl()->getNextClass()) {
85 case strtolower(ilCertificateGUI::class):
89 if (!$validator->validate()) {
93 $this->dic->tabs()->activateSubTab(self::SUBTAB_ID_CERTIFICATE);
96 $gui = $guiFactory->create($this->
object);
98 $this->dic->ctrl()->forwardCommand($gui);
103 $command = $this->dic->ctrl()->getCmd(self::DEFAULT_CMD) .
'Cmd';
112 if ($form->checkInput()) {
115 $this->main_tpl->setOnScreenMessage(
'success', $this->
language->txt(
'msg_obj_modified'),
true);
116 $this->dic->ctrl()->redirect($this, self::CMD_SHOW);
124 if ($this->dic->access()->checkAccess(
"write",
"", $this->
object->getRefId())) {
125 $this->dic->tabs()->activateSubTab(self::SUBTAB_ID_SETTINGS);
127 $this->dic->ui()->mainTemplate()->setContent($form->getHTML());
129 $this->main_tpl->setOnScreenMessage(
'failure', $this->dic->language()->txt(
'permission_denied'),
false);
136 $form->setFormAction($this->dic->ctrl()->getFormAction($this));
139 $ne->setValue($this->
language->txt(
'type_' . $this->object->getContentType()));
143 $ne->setValue($this->
object->getLrsType()->getTitle());
148 $item->setMaxLength(128);
149 $item->setRequired(
true);
150 $item->setInfo($this->
language->txt(
'title_info'));
151 $item->setValue($this->
object->getTitle());
152 $form->addItem($item);
158 $item->setValue($this->
object->getDescription());
159 $form->addItem($item);
162 $item->setRequired(
true);
164 $item->setMaxLength(128);
166 $item->setInfo($this->
language->txt(
'activity_id_info'));
167 $item->setValue($this->
object->getActivityId());
168 $form->addItem($item);
171 $item->setInfo($this->
language->txt(
"online_info"));
172 $item->setValue(
"1");
173 if (!$this->
object->getOfflineStatus()) {
174 $item->setChecked(
true);
176 $form->addItem($item);
179 $lpDeterioration->setInfo($this->
language->txt(
'conf_keep_lp_info'));
180 if ($this->
object->isKeepLpStatusEnabled()) {
181 $lpDeterioration->setChecked(
true);
188 $item->setTitle($this->
language->txt(
"obj_presentation"));
189 $form->addItem($item);
192 $this->dic->object()->commonSettings()->legacyForm($form, $this->
object)->addTileImage();
194 if (!$this->
object->isSourceTypeExternal()) {
196 $item->setTitle($this->
language->txt(
"launch_options"));
197 $form->addItem($item);
199 if ($this->
object->isSourceTypeRemote()) {
202 $item->setMaxLength(128);
203 $item->setRequired(
true);
204 $item->setInfo($this->
language->txt(
'launch_url_info'));
205 $item->setValue($this->
object->getLaunchUrl());
206 $form->addItem($item);
211 $item->setInfo($this->
language->txt(
"use_fetch_info"));
212 $item->setValue(
"1");
214 if ($this->
object->isAuthFetchUrlEnabled()) {
215 $item->setChecked(
true);
217 $form->addItem($item);
222 $display->setValue($this->
object->getLaunchMethod());
225 $display->addOption($optOwnWindow);
228 $display->addOption($optAnyWindow);
229 $form->addItem($display);
233 $launchMode->setValue($this->
object->getLaunchMode());
235 $optNormal->
setInfo($this->
language->txt(
'conf_launch_mode_normal_info'));
237 $optNormal->addSubItem($lpDeterioration);
239 $launchMode->addOption($optNormal);
241 $optBrowse->
setInfo($this->
language->txt(
'conf_launch_mode_browse_info'));
242 $launchMode->addOption($optBrowse);
244 $optReview->
setInfo($this->
language->txt(
'conf_launch_mode_review_info'));
245 $launchMode->addOption($optReview);
246 $form->addItem($launchMode);
248 $form->addItem($lpDeterioration);
253 $switchMode->setInfo($this->
language->txt(
"conf_switch_to_review_info"));
254 if ($this->
object->isSwitchToReviewEnabled()) {
255 $switchMode->setChecked(
true);
258 $optNormal->addSubItem($switchMode);
261 $masteryScore->setInfo($this->
language->txt(
'conf_mastery_score_info'));
262 $masteryScore->setSuffix(
'%');
263 $masteryScore->allowDecimals(
true);
264 $masteryScore->setDecimals(2);
265 $masteryScore->setMinvalueShouldBeGreater(
false);
266 $masteryScore->setMinValue(0);
267 $masteryScore->setMaxvalueShouldBeLess(
false);
268 $masteryScore->setMaxValue(100);
269 $masteryScore->setSize(4);
270 if (empty($this->
object->getMasteryScore())) {
273 $masteryScore->setValue((
string) $this->
object->getMasteryScorePercent());
274 $optNormal->addSubItem($masteryScore);
277 if (!$this->
object->isSourceTypeExternal()) {
280 $sectionHeader->setTitle($this->
language->txt(
'privacy_options'));
281 $form->addItem($sectionHeader);
284 $useProxy->setInfo($this->
language->txt(
'conf_use_proxy_info_xapi'));
285 if ($this->
object->isBypassProxyEnabled() ==
false) {
286 $useProxy->setChecked(
true);
292 $useProxy->setChecked(
true);
293 $useProxy->setDisabled(
true);
294 $useProxy->setInfo($this->
language->txt(
'conf_use_proxy_info_cmi5'));
298 $item->setInfo($this->
language->txt(
'only_moveon_info'));
299 $item->setChecked($this->
object->getOnlyMoveon());
302 $subitem->setInfo($this->
language->txt(
'achieved_info'));
303 $subitem->setChecked($this->
object->getAchieved());
304 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
305 $subitem->setDisabled(
true);
307 $item->addSubItem($subitem);
310 $subitem->setInfo($this->
language->txt(
'answered_info'));
311 $subitem->setChecked($this->
object->getAnswered());
312 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
313 $subitem->setDisabled(
true);
315 $item->addSubItem($subitem);
318 $subitem->setInfo($this->
language->txt(
'completed_info'));
319 $subitem->setChecked($this->
object->getCompleted());
320 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
321 $subitem->setDisabled(
true);
323 $item->addSubItem($subitem);
326 $subitem->setInfo($this->
language->txt(
'failed_info'));
327 $subitem->setChecked($this->
object->getFailed());
328 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
329 $subitem->setDisabled(
true);
331 $item->addSubItem($subitem);
334 $subitem->setInfo($this->
language->txt(
'initialized_info'));
335 $subitem->setChecked($this->
object->getInitialized());
336 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
337 $subitem->setDisabled(
true);
339 $item->addSubItem($subitem);
342 $subitem->setInfo($this->
language->txt(
'passed_info'));
343 $subitem->setChecked($this->
object->getPassed());
344 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
345 $subitem->setDisabled(
true);
347 $item->addSubItem($subitem);
350 $subitem->setInfo($this->
language->txt(
'progressed_info'));
351 $subitem->setChecked($this->
object->getProgressed());
352 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
353 $subitem->setDisabled(
true);
355 $item->addSubItem($subitem);
358 $subitem->setInfo($this->
language->txt(
'satisfied_info'));
359 $subitem->setChecked($this->
object->getSatisfied());
360 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
361 $subitem->setDisabled(
true);
363 $item->addSubItem($subitem);
366 $subitem->setInfo($this->
language->txt(
'terminated_info'));
367 $subitem->setChecked($this->
object->getTerminated());
368 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
369 $subitem->setDisabled(
true);
371 $item->addSubItem($subitem);
373 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
374 $item->setDisabled(
true);
376 $useProxy->addSubItem($item);
379 $item->setInfo($this->
language->txt(
'hide_data_info'));
380 $item->setChecked($this->
object->getHideData());
383 $subitem->setInfo($this->
language->txt(
'timestamp_info'));
384 $subitem->setChecked($this->
object->getTimestamp());
385 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
386 $subitem->setDisabled(
true);
388 $item->addSubItem($subitem);
391 $subitem->setInfo($this->
language->txt(
'duration_info'));
392 $subitem->setChecked($this->
object->getDuration());
393 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
394 $subitem->setDisabled(
true);
396 $item->addSubItem($subitem);
398 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
399 $item->setDisabled(
true);
402 $useProxy->addSubItem($item);
405 $item->setInfo($this->
language->txt(
'no_substatements_info'));
406 $item->setChecked($this->
object->getNoSubstatements());
407 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
408 $item->setDisabled(
true);
410 $useProxy->addSubItem($item);
412 $form->addItem($useProxy);
417 $this->
language->txt(
'conf_privacy_ident_il_uuid_user_id'),
420 $op->
setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_user_id_info'));
421 $userIdent->addOption($op);
423 $this->
language->txt(
'conf_privacy_ident_il_uuid_login'),
426 $op->
setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_login_info'));
427 $userIdent->addOption($op);
429 $this->
language->txt(
'conf_privacy_ident_il_uuid_ext_account'),
432 $op->
setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_ext_account_info'));
433 $userIdent->addOption($op);
435 $this->
language->txt(
'conf_privacy_ident_il_uuid_sha256'),
438 $op->
setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_sha256_info'));
439 $userIdent->addOption($op);
441 $this->
language->txt(
'conf_privacy_ident_il_uuid_sha256url'),
444 $op->
setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_sha256url_info'));
445 $userIdent->addOption($op);
447 $this->
language->txt(
'conf_privacy_ident_il_uuid_random'),
450 $op->
setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_random_info'));
451 $userIdent->addOption($op);
453 $this->
language->txt(
'conf_privacy_ident_real_email'),
456 $op->
setInfo($this->
language->txt(
'conf_privacy_ident_real_email_info'));
457 $userIdent->addOption($op);
458 $userIdent->setValue((
string) $this->
object->getPrivacyIdent());
462 $userIdent->setRequired(
false);
463 $form->addItem($userIdent);
467 $this->
language->txt(
'conf_privacy_name_none'),
471 $userName->addOption($op);
473 $this->
language->txt(
'conf_privacy_name_firstname'),
476 $userName->addOption($op);
478 $this->
language->txt(
'conf_privacy_name_lastname'),
481 $userName->addOption($op);
483 $this->
language->txt(
'conf_privacy_name_fullname'),
486 $userName->addOption($op);
487 $userName->setValue((
string) $this->
object->getPrivacyName());
488 $userName->setInfo($this->
language->txt(
'conf_privacy_name_info'));
489 $userName->setRequired(
false);
490 $form->addItem($userName);
492 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
493 $userIdent->setDisabled(
true);
494 $userName->setDisabled(
true);
500 $options = [
"0",
"1",
"2",
"11",
"12"];
501 for ((
int) $i = 0; $i < count($options); $i++) {
503 $item->addOption($op);
506 $item->setInfo($this->
language->txt(
'conf_delete_data_info'));
507 $form->addItem($item);
512 $item->setTitle($this->
language->txt(
"log_options"));
513 $form->addItem($item);
516 $item->setInfo($this->
language->txt(
"show_debug_info"));
517 $item->setValue(
"1");
518 if ($this->
object->isStatementsReportEnabled()) {
519 $item->setChecked(
true);
521 $form->addItem($item);
524 $highscore->setValue(
"1");
525 $highscore->setChecked($this->
object->getHighscoreEnabled());
526 $highscore->setInfo($this->
language->txt(
"highscore_description"));
527 $form->addItem($highscore);
530 $highscore_tables->setValue((
string) $this->
object->getHighscoreMode());
532 $this->
language->txt(
'highscore_own_table'),
535 $highscore_table_own->setInfo($this->
language->txt(
'highscore_own_table_description'));
536 $highscore_tables->addOption($highscore_table_own);
538 $this->
language->txt(
'highscore_top_table'),
541 $highscore_table_other->setInfo($this->
language->txt(
'highscore_top_table_description'));
542 $highscore_tables->addOption($highscore_table_other);
544 $this->
language->txt(
'highscore_all_tables'),
547 $highscore_table_other->setInfo($this->
language->txt(
'highscore_all_tables_description'));
548 $highscore_tables->addOption($highscore_table_other);
549 $highscore->addSubItem($highscore_tables);
551 $highscore_top_num->setSize(4);
552 $highscore_top_num->setRequired(
true);
553 $highscore_top_num->setMinValue(1);
554 $highscore_top_num->setSuffix($this->
language->txt(
"highscore_top_num_unit"));
555 $highscore_top_num->setValue((
string) $this->
object->getHighscoreTopNum(null));
556 $highscore_top_num->setInfo($this->
language->txt(
"highscore_top_num_description"));
557 $highscore->addSubItem($highscore_top_num);
559 $highscore_achieved_ts->setValue(
"1");
560 $highscore_achieved_ts->setChecked($this->
object->getHighscoreAchievedTS());
561 $highscore_achieved_ts->setInfo($this->
language->txt(
"highscore_achieved_ts_description"));
562 $highscore->addSubItem($highscore_achieved_ts);
564 $highscore_percentage->setValue(
"1");
565 $highscore_percentage->setChecked($this->
object->getHighscorePercentage());
566 $highscore_percentage->setInfo($this->
language->txt(
"highscore_percentage_description"));
567 $highscore->addSubItem($highscore_percentage);
569 $highscore_wtime->setValue(
"1");
570 $highscore_wtime->setChecked($this->
object->getHighscoreWTime());
571 $highscore_wtime->setInfo($this->
language->txt(
"highscore_wtime_description"));
572 $highscore->addSubItem($highscore_wtime);
575 $form->setTitle($this->
language->txt(
'settings'));
576 $form->addCommandButton(self::CMD_SAVE, $this->
language->txt(
"save"));
577 $form->addCommandButton(self::CMD_SHOW, $this->
language->txt(
"cancel"));
584 $this->
object->setTitle($form->
getInput(
'title'));
585 $this->
object->setDescription($form->
getInput(
'description'));
587 $this->
object->setActivityId($form->
getInput(
'activity_id'));
588 $this->
object->setOfflineStatus(!(
bool) $form->
getInput(
'online'));
590 if (!$this->
object->isSourceTypeExternal()) {
591 $this->
object->setLaunchMethod($form->
getInput(
'display'));
593 $this->
object->setLaunchMode($form->
getInput(
'launch_mode'));
597 $this->
object->setMasteryScorePercent($form->
getInput(
'mastery_score'));
599 $this->
object->setKeepLpStatusEnabled((
bool) $form->
getInput(
'avoid_lp_deterioration'));
600 $this->
object->setSwitchToReviewEnabled((
bool) $form->
getInput(
'switch_to_review'));
602 $this->
object->setKeepLpStatusEnabled(
true);
603 $this->
object->setSwitchToReviewEnabled(
false);
606 if ($this->
object->isSourceTypeRemote()) {
607 $this->
object->setLaunchUrl($form->
getInput(
'launch_url'));
611 $this->
object->setAuthFetchUrlEnabled(
true);
613 $this->
object->setAuthFetchUrlEnabled((
bool) $form->
getInput(
'use_fetch'));
617 $this->
object->setBypassProxyEnabled(
false);
620 if ((
bool) $form->
getInput(
"use_proxy") ==
false) {
621 $this->
object->setBypassProxyEnabled(
true);
623 $this->
object->setBypassProxyEnabled(
false);
627 if (!$this->
object->getLrsType()->getForcePrivacySettings()) {
628 $this->
object->setPrivacyIdent((
int) $form->
getInput(
'privacy_ident'));
629 $this->
object->setPrivacyName((
int) $form->
getInput(
'privacy_name'));
630 $this->
object->setOnlyMoveon((
bool) $form->
getInput(
"only_moveon"));
631 $this->
object->setAchieved((
bool) $form->
getInput(
"achieved"));
632 $this->
object->setAnswered((
bool) $form->
getInput(
"answered"));
633 $this->
object->setCompleted((
bool) $form->
getInput(
"completed"));
634 $this->
object->setFailed((
bool) $form->
getInput(
"failed"));
635 $this->
object->setInitialized((
bool) $form->
getInput(
"initialized"));
636 $this->
object->setPassed((
bool) $form->
getInput(
"passed"));
637 $this->
object->setProgressed((
bool) $form->
getInput(
"progressed"));
639 $this->
object->setSatisfied(
true);
640 $this->
object->setTerminated(
true);
642 $this->
object->setSatisfied((
bool) $form->
getInput(
"satisfied"));
643 $this->
object->setTerminated((
bool) $form->
getInput(
"terminated"));
645 $this->
object->setHideData((
bool) $form->
getInput(
"hide_data"));
646 $this->
object->setTimestamp((
bool) $form->
getInput(
"timestamp"));
647 $this->
object->setDuration((
bool) $form->
getInput(
"duration"));
648 $this->
object->setNoSubstatements((
bool) $form->
getInput(
"no_substatements"));
649 $this->
object->setDeleteData((
int) $form->
getInput(
"delete_data"));
652 $this->
object->setBypassProxyEnabled(
true);
653 $this->
object->setKeepLpStatusEnabled((
bool) $form->
getInput(
'avoid_lp_deterioration'));
656 $this->
object->setStatementsReportEnabled((
bool) $form->
getInput(
'show_debug'));
658 $this->
object->setHighscoreEnabled((
bool) $form->
getInput(
'highscore_enabled'));
659 if ($this->
object->getHighscoreEnabled()) {
661 $this->
object->setHighscoreEnabled((
bool) $form->
getInput(
'highscore_enabled'));
662 $this->
object->setHighscoreAchievedTS((
bool) $form->
getInput(
'highscore_achieved_ts'));
663 $this->
object->setHighscorePercentage((
bool) $form->
getInput(
'highscore_percentage'));
664 $this->
object->setHighscoreWTime((
bool) $form->
getInput(
'highscore_wtime'));
665 $this->
object->setHighscoreMode((
int) $form->
getInput(
'highscore_mode'));
666 $this->
object->setHighscoreTopNum((
int) $form->
getInput(
'highscore_top_num'));
670 $this->dic->object()->commonSettings()->legacyForm($form, $this->
object)->saveTileImage();
672 $this->
object->update();
679 if (!$validator->isCertificateDownloadable((
int) $this->dic->user()->getId(), $this->
object->getId())) {
680 $this->main_tpl->setOnScreenMessage(
'failure', $this->
language->txt(
"permission_denied"),
true);
686 $certLogger = $this->dic->logger()->root();
692 $this->
language->txt(
'error_creating_certificate_pdf')
695 $pdfAction->
downloadPdf((
int) $this->dic->user()->getId(), $this->
object->getId());
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const PRIVACY_IDENT_REAL_EMAIL
const HIGHSCORE_SHOW_OWN_TABLE
__construct(ilObjCmiXapi $object)
const LAUNCH_METHOD_NEW_WIN
const PRIVACY_NAME_FULLNAME
const PRIVACY_NAME_LASTNAME
const CMD_DELIVER_CERTIFICATE
const PRIVACY_IDENT_IL_UUID_USER_ID
setValue(string $a_value)
const LAUNCH_METHOD_OWN_WIN
Validates if an active certificate is stored in the database and can be downloaded by the user...
const PRIVACY_IDENT_IL_UUID_SHA256URL
const SUBTAB_ID_CERTIFICATE
saveSettings(ilPropertyFormGUI $form)
const HIGHSCORE_SHOW_ALL_TABLES
This class represents a text area property in a property form.
const PRIVACY_IDENT_IL_UUID_EXT_ACCOUNT
const PRIVACY_IDENT_IL_UUID_SHA256
showCmd(ilPropertyFormGUI $form=null)
const PRIVACY_IDENT_IL_UUID_RANDOM
language()
description: > Example for rendring a language glyph.
ilGlobalTemplateInterface $main_tpl
const PRIVACY_NAME_FIRSTNAME
const HIGHSCORE_SHOW_TOP_TABLE
const PRIVACY_IDENT_IL_UUID_LOGIN
downloadPdf(int $userId, int $objectId)