ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
class.ilCmiXapiSettingsGUI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
33{
34 public const CMD_SHOW = 'show';
35 public const CMD_DELIVER_CERTIFICATE = 'deliverCertificate';
36
37 public const CMD_SAVE = 'save';
38
40
41 public const SUBTAB_ID_SETTINGS = 'settings';
42 public const SUBTAB_ID_CERTIFICATE = 'certificate';
43
48 private \ilGlobalTemplateInterface $main_tpl;
49 private \ILIAS\DI\Container $dic;
51
53 {
54 global $DIC;
55 $this->dic = $DIC;
56 $this->language = $DIC->language();
57 $this->main_tpl = $DIC->ui()->mainTemplate();
58 $this->object = $object;
59 }
60
61 public function initSubtabs(): void
62 {
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)
67 );
68
69 $validator = new ilCertificateActiveValidator();
70
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')
76 );
77 }
78 }
79
80 public function executeCommand(): void
81 {
82 $this->initSubtabs();
83
84 switch ($this->dic->ctrl()->getNextClass()) {
85 case strtolower(ilCertificateGUI::class):
86
87 $validator = new ilCertificateActiveValidator();
88
89 if (!$validator->validate()) {
90 throw new ilCmiXapiException('access denied!');
91 }
92
93 $this->dic->tabs()->activateSubTab(self::SUBTAB_ID_CERTIFICATE);
94
95 $guiFactory = new ilCertificateGUIFactory();
96 $gui = $guiFactory->create($this->object);
97
98 $this->dic->ctrl()->forwardCommand($gui);
99
100 break;
101
102 default:
103 $command = $this->dic->ctrl()->getCmd(self::DEFAULT_CMD) . 'Cmd';
104 $this->{$command}();
105 }
106 }
107
108 protected function saveCmd(): void
109 {
110 $form = $this->buildForm();
111
112 if ($form->checkInput()) {
113 $this->saveSettings($form);
114
115 $this->main_tpl->setOnScreenMessage('success', $this->language->txt('msg_obj_modified'), true);
116 $this->dic->ctrl()->redirect($this, self::CMD_SHOW);
117 }
118
119 $this->showCmd($form);
120 }
121
122 protected function showCmd(?ilPropertyFormGUI $form = null): void
123 {
124 if ($this->dic->access()->checkAccess("write", "", $this->object->getRefId())) {
125 $this->dic->tabs()->activateSubTab(self::SUBTAB_ID_SETTINGS);
126 $form = $this->buildForm();
127 $this->dic->ui()->mainTemplate()->setContent($form->getHTML());
128 } else {
129 $this->main_tpl->setOnScreenMessage('failure', $this->dic->language()->txt('permission_denied'), false);
130 }
131 }
132
133 protected function buildForm(): \ilPropertyFormGUI
134 {
135 $form = new ilPropertyFormGUI();
136 $form->setFormAction($this->dic->ctrl()->getFormAction($this));
137
138 $ne = new ilNonEditableValueGUI($this->language->txt('type'), "");
139 $ne->setValue($this->language->txt('type_' . $this->object->getContentType()));
140 $form->addItem($ne);
141
142 $ne = new ilNonEditableValueGUI($this->language->txt('cmix_lrs_type'), "");
143 $ne->setValue($this->object->getLrsType()->getTitle());
144 $form->addItem($ne);
145
146 $item = new ilTextInputGUI($this->language->txt('title'), 'title');
147 $item->setSize(40);
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);
153
154 $item = new ilTextAreaInputGUI($this->language->txt('description'), 'description');
155 $item->setInfo($this->language->txt('description_info'));
156 $item->setRows(2);
157 $item->setCols(80);
158 $item->setValue($this->object->getDescription());
159 $form->addItem($item);
160
161 $item = new ilTextInputGUI($this->language->txt('activity_id'), 'activity_id');
162 $item->setRequired(true);
163 $item->setSize(40);
164 $item->setMaxLength(128);
165 // $item->setRequired(true);
166 $item->setInfo($this->language->txt('activity_id_info'));
167 $item->setValue($this->object->getActivityId());
168 $form->addItem($item);
169
170 $item = new ilCheckboxInputGUI($this->language->txt('online'), 'online');
171 $item->setInfo($this->language->txt("online_info"));
172 $item->setValue("1");
173 if (!$this->object->getOfflineStatus()) {
174 $item->setChecked(true);
175 }
176 $form->addItem($item);
177
178 $lpDeterioration = new ilCheckboxInputGUI($this->language->txt('conf_keep_lp'), 'avoid_lp_deterioration');
179 $lpDeterioration->setInfo($this->language->txt('conf_keep_lp_info'));
180 if ($this->object->isKeepLpStatusEnabled()) {
181 $lpDeterioration->setChecked(true);
182 }
183
184 //
185 // presentation
186 //
187 $item = new ilFormSectionHeaderGUI();
188 $item->setTitle($this->language->txt("obj_presentation"));
189 $form->addItem($item);
190
191 // tile image
192 $this->dic->object()->commonSettings()->legacyForm($form, $this->object)->addTileImage();
193
194 if (!$this->object->isSourceTypeExternal()) {
195 $item = new ilFormSectionHeaderGUI();
196 $item->setTitle($this->language->txt("launch_options"));
197 $form->addItem($item);
198
199 if ($this->object->isSourceTypeRemote()) {
200 $item = new ilTextInputGUI($this->language->txt('launch_url'), 'launch_url');
201 $item->setSize(40);
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);
207 }
208
209 if ($this->object->getContentType() != ilObjCmiXapi::CONT_TYPE_CMI5) {
210 $item = new ilCheckboxInputGUI($this->language->txt('use_fetch'), 'use_fetch');
211 $item->setInfo($this->language->txt("use_fetch_info"));
212 $item->setValue("1");
213
214 if ($this->object->isAuthFetchUrlEnabled()) {
215 $item->setChecked(true);
216 }
217 $form->addItem($item);
218 }
219
220 $display = new ilRadioGroupInputGUI($this->language->txt('launch_options'), 'display');
221 $display->setRequired(true);
222 $display->setValue($this->object->getLaunchMethod());
223 $optOwnWindow = new ilRadioOption($this->language->txt('conf_own_window'), ilObjCmiXapi::LAUNCH_METHOD_OWN_WIN);
224 $optOwnWindow->setInfo($this->language->txt('conf_own_window_info'));
225 $display->addOption($optOwnWindow);
226 $optAnyWindow = new ilRadioOption($this->language->txt('conf_new_window'), ilObjCmiXapi::LAUNCH_METHOD_NEW_WIN);
227 $optAnyWindow->setInfo($this->language->txt('conf_new_window_info'));
228 $display->addOption($optAnyWindow);
229 $form->addItem($display);
230
231 $launchMode = new ilRadioGroupInputGUI($this->language->txt('conf_launch_mode'), 'launch_mode');
232 $launchMode->setRequired(true);
233 $launchMode->setValue($this->object->getLaunchMode());
234 $optNormal = new ilRadioOption($this->language->txt('conf_launch_mode_normal'), ilObjCmiXapi::LAUNCH_MODE_NORMAL);
235 $optNormal->setInfo($this->language->txt('conf_launch_mode_normal_info'));
236
237 $optNormal->addSubItem($lpDeterioration);
238
239 $launchMode->addOption($optNormal);
240 $optBrowse = new ilRadioOption($this->language->txt('conf_launch_mode_browse'), ilObjCmiXapi::LAUNCH_MODE_BROWSE);
241 $optBrowse->setInfo($this->language->txt('conf_launch_mode_browse_info'));
242 $launchMode->addOption($optBrowse);
243 $optReview = new ilRadioOption($this->language->txt('conf_launch_mode_review'), ilObjCmiXapi::LAUNCH_MODE_REVIEW);
244 $optReview->setInfo($this->language->txt('conf_launch_mode_review_info'));
245 $launchMode->addOption($optReview);
246 $form->addItem($launchMode);
247 } else {
248 $form->addItem($lpDeterioration);
249 }
250
251 if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
252 $switchMode = new ilCheckboxInputGUI($this->language->txt('conf_switch_to_review'), 'switch_to_review');
253 $switchMode->setInfo($this->language->txt("conf_switch_to_review_info"));
254 if ($this->object->isSwitchToReviewEnabled()) {
255 $switchMode->setChecked(true);
256 }
257 // optNormal not undefined because CONT_TYPE_CMI5 is subtype
258 $optNormal->addSubItem($switchMode);
259
260 $masteryScore = new ilNumberInputGUI($this->language->txt('conf_mastery_score'), 'mastery_score');
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())) {
271 $this->object->setMasteryScorePercent(ilObjCmiXapi::LMS_MASTERY_SCORE);
272 }
273 $masteryScore->setValue((string) $this->object->getMasteryScorePercent());
274 $optNormal->addSubItem($masteryScore);
275 }
276
277 if (!$this->object->isSourceTypeExternal()) {
278 $sectionHeader = new ilFormSectionHeaderGUI();
279 $sectionHeader->setTitle($this->language->txt('privacy_options'));
280 $form->addItem($sectionHeader);
281
282 $useProxy = new ilCheckboxInputGUI($this->language->txt('conf_use_proxy'), 'use_proxy');
283 $useProxy->setInfo($this->language->txt('conf_use_proxy_info_xapi'));
284 if ($this->object->isBypassProxyEnabled() == false) {
285 $useProxy->setChecked(true);
286 }
287 if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
288 $useProxy->setChecked(true);
289 $useProxy->setDisabled(true);
290 $useProxy->setInfo($this->language->txt('conf_use_proxy_info_cmi5'));
291 }
292
293 $item = new ilCheckboxInputGUI($this->language->txt('only_moveon_label'), 'only_moveon');
294 $item->setInfo($this->language->txt('only_moveon_info'));
295 $item->setChecked($this->object->getOnlyMoveon());
296
297 $subitem = new ilCheckboxInputGUI($this->language->txt('achieved_label'), 'achieved');
298 $subitem->setInfo($this->language->txt('achieved_info'));
299 $subitem->setChecked($this->object->getAchieved());
300 if ($this->object->getLrsType()->getForcePrivacySettings()) {
301 $subitem->setDisabled(true);
302 }
303 $item->addSubItem($subitem);
304
305 $subitem = new ilCheckboxInputGUI($this->language->txt('answered_label'), 'answered');
306 $subitem->setInfo($this->language->txt('answered_info'));
307 $subitem->setChecked($this->object->getAnswered());
308 if ($this->object->getLrsType()->getForcePrivacySettings()) {
309 $subitem->setDisabled(true);
310 }
311 $item->addSubItem($subitem);
312
313 $subitem = new ilCheckboxInputGUI($this->language->txt('completed_label'), 'completed');
314 $subitem->setInfo($this->language->txt('completed_info'));
315 $subitem->setChecked($this->object->getCompleted());
316 if ($this->object->getLrsType()->getForcePrivacySettings()) {
317 $subitem->setDisabled(true);
318 }
319 $item->addSubItem($subitem);
320
321 $subitem = new ilCheckboxInputGUI($this->language->txt('failed_label'), 'failed');
322 $subitem->setInfo($this->language->txt('failed_info'));
323 $subitem->setChecked($this->object->getFailed());
324 if ($this->object->getLrsType()->getForcePrivacySettings()) {
325 $subitem->setDisabled(true);
326 }
327 $item->addSubItem($subitem);
328
329 $subitem = new ilCheckboxInputGUI($this->language->txt('initialized_label'), 'initialized');
330 $subitem->setInfo($this->language->txt('initialized_info'));
331 $subitem->setChecked($this->object->getInitialized());
332 if ($this->object->getLrsType()->getForcePrivacySettings()) {
333 $subitem->setDisabled(true);
334 }
335 $item->addSubItem($subitem);
336
337 $subitem = new ilCheckboxInputGUI($this->language->txt('passed_label'), 'passed');
338 $subitem->setInfo($this->language->txt('passed_info'));
339 $subitem->setChecked($this->object->getPassed());
340 if ($this->object->getLrsType()->getForcePrivacySettings()) {
341 $subitem->setDisabled(true);
342 }
343 $item->addSubItem($subitem);
344
345 $subitem = new ilCheckboxInputGUI($this->language->txt('progressed_label'), 'progressed');
346 $subitem->setInfo($this->language->txt('progressed_info'));
347 $subitem->setChecked($this->object->getProgressed());
348 if ($this->object->getLrsType()->getForcePrivacySettings()) {
349 $subitem->setDisabled(true);
350 }
351 $item->addSubItem($subitem);
352 if ($this->object->getContentType() != ilObjCmiXapi::CONT_TYPE_CMI5) {
353 $subitem = new ilCheckboxInputGUI($this->language->txt('satisfied_label'), 'satisfied');
354 $subitem->setInfo($this->language->txt('satisfied_info'));
355 $subitem->setChecked($this->object->getSatisfied());
356 if ($this->object->getLrsType()->getForcePrivacySettings()) {
357 $subitem->setDisabled(true);
358 }
359 $item->addSubItem($subitem);
360
361 $subitem = new ilCheckboxInputGUI($this->language->txt('terminated_label'), 'terminated');
362 $subitem->setInfo($this->language->txt('terminated_info'));
363 $subitem->setChecked($this->object->getTerminated());
364 if ($this->object->getLrsType()->getForcePrivacySettings()) {
365 $subitem->setDisabled(true);
366 }
367 $item->addSubItem($subitem);
368 }
369 if ($this->object->getLrsType()->getForcePrivacySettings()) {
370 $item->setDisabled(true);
371 }
372 $useProxy->addSubItem($item);
373
374 $item = new ilCheckboxInputGUI($this->language->txt('hide_data_label'), 'hide_data');
375 $item->setInfo($this->language->txt('hide_data_info'));
376 $item->setChecked($this->object->getHideData());
377
378 $subitem = new ilCheckboxInputGUI($this->language->txt('timestamp_label'), 'timestamp');
379 $subitem->setInfo($this->language->txt('timestamp_info'));
380 $subitem->setChecked($this->object->getTimestamp());
381 if ($this->object->getLrsType()->getForcePrivacySettings()) {
382 $subitem->setDisabled(true);
383 }
384 $item->addSubItem($subitem);
385
386 $subitem = new ilCheckboxInputGUI($this->language->txt('duration_label'), 'duration');
387 $subitem->setInfo($this->language->txt('duration_info'));
388 $subitem->setChecked($this->object->getDuration());
389 if ($this->object->getLrsType()->getForcePrivacySettings()) {
390 $subitem->setDisabled(true);
391 }
392 $item->addSubItem($subitem);
393
394 if ($this->object->getLrsType()->getForcePrivacySettings()) {
395 $item->setDisabled(true);
396 }
397 $useProxy->addSubItem($item);
398
399 $item = new ilCheckboxInputGUI($this->language->txt('no_substatements_label'), 'no_substatements');
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);
404 }
405 $useProxy->addSubItem($item);
406
407 $form->addItem($useProxy);
408 // }
409
410 $userIdent = new ilRadioGroupInputGUI($this->language->txt('conf_privacy_ident'), 'privacy_ident');
411 $op = new ilRadioOption(
412 $this->language->txt('conf_privacy_ident_il_uuid_user_id'),
414 );
415 $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_user_id_info'));
416 $userIdent->addOption($op);
417 $op = new ilRadioOption(
418 $this->language->txt('conf_privacy_ident_il_uuid_login'),
420 );
421 $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_login_info'));
422 $userIdent->addOption($op);
423 $op = new ilRadioOption(
424 $this->language->txt('conf_privacy_ident_il_uuid_ext_account'),
426 );
427 $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_ext_account_info'));
428 $userIdent->addOption($op);
429 $op = new ilRadioOption(
430 $this->language->txt('conf_privacy_ident_il_uuid_sha256'),
432 );
433 $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_sha256_info'));
434 $userIdent->addOption($op);
435 $op = new ilRadioOption(
436 $this->language->txt('conf_privacy_ident_il_uuid_sha256url'),
438 );
439 $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_sha256url_info'));
440 $userIdent->addOption($op);
441 $op = new ilRadioOption(
442 $this->language->txt('conf_privacy_ident_il_uuid_random'),
444 );
445 $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_random_info'));
446 $userIdent->addOption($op);
447 $op = new ilRadioOption(
448 $this->language->txt('conf_privacy_ident_real_email'),
450 );
451 $op->setInfo($this->language->txt('conf_privacy_ident_real_email_info'));
452 $userIdent->addOption($op);
453 $userIdent->setValue((string) $this->object->getPrivacyIdent());
454 $userIdent->setInfo(
455 $this->language->txt('conf_privacy_ident_info') . ' ' . ilCmiXapiUser::getIliasUuid()
456 );
457 $userIdent->setRequired(false);
458 $form->addItem($userIdent);
459
460 $userName = new ilRadioGroupInputGUI($this->language->txt('conf_privacy_name'), 'privacy_name');
461 $op = new ilRadioOption(
462 $this->language->txt('conf_privacy_name_none'),
464 );
465 $op->setInfo($this->language->txt('conf_privacy_name_none_info'));
466 $userName->addOption($op);
467 $op = new ilRadioOption(
468 $this->language->txt('conf_privacy_name_firstname'),
470 );
471 $userName->addOption($op);
472 $op = new ilRadioOption(
473 $this->language->txt('conf_privacy_name_lastname'),
475 );
476 $userName->addOption($op);
477 $op = new ilRadioOption(
478 $this->language->txt('conf_privacy_name_fullname'),
480 );
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);
486
487 if ($this->object->getLrsType()->getForcePrivacySettings()) {
488 $userIdent->setDisabled(true);
489 $userName->setDisabled(true);
490 }
491
492 if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
493 $item = new ilCheckboxInputGUI($this->language->txt('enrich_data_label'), 'enrich_data');
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);
498 }
499 $form->addItem($item);
500 }
501
502 }
503
504 $item = new ilRadioGroupInputGUI($this->language->txt('conf_delete_data'), 'delete_data');
505 $options = ["0","1","2","11","12"];
506 for ((int) $i = 0; $i < count($options); $i++) {
507 $op = new ilRadioOption($this->language->txt('conf_delete_data_opt' . $options[$i]), $options[$i]);
508 $item->addOption($op);
509 }
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);
514 }
515 $form->addItem($item);
516
517
518
519 $item = new ilFormSectionHeaderGUI();
520 $item->setTitle($this->language->txt("log_options"));
521 $form->addItem($item);
522
523 $item = new ilCheckboxInputGUI($this->language->txt('show_debug'), 'show_debug');
524 $item->setInfo($this->language->txt("show_debug_info"));
525 $item->setValue("1");
526 if ($this->object->isStatementsReportEnabled()) {
527 $item->setChecked(true);
528 }
529 $form->addItem($item);
530
531 $highscore = new ilCheckboxInputGUI($this->language->txt("highscore_enabled"), "highscore_enabled");
532 $highscore->setValue("1");
533 $highscore->setChecked($this->object->getHighscoreEnabled());
534 $highscore->setInfo($this->language->txt("highscore_description"));
535 $form->addItem($highscore);
536 $highscore_tables = new ilRadioGroupInputGUI($this->language->txt('highscore_mode'), 'highscore_mode');
537 $highscore_tables->setRequired(true);
538 $highscore_tables->setValue((string) $this->object->getHighscoreMode());
539 $highscore_table_own = new ilRadioOption(
540 $this->language->txt('highscore_own_table'),
542 );
543 $highscore_table_own->setInfo($this->language->txt('highscore_own_table_description'));
544 $highscore_tables->addOption($highscore_table_own);
545 $highscore_table_other = new ilRadioOption(
546 $this->language->txt('highscore_top_table'),
548 );
549 $highscore_table_other->setInfo($this->language->txt('highscore_top_table_description'));
550 $highscore_tables->addOption($highscore_table_other);
551 $highscore_table_other = new ilRadioOption(
552 $this->language->txt('highscore_all_tables'),
554 );
555 $highscore_table_other->setInfo($this->language->txt('highscore_all_tables_description'));
556 $highscore_tables->addOption($highscore_table_other);
557 $highscore->addSubItem($highscore_tables);
558 $highscore_top_num = new ilNumberInputGUI($this->language->txt("highscore_top_num"), "highscore_top_num");
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);
566 $highscore_achieved_ts = new ilCheckboxInputGUI($this->language->txt("highscore_achieved_ts"), "highscore_achieved_ts");
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);
571 $highscore_percentage = new ilCheckboxInputGUI($this->language->txt("highscore_percentage"), "highscore_percentage");
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);
576 $highscore_wtime = new ilCheckboxInputGUI($this->language->txt("highscore_wtime"), "highscore_wtime");
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);
581
582
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"));
586
587 return $form;
588 }
589
590 protected function saveSettings(ilPropertyFormGUI $form): void
591 {
592 $this->object->setTitle($form->getInput('title'));
593 $this->object->setDescription($form->getInput('description'));
594
595 $this->object->setActivityId($form->getInput('activity_id'));
596 $this->object->setOfflineStatus(!(bool) $form->getInput('online'));
597
598 if (!$this->object->isSourceTypeExternal()) {
599 $this->object->setLaunchMethod($form->getInput('display'));
600
601 $this->object->setLaunchMode($form->getInput('launch_mode'));
602
603 if ($this->object->getLaunchMode() == ilObjCmiXapi::LAUNCH_MODE_NORMAL) {
604 if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
605 $this->object->setMasteryScorePercent($form->getInput('mastery_score'));
606 }
607 $this->object->setKeepLpStatusEnabled((bool) $form->getInput('avoid_lp_deterioration'));
608 $this->object->setSwitchToReviewEnabled((bool) $form->getInput('switch_to_review'));
609 } else {
610 $this->object->setKeepLpStatusEnabled(true);
611 $this->object->setSwitchToReviewEnabled(false);
612 }
613
614 if ($this->object->isSourceTypeRemote()) {
615 $this->object->setLaunchUrl($form->getInput('launch_url'));
616 }
617
618 if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
619 $this->object->setAuthFetchUrlEnabled(true);
620 } else {
621 $this->object->setAuthFetchUrlEnabled((bool) $form->getInput('use_fetch'));
622 }
623
624 if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
625 $this->object->setBypassProxyEnabled(false);
626 } else {
627 // $this->object->setBypassProxyEnabled((bool) $form->getInput('bypass_proxy'));
628 if ((bool) $form->getInput("use_proxy") == false) {
629 $this->object->setBypassProxyEnabled(true);
630 } else {
631 $this->object->setBypassProxyEnabled(false);
632 }
633 }
634
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"));
646 if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
647 $this->object->setSatisfied(true);
648 $this->object->setTerminated(true);
649 } else {
650 $this->object->setSatisfied((bool) $form->getInput("satisfied"));
651 $this->object->setTerminated((bool) $form->getInput("terminated"));
652 }
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"));
659 }
660 } else { //SourceTypeExternal
661 $this->object->setBypassProxyEnabled(true);
662 $this->object->setKeepLpStatusEnabled((bool) $form->getInput('avoid_lp_deterioration'));
663 }
664
665 $this->object->setStatementsReportEnabled((bool) $form->getInput('show_debug'));
666
667 $this->object->setHighscoreEnabled((bool) $form->getInput('highscore_enabled'));
668 if ($this->object->getHighscoreEnabled()) {
669 // highscore settings
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'));
676 }
677
678 // tile image
679 $this->dic->object()->commonSettings()->legacyForm($form, $this->object)->saveTileImage();
680
681 $this->object->update();
682 }
683
684 protected function deliverCertificateCmd(): void
685 {
686 $validator = new ilCertificateDownloadValidator();
687
688 if (!$validator->isCertificateDownloadable((int) $this->dic->user()->getId(), $this->object->getId())) {
689 $this->main_tpl->setOnScreenMessage('failure', $this->language->txt("permission_denied"), true);
690 $this->dic->ctrl()->redirectByClass(ilObjCmiXapiGUI::class, ilObjCmiXapiGUI::CMD_INFO_SCREEN);
691 }
692
693 $repository = new ilUserCertificateRepository();
694
695 $certLogger = $this->dic->logger()->root();//->cert();
696 $pdfGenerator = new ilPdfGenerator($repository);
697
698 $pdfAction = new ilCertificatePdfAction(
699 $pdfGenerator,
701 $this->language->txt('error_creating_certificate_pdf')
702 );
703
704 $pdfAction->downloadPdf((int) $this->dic->user()->getId(), $this->object->getId());
705 }
706}
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.
This class represents a checkbox property in a property form.
ilGlobalTemplateInterface $main_tpl
showCmd(?ilPropertyFormGUI $form=null)
saveSettings(ilPropertyFormGUI $form)
__construct(ilObjCmiXapi $object)
This class represents a section header in a property form.
language handling
This class represents a non editable value in a property form.
This class represents a number property in a property form.
This class represents a property form user interface.
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
This class represents a property in a property form.
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.
global $DIC
Definition: shib_login.php:26