ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilObjCmiXapiAdministrationGUI.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2019 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5
18{
19 const TAB_ID_LRS_TYPES = 'tab_lrs_types';
20 const TAB_ID_PERMISSIONS = 'perm_settings';
21
22 const CMD_SHOW_LRS_TYPES_LIST = 'showLrsTypesList';
23 const CMD_SHOW_LRS_TYPE_FORM = 'showLrsTypeForm';
24 const CMD_SAVE_LRS_TYPE_FORM = 'saveLrsTypeForm';
25
27
28 public function getAdminTabs()
29 {
30 global $DIC; /* @var \ILIAS\DI\Container $DIC */
31
32 $DIC->help()->setScreenIdComponent("cmix");
33 // lrs types tab
34
35 $DIC->tabs()->addTab(
36 self::TAB_ID_LRS_TYPES,
37 $DIC->language()->txt(self::TAB_ID_LRS_TYPES),
38 $DIC->ctrl()->getLinkTargetByClass(self::class)
39 );
40
41 // permissions tab
42
43 $DIC->tabs()->addTab(
44 self::TAB_ID_PERMISSIONS,
45 $DIC->language()->txt(self::TAB_ID_PERMISSIONS),
46 $DIC->ctrl()->getLinkTargetByClass(ilPermissionGUI::class, 'perm')
47 );
48 }
49
50 public function executeCommand()
51 {
52 global $DIC; /* @var \ILIAS\DI\Container $DIC */
53
54 $DIC->language()->loadLanguageModule('cmix');
55
56 $this->prepareOutput();
57
58 switch ($DIC->ctrl()->getNextClass()) {
59 case 'ilpermissiongui':
60
61 $DIC->tabs()->activateTab(self::TAB_ID_PERMISSIONS);
62
63 $gui = new ilPermissionGUI($this);
64 $DIC->ctrl()->forwardCommand($gui);
65 break;
66
67 default:
68
69 $command = $DIC->ctrl()->getCmd(self::DEFAULT_CMD) . 'Cmd';
70 $this->{$command}();
71 }
72 }
73
74 protected function viewCmd()
75 {
76 $this->showLrsTypesListCmd();
77 }
78
79 protected function showLrsTypesListCmd()
80 {
81 global $DIC; /* @var \ILIAS\DI\Container $DIC */
82
83 $DIC->tabs()->activateTab(self::TAB_ID_LRS_TYPES);
84
86
87 $table = $this->buildLrsTypesTableGUI();
88
89 $table->setData(ilCmiXapiLrsTypeList::getTypesData(true));
90
91 $DIC->ui()->mainTemplate()->setContent($toolbar->getHTML() . $table->getHTML());
92 }
93
94 protected function buildLrsTypesTableGUI()
95 {
96 $table = new ilCmiXapiLrsTypesTableGUI($this, self::CMD_SHOW_LRS_TYPES_LIST);
97 return $table;
98 }
99
100 protected function buildLrsTypesToolbarGUI()
101 {
102 global $DIC; /* @var \ILIAS\DI\Container $DIC */
103
104 $createTypeButton = ilLinkButton::getInstance();
105 $createTypeButton->setCaption('btn_create_lrs_type');
106 $createTypeButton->setUrl($DIC->ctrl()->getLinkTarget($this, self::CMD_SHOW_LRS_TYPE_FORM));
107
108 $toolbar = new ilToolbarGUI();
109 $toolbar->addButtonInstance($createTypeButton);
110
111 return $toolbar;
112 }
113
114 protected function showLrsTypeFormCmd(ilPropertyFormGUI $form = null)
115 {
116 global $DIC; /* @var \ILIAS\DI\Container $DIC */
117
118 $DIC->tabs()->activateTab(self::TAB_ID_LRS_TYPES);
119
120 if ($form === null) {
121 $lrsType = $this->initLrsType();
122
123 $form = $this->buildLrsTypeForm($lrsType);
124 }
125
126 $DIC->ui()->mainTemplate()->setContent($form->getHTML());
127 }
128
129 protected function initLrsType()
130 {
131 if (isset($_POST['lrs_type_id']) && (int) $_POST['lrs_type_id']) {
132 return new ilCmiXapiLrsType((int) $_POST['lrs_type_id']);
133 }
134
135 if (isset($_GET['lrs_type_id']) && (int) $_GET['lrs_type_id']) {
136 return new ilCmiXapiLrsType((int) $_GET['lrs_type_id']);
137 }
138
139 return new ilCmiXapiLrsType();
140 }
141
142 protected function buildLrsTypeForm(ilCmiXapiLrsType $lrsType)
143 {
144 global $DIC; /* @var \ILIAS\DI\Container $DIC */
145
146 $form = new ilPropertyFormGUI();
147 $form->setFormAction($DIC->ctrl()->getFormAction($this));
148
149 if ($lrsType->getTypeId()) {
150 $form->setTitle($DIC->language()->txt('edit_lrs_type_form'));
151 $form->addCommandButton(self::CMD_SAVE_LRS_TYPE_FORM, $DIC->language()->txt('save'));
152 } else {
153 $form->setTitle($DIC->language()->txt('create_lrs_type_form'));
154 $form->addCommandButton(self::CMD_SAVE_LRS_TYPE_FORM, $DIC->language()->txt('create'));
155 }
156
157 $form->addCommandButton(self::CMD_SHOW_LRS_TYPES_LIST, $DIC->language()->txt('cancel'));
158
159 $hiddenId = new ilHiddenInputGUI('lrs_type_id');
160 $hiddenId->setValue($lrsType->getTypeId());
161 $form->addItem($hiddenId);
162
163
164 $item = new ilTextInputGUI($DIC->language()->txt('conf_title'), 'title');
165 $item->setValue($lrsType->getTitle());
166 $item->setInfo($DIC->language()->txt('info_title'));
167 $item->setRequired(true);
168 $item->setMaxLength(255);
169 $form->addItem($item);
170
171 $item = new ilTextInputGUI($DIC->language()->txt('conf_description'), 'description');
172 $item->setValue($lrsType->getDescription());
173 $item->setInfo($DIC->language()->txt('info_description'));
174 $form->addItem($item);
175
176 $item = new ilRadioGroupInputGUI($DIC->language()->txt('conf_availability'), 'availability');
177 $optionCreate = new ilRadioOption(
178 $DIC->language()->txt('conf_availability_' . ilCmiXapiLrsType::AVAILABILITY_CREATE),
180 );
181 $item->addOption($optionCreate);
182 $optionCreate = new ilRadioOption(
183 $DIC->language()->txt('conf_availability_' . ilCmiXapiLrsType::AVAILABILITY_EXISTING),
185 );
186 $item->addOption($optionCreate);
187 $optionCreate = new ilRadioOption(
188 $DIC->language()->txt('conf_availability_' . ilCmiXapiLrsType::AVAILABILITY_NONE),
190 );
191 $item->addOption($optionCreate);
192 $item->setValue($lrsType->getAvailability());
193 $item->setInfo($DIC->language()->txt('info_availability'));
194 $item->setRequired(true);
195 $form->addItem($item);
196
197 $sectionHeader = new ilFormSectionHeaderGUI();
198 $sectionHeader->setTitle($DIC->language()->txt('lrs_authentication'));
199 $form->addItem($sectionHeader);
200
201 $item = new ilTextInputGUI($DIC->language()->txt('conf_lrs_endpoint'), 'lrs_endpoint');
202 $item->setValue($lrsType->getLrsEndpoint());
203 $item->setInfo($DIC->language()->txt('info_lrs_endpoint'));
204 $item->setRequired(true);
205 $item->setMaxLength(255);
206 $form->addItem($item);
207
208 $item = new ilTextInputGUI($DIC->language()->txt('conf_lrs_key'), 'lrs_key');
209 $item->setValue($lrsType->getLrsKey());
210 $item->setInfo($DIC->language()->txt('info_lrs_key'));
211 $item->setRequired(true);
212 $item->setMaxLength(128);
213 $form->addItem($item);
214
215 $item = new ilTextInputGUI($DIC->language()->txt('conf_lrs_secret'), 'lrs_secret');
216 $item->setValue($lrsType->getLrsSecret());
217 $item->setInfo($DIC->language()->txt('info_lrs_secret'));
218 $item->setRequired(true);
219 $item->setMaxLength(128);
220 $form->addItem($item);
221
222 $sectionHeader = new ilFormSectionHeaderGUI();
223 $sectionHeader->setTitle($DIC->language()->txt('sect_learning_progress_options'));
224 $form->addItem($sectionHeader);
225
226 $cronjob = new ilCheckboxInputGUI($DIC->language()->txt('conf_cronjob_neccessary'), 'cronjob_neccessary');
227 $cronjob->setInfo($DIC->language()->txt('conf_cronjob_neccessary_info'));
228 $cronjob->setChecked($lrsType->isBypassProxyEnabled());
229 $form->addItem($cronjob);
230
231 $sectionHeader = new ilFormSectionHeaderGUI();
232 $sectionHeader->setTitle('Privacy Settings');
233 $form->addItem($sectionHeader);
234
235 $item = new ilRadioGroupInputGUI($DIC->language()->txt('conf_privacy_ident'), 'privacy_ident');
236 $op = new ilRadioOption(
237 $DIC->language()->txt('conf_privacy_ident_il_uuid_user_id'),
239 );
240 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_user_id_info'));
241 $item->addOption($op);
242 $op = new ilRadioOption(
243 $DIC->language()->txt('conf_privacy_ident_il_uuid_login'),
245 );
246 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_login_info'));
247 $item->addOption($op);
248 $op = new ilRadioOption(
249 $DIC->language()->txt('conf_privacy_ident_il_uuid_ext_account'),
251 );
252 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_ext_account_info'));
253 $item->addOption($op);
254 $op = new ilRadioOption(
255 $DIC->language()->txt('conf_privacy_ident_il_uuid_sha256'),
257 );
258 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_sha256_info'));
259 $item->addOption($op);
260 $op = new ilRadioOption(
261 $DIC->language()->txt('conf_privacy_ident_il_uuid_sha256url'),
263 );
264 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_sha256url_info'));
265 $item->addOption($op);
266 $op = new ilRadioOption(
267 $DIC->language()->txt('conf_privacy_ident_il_uuid_random'),
269 );
270 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_random_info'));
271 $item->addOption($op);
272 $op = new ilRadioOption(
273 $DIC->language()->txt('conf_privacy_ident_real_email'),
275 );
276 $op->setInfo($DIC->language()->txt('conf_privacy_ident_real_email_info'));
277 $item->addOption($op);
278 $item->setValue($lrsType->getPrivacyIdent());
279 $item->setInfo(
280 $DIC->language()->txt('conf_privacy_ident_info') . ' ' . ilCmiXapiUser::getIliasUuid()
281 );
282 $item->setRequired(false);
283 $form->addItem($item);
284
285 $item = new ilRadioGroupInputGUI($DIC->language()->txt('conf_privacy_name'), 'privacy_name');
286 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_none'), ilCmiXapiLrsType::PRIVACY_NAME_NONE);
287 $op->setInfo($DIC->language()->txt('conf_privacy_name_none_info'));
288 $item->addOption($op);
289 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_firstname'), ilCmiXapiLrsType::PRIVACY_NAME_FIRSTNAME);
290 $op->setInfo($DIC->language()->txt('conf_privacy_name_firstname_info'));
291 $item->addOption($op);
292 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_lastname'), ilCmiXapiLrsType::PRIVACY_NAME_LASTNAME);
293 $op->setInfo($DIC->language()->txt('conf_privacy_name_lastname_info'));
294 $item->addOption($op);
295 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_fullname'), ilCmiXapiLrsType::PRIVACY_NAME_FULLNAME);
296 $op->setInfo($DIC->language()->txt('conf_privacy_name_fullname_info'));
297 $item->addOption($op);
298 $item->setValue($lrsType->getPrivacyName());
299 $item->setInfo($DIC->language()->txt('conf_privacy_name_info'));
300 $item->setRequired(false);
301 $form->addItem($item);
302
303 $item = new ilCheckboxInputGUI($DIC->language()->txt('only_moveon_label'), 'only_moveon');
304 $item->setInfo($DIC->language()->txt('only_moveon_info'));
305 $item->setChecked($lrsType->getOnlyMoveon());
306
307 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('achieved_label'), 'achieved');
308 $subitem->setInfo($DIC->language()->txt('achieved_info'));
309 $subitem->setChecked($lrsType->getAchieved());
310 $item->addSubItem($subitem);
311
312 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('answered_label'), 'answered');
313 $subitem->setInfo($DIC->language()->txt('answered_info'));
314 $subitem->setChecked($lrsType->getAnswered());
315 $item->addSubItem($subitem);
316
317 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('completed_label'), 'completed');
318 $subitem->setInfo($DIC->language()->txt('completed_info'));
319 $subitem->setChecked($lrsType->getCompleted());
320 $item->addSubItem($subitem);
321
322 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('failed_label'), 'failed');
323 $subitem->setInfo($DIC->language()->txt('failed_info'));
324 $subitem->setChecked($lrsType->getFailed());
325 $item->addSubItem($subitem);
326
327 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('initialized_label'), 'initialized');
328 $subitem->setInfo($DIC->language()->txt('initialized_info'));
329 $subitem->setChecked($lrsType->getInitialized());
330 $item->addSubItem($subitem);
331
332 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('passed_label'), 'passed');
333 $subitem->setInfo($DIC->language()->txt('passed_info'));
334 $subitem->setChecked($lrsType->getPassed());
335 $item->addSubItem($subitem);
336
337 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('progressed_label'), 'progressed');
338 $subitem->setInfo($DIC->language()->txt('progressed_info'));
339 $subitem->setChecked($lrsType->getProgressed());
340 $item->addSubItem($subitem);
341
342 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('satisfied_label'), 'satisfied');
343 $subitem->setInfo($DIC->language()->txt('satisfied_info'));
344 $subitem->setChecked($lrsType->getSatisfied());
345 $item->addSubItem($subitem);
346
347 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('terminated_label'), 'terminated');
348 $subitem->setInfo($DIC->language()->txt('terminated_info'));
349 $subitem->setChecked($lrsType->getTerminated());
350 $item->addSubItem($subitem);
351
352 $form->addItem($item);
353
354 $item = new ilCheckboxInputGUI($DIC->language()->txt('hide_data_label'), 'hide_data');
355 $item->setInfo($DIC->language()->txt('hide_data_info'));
356 $item->setChecked($lrsType->getHideData());
357
358 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('timestamp_label'), 'timestamp');
359 $subitem->setInfo($DIC->language()->txt('timestamp_info'));
360 $subitem->setChecked($lrsType->getTimestamp());
361 $item->addSubItem($subitem);
362
363 $subitem = new ilCheckboxInputGUI($DIC->language()->txt('duration_label'), 'duration');
364 $subitem->setInfo($DIC->language()->txt('duration_info'));
365 $subitem->setChecked($lrsType->getDuration());
366 $item->addSubItem($subitem);
367
368 $form->addItem($item);
369
370 $item = new ilCheckboxInputGUI($DIC->language()->txt('no_substatements_label'), 'no_substatements');
371 $item->setInfo($DIC->language()->txt('no_substatements_info'));
372 $item->setChecked($lrsType->getNoSubstatements());
373 $form->addItem($item);
374
375 $item = new ilRadioGroupInputGUI($DIC->language()->txt('conf_privacy_setting_conf'), 'force_privacy_setting');
376 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_setting_default'), 0);
377 $item->addOption($op);
378 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_setting_force'), 1);
379 $item->addOption($op);
380 $item->setValue($lrsType->getForcePrivacySettings());
381 $form->addItem($item);
382
383 $sectionHeader = new ilFormSectionHeaderGUI();
384 $sectionHeader->setTitle('Hints');
385 $form->addItem($sectionHeader);
386
387 $item = new ilCheckboxInputGUI($DIC->language()->txt('conf_external_lrs'), 'external_lrs');
388 $item->setChecked($lrsType->getExternalLrs());
389 $item->setInfo($DIC->language()->txt('info_external_lrs'));
390 $form->addItem($item);
391
392 $item = new ilTextAreaInputGUI($DIC->language()->txt('conf_privacy_comment_default'), 'privacy_comment_default');
393 $item->setInfo($DIC->language()->txt('info_privacy_comment_default'));
394 $item->setValue($lrsType->getPrivacyCommentDefault());
395 $item->setRows(5);
396 $form->addItem($item);
397
398 $item = new ilTextAreaInputGUI($DIC->language()->txt('conf_remarks'), 'remarks');
399 $item->setInfo($DIC->language()->txt('info_remarks'));
400 $item->setValue($lrsType->getRemarks());
401 $item->setRows(5);
402 $form->addItem($item);
403
404 return $form;
405 }
406
407 protected function saveLrsTypeFormCmd() : void
408 {
409 global $DIC; /* @var \ILIAS\DI\Container $DIC */
410
411 $lrsType = $this->initLrsType();
412
413 $form = $this->buildLrsTypeForm($lrsType);
414
415 if (!$form->checkInput()) {
416 $this->showLrsTypeFormCmd($form);
417 return;
418 }
419
420 $lrsType->setTitle($form->getInput("title"));
421 $lrsType->setDescription($form->getInput("description"));
422 $lrsType->setAvailability($form->getInput("availability"));
423
424 $lrsType->setLrsEndpoint(
425 ilUtil::removeTrailingPathSeparators($form->getInput("lrs_endpoint"))
426 );
427
428 $lrsType->setLrsKey($form->getInput("lrs_key"));
429 $lrsType->setLrsSecret($form->getInput("lrs_secret"));
430 $lrsType->setExternalLrs($form->getInput("external_lrs"));
431 $lrsType->setPrivacyIdent($form->getInput("privacy_ident"));
432 $lrsType->setPrivacyName($form->getInput("privacy_name"));
433 $lrsType->setPrivacyCommentDefault($form->getInput("privacy_comment_default"));
434 $lrsType->setRemarks($form->getInput("remarks"));
435
436 $oldBypassProxyEnabled = $lrsType->isBypassProxyEnabled();
437 $newBypassProxyEnabled = $form->getInput("cronjob_neccessary");
438 $lrsType->setBypassProxyEnabled((bool) $newBypassProxyEnabled);
439 if ($newBypassProxyEnabled && $newBypassProxyEnabled != $oldBypassProxyEnabled) {
441 }
442
443 $lrsType->setOnlyMoveon((bool) $form->getInput("only_moveon"));
444 $lrsType->setAchieved((bool) $form->getInput("achieved"));
445 $lrsType->setAnswered((bool) $form->getInput("answered"));
446 $lrsType->setCompleted((bool) $form->getInput("completed"));
447 $lrsType->setFailed((bool) $form->getInput("failed"));
448 $lrsType->setInitialized((bool) $form->getInput("initialized"));
449 $lrsType->setPassed((bool) $form->getInput("passed"));
450 $lrsType->setProgressed((bool) $form->getInput("progressed"));
451 $lrsType->setSatisfied((bool) $form->getInput("satisfied"));
452 $lrsType->setTerminated((bool) $form->getInput("terminated"));
453 $lrsType->setHideData((bool) $form->getInput("hide_data"));
454 $lrsType->setTimestamp((bool) $form->getInput("timestamp"));
455 $lrsType->setDuration((bool) $form->getInput("duration"));
456 $lrsType->setNoSubstatements((bool) $form->getInput("no_substatements"));
457
458 $lrsType->setForcePrivacySettings((bool) $form->getInput("force_privacy_setting"));
459 if ($lrsType->getForcePrivacySettings()) {
461 }
462
463 $lrsType->save();
464
465 $DIC->ctrl()->redirect($this, self::CMD_SHOW_LRS_TYPES_LIST);
466 }
467}
$_GET["client_id"]
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
This class represents a checkbox property in a property form.
static getTypesData($a_extended=false, $a_availability=null)
Get basic data array of all types (without field definitions)
This class represents a section header in a property form.
This class represents a hidden form property in a property form.
static getInstance()
Factory.
getAdminTabs()
administration tabs show only permissions and trash folder
static updatePrivacySettingsFromLrsType(ilCmiXapiLrsType $lrsType)
static updateByPassProxyFromLrsType(ilCmiXapiLrsType $lrsType)
Class ilObjectGUI Basic methods of all Output classes.
prepareOutput($a_show_subobjects=true)
prepare output
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This class represents a property form user interface.
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.
static removeTrailingPathSeparators($path)
global $DIC
Definition: goto.php:24