ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
class.ilCmiXapiSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
33 {
34  public const CMD_SHOW = 'show';
35  public const CMD_DELIVER_CERTIFICATE = 'deliverCertificate';
36 
37  public const CMD_SAVE = 'save';
38 
39  public const DEFAULT_CMD = self::CMD_SHOW;
40 
41  public const SUBTAB_ID_SETTINGS = 'settings';
42  public const SUBTAB_ID_CERTIFICATE = 'certificate';
43 
47  protected ilObjCmiXapi $object;
48  private \ilGlobalTemplateInterface $main_tpl;
49  private \ILIAS\DI\Container $dic;
51 
52  public function __construct(ilObjCmiXapi $object)
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  // if ($this->object->getContentType() != ilObjCmiXapi::CONT_TYPE_CMI5) {
279  $sectionHeader = new ilFormSectionHeaderGUI();
280  $sectionHeader->setTitle($this->language->txt('privacy_options'));
281  $form->addItem($sectionHeader);
282 
283  $useProxy = new ilCheckboxInputGUI($this->language->txt('conf_use_proxy'), 'use_proxy');
284  $useProxy->setInfo($this->language->txt('conf_use_proxy_info_xapi'));
285  if ($this->object->isBypassProxyEnabled() == false) {
286  $useProxy->setChecked(true);
287  }
288  // if ($this->object->getLrsType()->getForcePrivacySettings()) {
289  // $useProxy->setDisabled(true);
290  // }
291  if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
292  $useProxy->setChecked(true);
293  $useProxy->setDisabled(true);
294  $useProxy->setInfo($this->language->txt('conf_use_proxy_info_cmi5'));
295  }
296 
297  $item = new ilCheckboxInputGUI($this->language->txt('only_moveon_label'), 'only_moveon');
298  $item->setInfo($this->language->txt('only_moveon_info'));
299  $item->setChecked($this->object->getOnlyMoveon());
300 
301  $subitem = new ilCheckboxInputGUI($this->language->txt('achieved_label'), 'achieved');
302  $subitem->setInfo($this->language->txt('achieved_info'));
303  $subitem->setChecked($this->object->getAchieved());
304  if ($this->object->getLrsType()->getForcePrivacySettings()) {
305  $subitem->setDisabled(true);
306  }
307  $item->addSubItem($subitem);
308 
309  $subitem = new ilCheckboxInputGUI($this->language->txt('answered_label'), 'answered');
310  $subitem->setInfo($this->language->txt('answered_info'));
311  $subitem->setChecked($this->object->getAnswered());
312  if ($this->object->getLrsType()->getForcePrivacySettings()) {
313  $subitem->setDisabled(true);
314  }
315  $item->addSubItem($subitem);
316 
317  $subitem = new ilCheckboxInputGUI($this->language->txt('completed_label'), 'completed');
318  $subitem->setInfo($this->language->txt('completed_info'));
319  $subitem->setChecked($this->object->getCompleted());
320  if ($this->object->getLrsType()->getForcePrivacySettings()) {
321  $subitem->setDisabled(true);
322  }
323  $item->addSubItem($subitem);
324 
325  $subitem = new ilCheckboxInputGUI($this->language->txt('failed_label'), 'failed');
326  $subitem->setInfo($this->language->txt('failed_info'));
327  $subitem->setChecked($this->object->getFailed());
328  if ($this->object->getLrsType()->getForcePrivacySettings()) {
329  $subitem->setDisabled(true);
330  }
331  $item->addSubItem($subitem);
332 
333  $subitem = new ilCheckboxInputGUI($this->language->txt('initialized_label'), 'initialized');
334  $subitem->setInfo($this->language->txt('initialized_info'));
335  $subitem->setChecked($this->object->getInitialized());
336  if ($this->object->getLrsType()->getForcePrivacySettings()) {
337  $subitem->setDisabled(true);
338  }
339  $item->addSubItem($subitem);
340 
341  $subitem = new ilCheckboxInputGUI($this->language->txt('passed_label'), 'passed');
342  $subitem->setInfo($this->language->txt('passed_info'));
343  $subitem->setChecked($this->object->getPassed());
344  if ($this->object->getLrsType()->getForcePrivacySettings()) {
345  $subitem->setDisabled(true);
346  }
347  $item->addSubItem($subitem);
348 
349  $subitem = new ilCheckboxInputGUI($this->language->txt('progressed_label'), 'progressed');
350  $subitem->setInfo($this->language->txt('progressed_info'));
351  $subitem->setChecked($this->object->getProgressed());
352  if ($this->object->getLrsType()->getForcePrivacySettings()) {
353  $subitem->setDisabled(true);
354  }
355  $item->addSubItem($subitem);
356  if ($this->object->getContentType() != ilObjCmiXapi::CONT_TYPE_CMI5) {
357  $subitem = new ilCheckboxInputGUI($this->language->txt('satisfied_label'), 'satisfied');
358  $subitem->setInfo($this->language->txt('satisfied_info'));
359  $subitem->setChecked($this->object->getSatisfied());
360  if ($this->object->getLrsType()->getForcePrivacySettings()) {
361  $subitem->setDisabled(true);
362  }
363  $item->addSubItem($subitem);
364 
365  $subitem = new ilCheckboxInputGUI($this->language->txt('terminated_label'), 'terminated');
366  $subitem->setInfo($this->language->txt('terminated_info'));
367  $subitem->setChecked($this->object->getTerminated());
368  if ($this->object->getLrsType()->getForcePrivacySettings()) {
369  $subitem->setDisabled(true);
370  }
371  $item->addSubItem($subitem);
372  }
373  if ($this->object->getLrsType()->getForcePrivacySettings()) {
374  $item->setDisabled(true);
375  }
376  $useProxy->addSubItem($item);
377 
378  $item = new ilCheckboxInputGUI($this->language->txt('hide_data_label'), 'hide_data');
379  $item->setInfo($this->language->txt('hide_data_info'));
380  $item->setChecked($this->object->getHideData());
381 
382  $subitem = new ilCheckboxInputGUI($this->language->txt('timestamp_label'), 'timestamp');
383  $subitem->setInfo($this->language->txt('timestamp_info'));
384  $subitem->setChecked($this->object->getTimestamp());
385  if ($this->object->getLrsType()->getForcePrivacySettings()) {
386  $subitem->setDisabled(true);
387  }
388  $item->addSubItem($subitem);
389 
390  $subitem = new ilCheckboxInputGUI($this->language->txt('duration_label'), 'duration');
391  $subitem->setInfo($this->language->txt('duration_info'));
392  $subitem->setChecked($this->object->getDuration());
393  if ($this->object->getLrsType()->getForcePrivacySettings()) {
394  $subitem->setDisabled(true);
395  }
396  $item->addSubItem($subitem);
397 
398  if ($this->object->getLrsType()->getForcePrivacySettings()) {
399  $item->setDisabled(true);
400  }
401  //$form->addItem($item);
402  $useProxy->addSubItem($item);
403 
404  $item = new ilCheckboxInputGUI($this->language->txt('no_substatements_label'), 'no_substatements');
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);
409  }
410  $useProxy->addSubItem($item);
411 
412  $form->addItem($useProxy);
413  // }
414 
415  $userIdent = new ilRadioGroupInputGUI($this->language->txt('conf_privacy_ident'), 'privacy_ident');
416  $op = new ilRadioOption(
417  $this->language->txt('conf_privacy_ident_il_uuid_user_id'),
419  );
420  $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_user_id_info'));
421  $userIdent->addOption($op);
422  $op = new ilRadioOption(
423  $this->language->txt('conf_privacy_ident_il_uuid_login'),
425  );
426  $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_login_info'));
427  $userIdent->addOption($op);
428  $op = new ilRadioOption(
429  $this->language->txt('conf_privacy_ident_il_uuid_ext_account'),
431  );
432  $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_ext_account_info'));
433  $userIdent->addOption($op);
434  $op = new ilRadioOption(
435  $this->language->txt('conf_privacy_ident_il_uuid_sha256'),
437  );
438  $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_sha256_info'));
439  $userIdent->addOption($op);
440  $op = new ilRadioOption(
441  $this->language->txt('conf_privacy_ident_il_uuid_sha256url'),
443  );
444  $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_sha256url_info'));
445  $userIdent->addOption($op);
446  $op = new ilRadioOption(
447  $this->language->txt('conf_privacy_ident_il_uuid_random'),
449  );
450  $op->setInfo($this->language->txt('conf_privacy_ident_il_uuid_random_info'));
451  $userIdent->addOption($op);
452  $op = new ilRadioOption(
453  $this->language->txt('conf_privacy_ident_real_email'),
455  );
456  $op->setInfo($this->language->txt('conf_privacy_ident_real_email_info'));
457  $userIdent->addOption($op);
458  $userIdent->setValue((string) $this->object->getPrivacyIdent());
459  $userIdent->setInfo(
460  $this->language->txt('conf_privacy_ident_info') . ' ' . ilCmiXapiUser::getIliasUuid()
461  );
462  $userIdent->setRequired(false);
463  $form->addItem($userIdent);
464 
465  $userName = new ilRadioGroupInputGUI($this->language->txt('conf_privacy_name'), 'privacy_name');
466  $op = new ilRadioOption(
467  $this->language->txt('conf_privacy_name_none'),
469  );
470  $op->setInfo($this->language->txt('conf_privacy_name_none_info'));
471  $userName->addOption($op);
472  $op = new ilRadioOption(
473  $this->language->txt('conf_privacy_name_firstname'),
475  );
476  $userName->addOption($op);
477  $op = new ilRadioOption(
478  $this->language->txt('conf_privacy_name_lastname'),
480  );
481  $userName->addOption($op);
482  $op = new ilRadioOption(
483  $this->language->txt('conf_privacy_name_fullname'),
485  );
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);
491 
492  if ($this->object->getLrsType()->getForcePrivacySettings()) {
493  $userIdent->setDisabled(true);
494  $userName->setDisabled(true);
495  }
496 
497  }
498 
499  $item = new ilRadioGroupInputGUI($this->language->txt('conf_delete_data'), 'delete_data');
500  $options = ["0","1","2","11","12"];
501  for ((int) $i = 0; $i < count($options); $i++) {
502  $op = new ilRadioOption($this->language->txt('conf_delete_data_opt' . $options[$i]), $options[$i]);
503  $item->addOption($op);
504  }
505  $item->setValue((string) $this->object->getDeleteData());
506  $item->setInfo($this->language->txt('conf_delete_data_info'));
507  $form->addItem($item);
508 
509 
510 
511  $item = new ilFormSectionHeaderGUI();
512  $item->setTitle($this->language->txt("log_options"));
513  $form->addItem($item);
514 
515  $item = new ilCheckboxInputGUI($this->language->txt('show_debug'), 'show_debug');
516  $item->setInfo($this->language->txt("show_debug_info"));
517  $item->setValue("1");
518  if ($this->object->isStatementsReportEnabled()) {
519  $item->setChecked(true);
520  }
521  $form->addItem($item);
522 
523  $highscore = new ilCheckboxInputGUI($this->language->txt("highscore_enabled"), "highscore_enabled");
524  $highscore->setValue("1");
525  $highscore->setChecked($this->object->getHighscoreEnabled());
526  $highscore->setInfo($this->language->txt("highscore_description"));
527  $form->addItem($highscore);
528  $highscore_tables = new ilRadioGroupInputGUI($this->language->txt('highscore_mode'), 'highscore_mode');
529  $highscore_tables->setRequired(true);
530  $highscore_tables->setValue((string) $this->object->getHighscoreMode());
531  $highscore_table_own = new ilRadioOption(
532  $this->language->txt('highscore_own_table'),
534  );
535  $highscore_table_own->setInfo($this->language->txt('highscore_own_table_description'));
536  $highscore_tables->addOption($highscore_table_own);
537  $highscore_table_other = new ilRadioOption(
538  $this->language->txt('highscore_top_table'),
540  );
541  $highscore_table_other->setInfo($this->language->txt('highscore_top_table_description'));
542  $highscore_tables->addOption($highscore_table_other);
543  $highscore_table_other = new ilRadioOption(
544  $this->language->txt('highscore_all_tables'),
546  );
547  $highscore_table_other->setInfo($this->language->txt('highscore_all_tables_description'));
548  $highscore_tables->addOption($highscore_table_other);
549  $highscore->addSubItem($highscore_tables);
550  $highscore_top_num = new ilNumberInputGUI($this->language->txt("highscore_top_num"), "highscore_top_num");
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);
558  $highscore_achieved_ts = new ilCheckboxInputGUI($this->language->txt("highscore_achieved_ts"), "highscore_achieved_ts");
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);
563  $highscore_percentage = new ilCheckboxInputGUI($this->language->txt("highscore_percentage"), "highscore_percentage");
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);
568  $highscore_wtime = new ilCheckboxInputGUI($this->language->txt("highscore_wtime"), "highscore_wtime");
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);
573 
574 
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"));
578 
579  return $form;
580  }
581 
582  protected function saveSettings(ilPropertyFormGUI $form): void
583  {
584  $this->object->setTitle($form->getInput('title'));
585  $this->object->setDescription($form->getInput('description'));
586 
587  $this->object->setActivityId($form->getInput('activity_id'));
588  $this->object->setOfflineStatus(!(bool) $form->getInput('online'));
589 
590  if (!$this->object->isSourceTypeExternal()) {
591  $this->object->setLaunchMethod($form->getInput('display'));
592 
593  $this->object->setLaunchMode($form->getInput('launch_mode'));
594 
595  if ($this->object->getLaunchMode() == ilObjCmiXapi::LAUNCH_MODE_NORMAL) {
596  if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
597  $this->object->setMasteryScorePercent($form->getInput('mastery_score'));
598  }
599  $this->object->setKeepLpStatusEnabled((bool) $form->getInput('avoid_lp_deterioration'));
600  $this->object->setSwitchToReviewEnabled((bool) $form->getInput('switch_to_review'));
601  } else {
602  $this->object->setKeepLpStatusEnabled(true);
603  $this->object->setSwitchToReviewEnabled(false);
604  }
605 
606  if ($this->object->isSourceTypeRemote()) {
607  $this->object->setLaunchUrl($form->getInput('launch_url'));
608  }
609 
610  if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
611  $this->object->setAuthFetchUrlEnabled(true);
612  } else {
613  $this->object->setAuthFetchUrlEnabled((bool) $form->getInput('use_fetch'));
614  }
615 
616  if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
617  $this->object->setBypassProxyEnabled(false);
618  } else {
619  // $this->object->setBypassProxyEnabled((bool) $form->getInput('bypass_proxy'));
620  if ((bool) $form->getInput("use_proxy") == false) {
621  $this->object->setBypassProxyEnabled(true);
622  } else {
623  $this->object->setBypassProxyEnabled(false);
624  }
625  }
626 
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"));
638  if ($this->object->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5) {
639  $this->object->setSatisfied(true);
640  $this->object->setTerminated(true);
641  } else {
642  $this->object->setSatisfied((bool) $form->getInput("satisfied"));
643  $this->object->setTerminated((bool) $form->getInput("terminated"));
644  }
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"));
650  }
651  } else { //SourceTypeExternal
652  $this->object->setBypassProxyEnabled(true);
653  $this->object->setKeepLpStatusEnabled((bool) $form->getInput('avoid_lp_deterioration'));
654  }
655 
656  $this->object->setStatementsReportEnabled((bool) $form->getInput('show_debug'));
657 
658  $this->object->setHighscoreEnabled((bool) $form->getInput('highscore_enabled'));
659  if ($this->object->getHighscoreEnabled()) {
660  // highscore settings
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'));
667  }
668 
669  // tile image
670  $this->dic->object()->commonSettings()->legacyForm($form, $this->object)->saveTileImage();
671 
672  $this->object->update();
673  }
674 
675  protected function deliverCertificateCmd(): void
676  {
677  $validator = new ilCertificateDownloadValidator();
678 
679  if (!$validator->isCertificateDownloadable((int) $this->dic->user()->getId(), $this->object->getId())) {
680  $this->main_tpl->setOnScreenMessage('failure', $this->language->txt("permission_denied"), true);
681  $this->dic->ctrl()->redirectByClass(ilObjCmiXapiGUI::class, ilObjCmiXapiGUI::CMD_INFO_SCREEN);
682  }
683 
684  $repository = new ilUserCertificateRepository();
685 
686  $certLogger = $this->dic->logger()->root();//->cert();
687  $pdfGenerator = new ilPdfGenerator($repository);
688 
689  $pdfAction = new ilCertificatePdfAction(
690  $pdfGenerator,
692  $this->language->txt('error_creating_certificate_pdf')
693  );
694 
695  $pdfAction->downloadPdf((int) $this->dic->user()->getId(), $this->object->getId());
696  }
697 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(ilObjCmiXapi $object)
setInfo(string $a_info)
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.
setValue(string $a_value)
Validates if an active certificate is stored in the database and can be downloaded by the user...
global $DIC
Definition: shib_login.php:25
setRequired(bool $a_required)
saveSettings(ilPropertyFormGUI $form)
This class represents a text area property in a property form.
showCmd(ilPropertyFormGUI $form=null)
language()
description: > Example for rendring a language glyph.
Definition: language.php:25
ilGlobalTemplateInterface $main_tpl
downloadPdf(int $userId, int $objectId)