19declare(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);
155 $item->setInfo($this->
language->txt(
'description_info'));
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);
221 $display->setRequired(
true);
222 $display->setValue($this->
object->getLaunchMethod());
224 $optOwnWindow->setInfo($this->
language->txt(
'conf_own_window_info'));
225 $display->addOption($optOwnWindow);
227 $optAnyWindow->setInfo($this->
language->txt(
'conf_new_window_info'));
228 $display->addOption($optAnyWindow);
229 $form->addItem($display);
232 $launchMode->setRequired(
true);
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()) {
279 $sectionHeader->setTitle($this->
language->txt(
'privacy_options'));
280 $form->addItem($sectionHeader);
283 $useProxy->setInfo($this->
language->txt(
'conf_use_proxy_info_xapi'));
284 if ($this->
object->isBypassProxyEnabled() ==
false) {
285 $useProxy->setChecked(
true);
288 $useProxy->setChecked(
true);
289 $useProxy->setDisabled(
true);
290 $useProxy->setInfo($this->
language->txt(
'conf_use_proxy_info_cmi5'));
294 $item->setInfo($this->
language->txt(
'only_moveon_info'));
295 $item->setChecked($this->
object->getOnlyMoveon());
298 $subitem->setInfo($this->
language->txt(
'achieved_info'));
299 $subitem->setChecked($this->
object->getAchieved());
300 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
301 $subitem->setDisabled(
true);
303 $item->addSubItem($subitem);
306 $subitem->setInfo($this->
language->txt(
'answered_info'));
307 $subitem->setChecked($this->
object->getAnswered());
308 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
309 $subitem->setDisabled(
true);
311 $item->addSubItem($subitem);
314 $subitem->setInfo($this->
language->txt(
'completed_info'));
315 $subitem->setChecked($this->
object->getCompleted());
316 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
317 $subitem->setDisabled(
true);
319 $item->addSubItem($subitem);
322 $subitem->setInfo($this->
language->txt(
'failed_info'));
323 $subitem->setChecked($this->
object->getFailed());
324 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
325 $subitem->setDisabled(
true);
327 $item->addSubItem($subitem);
330 $subitem->setInfo($this->
language->txt(
'initialized_info'));
331 $subitem->setChecked($this->
object->getInitialized());
332 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
333 $subitem->setDisabled(
true);
335 $item->addSubItem($subitem);
338 $subitem->setInfo($this->
language->txt(
'passed_info'));
339 $subitem->setChecked($this->
object->getPassed());
340 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
341 $subitem->setDisabled(
true);
343 $item->addSubItem($subitem);
346 $subitem->setInfo($this->
language->txt(
'progressed_info'));
347 $subitem->setChecked($this->
object->getProgressed());
348 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
349 $subitem->setDisabled(
true);
351 $item->addSubItem($subitem);
354 $subitem->setInfo($this->
language->txt(
'satisfied_info'));
355 $subitem->setChecked($this->
object->getSatisfied());
356 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
357 $subitem->setDisabled(
true);
359 $item->addSubItem($subitem);
362 $subitem->setInfo($this->
language->txt(
'terminated_info'));
363 $subitem->setChecked($this->
object->getTerminated());
364 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
365 $subitem->setDisabled(
true);
367 $item->addSubItem($subitem);
369 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
370 $item->setDisabled(
true);
372 $useProxy->addSubItem($item);
375 $item->setInfo($this->
language->txt(
'hide_data_info'));
376 $item->setChecked($this->
object->getHideData());
379 $subitem->setInfo($this->
language->txt(
'timestamp_info'));
380 $subitem->setChecked($this->
object->getTimestamp());
381 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
382 $subitem->setDisabled(
true);
384 $item->addSubItem($subitem);
387 $subitem->setInfo($this->
language->txt(
'duration_info'));
388 $subitem->setChecked($this->
object->getDuration());
389 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
390 $subitem->setDisabled(
true);
392 $item->addSubItem($subitem);
394 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
395 $item->setDisabled(
true);
397 $useProxy->addSubItem($item);
400 $item->setInfo($this->
language->txt(
'no_substatements_info'));
401 $item->setChecked($this->
object->getNoSubstatements());
402 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
403 $item->setDisabled(
true);
405 $useProxy->addSubItem($item);
407 $form->addItem($useProxy);
412 $this->
language->txt(
'conf_privacy_ident_il_uuid_user_id'),
415 $op->setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_user_id_info'));
416 $userIdent->addOption($op);
418 $this->
language->txt(
'conf_privacy_ident_il_uuid_login'),
421 $op->setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_login_info'));
422 $userIdent->addOption($op);
424 $this->
language->txt(
'conf_privacy_ident_il_uuid_ext_account'),
427 $op->setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_ext_account_info'));
428 $userIdent->addOption($op);
430 $this->
language->txt(
'conf_privacy_ident_il_uuid_sha256'),
433 $op->setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_sha256_info'));
434 $userIdent->addOption($op);
436 $this->
language->txt(
'conf_privacy_ident_il_uuid_sha256url'),
439 $op->setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_sha256url_info'));
440 $userIdent->addOption($op);
442 $this->
language->txt(
'conf_privacy_ident_il_uuid_random'),
445 $op->setInfo($this->
language->txt(
'conf_privacy_ident_il_uuid_random_info'));
446 $userIdent->addOption($op);
448 $this->
language->txt(
'conf_privacy_ident_real_email'),
451 $op->setInfo($this->
language->txt(
'conf_privacy_ident_real_email_info'));
452 $userIdent->addOption($op);
453 $userIdent->setValue((
string) $this->
object->getPrivacyIdent());
457 $userIdent->setRequired(
false);
458 $form->addItem($userIdent);
462 $this->
language->txt(
'conf_privacy_name_none'),
465 $op->setInfo($this->
language->txt(
'conf_privacy_name_none_info'));
466 $userName->addOption($op);
468 $this->
language->txt(
'conf_privacy_name_firstname'),
471 $userName->addOption($op);
473 $this->
language->txt(
'conf_privacy_name_lastname'),
476 $userName->addOption($op);
478 $this->
language->txt(
'conf_privacy_name_fullname'),
481 $userName->addOption($op);
482 $userName->setValue((
string) $this->
object->getPrivacyName());
483 $userName->setInfo($this->
language->txt(
'conf_privacy_name_info'));
484 $userName->setRequired(
false);
485 $form->addItem($userName);
487 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
488 $userIdent->setDisabled(
true);
489 $userName->setDisabled(
true);
494 $item->setInfo($this->
language->txt(
'enrich_data_info'));
495 $item->setChecked($this->
object->getEnrichData());
496 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
497 $item->setDisabled(
true);
499 $form->addItem($item);
506 for ((
int) $i = 0; $i < count(
$options); $i++) {
508 $item->addOption($op);
510 $item->setValue((
string) $this->
object->getDeleteData());
511 $item->setInfo($this->
language->txt(
'conf_delete_data_info'));
512 if ($this->
object->getLrsType()->getForcePrivacySettings()) {
513 $item->setDisabled(
true);
515 $form->addItem($item);
520 $item->setTitle($this->
language->txt(
"log_options"));
521 $form->addItem($item);
524 $item->setInfo($this->
language->txt(
"show_debug_info"));
525 $item->setValue(
"1");
526 if ($this->
object->isStatementsReportEnabled()) {
527 $item->setChecked(
true);
529 $form->addItem($item);
532 $highscore->setValue(
"1");
533 $highscore->setChecked($this->
object->getHighscoreEnabled());
534 $highscore->setInfo($this->
language->txt(
"highscore_description"));
535 $form->addItem($highscore);
537 $highscore_tables->setRequired(
true);
538 $highscore_tables->setValue((
string) $this->
object->getHighscoreMode());
540 $this->
language->txt(
'highscore_own_table'),
543 $highscore_table_own->setInfo($this->
language->txt(
'highscore_own_table_description'));
544 $highscore_tables->addOption($highscore_table_own);
546 $this->
language->txt(
'highscore_top_table'),
549 $highscore_table_other->setInfo($this->
language->txt(
'highscore_top_table_description'));
550 $highscore_tables->addOption($highscore_table_other);
552 $this->
language->txt(
'highscore_all_tables'),
555 $highscore_table_other->setInfo($this->
language->txt(
'highscore_all_tables_description'));
556 $highscore_tables->addOption($highscore_table_other);
557 $highscore->addSubItem($highscore_tables);
559 $highscore_top_num->setSize(4);
560 $highscore_top_num->setRequired(
true);
561 $highscore_top_num->setMinValue(1);
562 $highscore_top_num->setSuffix($this->
language->txt(
"highscore_top_num_unit"));
563 $highscore_top_num->setValue((
string) $this->
object->getHighscoreTopNum(
null));
564 $highscore_top_num->setInfo($this->
language->txt(
"highscore_top_num_description"));
565 $highscore->addSubItem($highscore_top_num);
567 $highscore_achieved_ts->setValue(
"1");
568 $highscore_achieved_ts->setChecked($this->
object->getHighscoreAchievedTS());
569 $highscore_achieved_ts->setInfo($this->
language->txt(
"highscore_achieved_ts_description"));
570 $highscore->addSubItem($highscore_achieved_ts);
572 $highscore_percentage->setValue(
"1");
573 $highscore_percentage->setChecked($this->
object->getHighscorePercentage());
574 $highscore_percentage->setInfo($this->
language->txt(
"highscore_percentage_description"));
575 $highscore->addSubItem($highscore_percentage);
577 $highscore_wtime->setValue(
"1");
578 $highscore_wtime->setChecked($this->
object->getHighscoreWTime());
579 $highscore_wtime->setInfo($this->
language->txt(
"highscore_wtime_description"));
580 $highscore->addSubItem($highscore_wtime);
583 $form->setTitle($this->
language->txt(
'settings'));
584 $form->addCommandButton(self::CMD_SAVE, $this->
language->txt(
"save"));
585 $form->addCommandButton(self::CMD_SHOW, $this->
language->txt(
"cancel"));
592 $this->
object->setTitle($form->
getInput(
'title'));
593 $this->
object->setDescription($form->
getInput(
'description'));
595 $this->
object->setActivityId($form->
getInput(
'activity_id'));
596 $this->
object->setOfflineStatus(!(
bool) $form->
getInput(
'online'));
598 if (!$this->
object->isSourceTypeExternal()) {
599 $this->
object->setLaunchMethod($form->
getInput(
'display'));
601 $this->
object->setLaunchMode($form->
getInput(
'launch_mode'));
605 $this->
object->setMasteryScorePercent($form->
getInput(
'mastery_score'));
607 $this->
object->setKeepLpStatusEnabled((
bool) $form->
getInput(
'avoid_lp_deterioration'));
608 $this->
object->setSwitchToReviewEnabled((
bool) $form->
getInput(
'switch_to_review'));
610 $this->
object->setKeepLpStatusEnabled(
true);
611 $this->
object->setSwitchToReviewEnabled(
false);
614 if ($this->
object->isSourceTypeRemote()) {
615 $this->
object->setLaunchUrl($form->
getInput(
'launch_url'));
619 $this->
object->setAuthFetchUrlEnabled(
true);
621 $this->
object->setAuthFetchUrlEnabled((
bool) $form->
getInput(
'use_fetch'));
625 $this->
object->setBypassProxyEnabled(
false);
628 if ((
bool) $form->
getInput(
"use_proxy") ==
false) {
629 $this->
object->setBypassProxyEnabled(
true);
631 $this->
object->setBypassProxyEnabled(
false);
635 if (!$this->
object->getLrsType()->getForcePrivacySettings()) {
636 $this->
object->setPrivacyIdent((
int) $form->
getInput(
'privacy_ident'));
637 $this->
object->setPrivacyName((
int) $form->
getInput(
'privacy_name'));
638 $this->
object->setOnlyMoveon((
bool) $form->
getInput(
"only_moveon"));
639 $this->
object->setAchieved((
bool) $form->
getInput(
"achieved"));
640 $this->
object->setAnswered((
bool) $form->
getInput(
"answered"));
641 $this->
object->setCompleted((
bool) $form->
getInput(
"completed"));
642 $this->
object->setFailed((
bool) $form->
getInput(
"failed"));
643 $this->
object->setInitialized((
bool) $form->
getInput(
"initialized"));
644 $this->
object->setPassed((
bool) $form->
getInput(
"passed"));
645 $this->
object->setProgressed((
bool) $form->
getInput(
"progressed"));
647 $this->
object->setSatisfied(
true);
648 $this->
object->setTerminated(
true);
650 $this->
object->setSatisfied((
bool) $form->
getInput(
"satisfied"));
651 $this->
object->setTerminated((
bool) $form->
getInput(
"terminated"));
653 $this->
object->setHideData((
bool) $form->
getInput(
"hide_data"));
654 $this->
object->setTimestamp((
bool) $form->
getInput(
"timestamp"));
655 $this->
object->setDuration((
bool) $form->
getInput(
"duration"));
656 $this->
object->setNoSubstatements((
bool) $form->
getInput(
"no_substatements"));
657 $this->
object->setDeleteData((
int) $form->
getInput(
"delete_data"));
658 $this->
object->setEnrichData((
bool) $form->
getInput(
"enrich_data"));
661 $this->
object->setBypassProxyEnabled(
true);
662 $this->
object->setKeepLpStatusEnabled((
bool) $form->
getInput(
'avoid_lp_deterioration'));
665 $this->
object->setStatementsReportEnabled((
bool) $form->
getInput(
'show_debug'));
667 $this->
object->setHighscoreEnabled((
bool) $form->
getInput(
'highscore_enabled'));
668 if ($this->
object->getHighscoreEnabled()) {
670 $this->
object->setHighscoreEnabled((
bool) $form->
getInput(
'highscore_enabled'));
671 $this->
object->setHighscoreAchievedTS((
bool) $form->
getInput(
'highscore_achieved_ts'));
672 $this->
object->setHighscorePercentage((
bool) $form->
getInput(
'highscore_percentage'));
673 $this->
object->setHighscoreWTime((
bool) $form->
getInput(
'highscore_wtime'));
674 $this->
object->setHighscoreMode((
int) $form->
getInput(
'highscore_mode'));
675 $this->
object->setHighscoreTopNum((
int) $form->
getInput(
'highscore_top_num'));
679 $this->dic->object()->commonSettings()->legacyForm($form, $this->
object)->saveTileImage();
681 $this->
object->update();
688 if (!$validator->isCertificateDownloadable((
int) $this->dic->user()->getId(), $this->object->getId())) {
689 $this->main_tpl->setOnScreenMessage(
'failure', $this->
language->txt(
"permission_denied"),
true);
695 $certLogger = $this->dic->logger()->root();
701 $this->
language->txt(
'error_creating_certificate_pdf')
704 $pdfAction->downloadPdf((
int) $this->dic->user()->getId(), $this->object->getId());
Validates if an active certificate is stored in the database and can be downloaded by the user.
Just a wrapper class to create Unit Test for other classes.
const PRIVACY_NAME_FULLNAME
const PRIVACY_IDENT_IL_UUID_SHA256
const PRIVACY_NAME_FIRSTNAME
const PRIVACY_IDENT_IL_UUID_LOGIN
const PRIVACY_IDENT_IL_UUID_USER_ID
const PRIVACY_NAME_LASTNAME
const PRIVACY_IDENT_REAL_EMAIL
const PRIVACY_IDENT_IL_UUID_SHA256URL
const PRIVACY_IDENT_IL_UUID_EXT_ACCOUNT
const PRIVACY_IDENT_IL_UUID_RANDOM
ilGlobalTemplateInterface $main_tpl
const SUBTAB_ID_CERTIFICATE
showCmd(?ilPropertyFormGUI $form=null)
const CMD_DELIVER_CERTIFICATE
saveSettings(ilPropertyFormGUI $form)
__construct(ilObjCmiXapi $object)
This class represents a non editable value in a property form.
const LAUNCH_METHOD_NEW_WIN
const HIGHSCORE_SHOW_ALL_TABLES
const HIGHSCORE_SHOW_TOP_TABLE
const HIGHSCORE_SHOW_OWN_TABLE
const LAUNCH_METHOD_OWN_WIN
This class represents an option in a radio group.
This class represents a text area property in a property form.
This class represents a text property in a property form.