ILIAS  trunk Revision v12.0_alpha-1227-g7ff6d300864
class.ilObjBadgeAdministrationGUI.php
Go to the documentation of this file.
1<?php
2
23
29{
30 private const string LIST_TYPES_ACTION = 'listTypes';
31 private const string LIST_IMG_TPL_ACTION = 'listImageTemplates';
32 private const string LIST_OBJ_BADGES_ACTION = 'listObjectBadges';
33 private const string EDIT_SETTINGS_ACTION = 'editSettings';
34 private const string SAVE_SETTINGS_ACTION = 'saveSettings';
35 private const string SAVE_IMG_TPL_ACTION = 'saveImageTemplate';
36 private const string UPDATE_IMG_TPL_ACTION = 'updateImageTemplate';
37 private const string ADD_IMG_TPL_ACTION = 'addImageTemplate';
38 private const string DELETE_IMG_TPL_ACTION = 'deleteImageTemplates';
39 private const string DELETE_OBJ_BADGES_ACTION = 'deleteObjectBadges';
41 private const string TABLE_ACTIONS = 'handleTableActions';
42 public const string TABLE_ALL_OBJECTS_ACTION = 'ALL_OBJECTS';
43
47
48 public function __construct(
49 $a_data,
50 int $a_id,
51 bool $a_call_by_reference = true,
52 bool $a_prepare_output = true
53 ) {
54 global $DIC;
55
56 $this->rbacsystem = $DIC->rbac()->system();
57 $this->ctrl = $DIC->ctrl();
58 $this->access = $DIC->access();
59 $this->lng = $DIC->language();
60 $this->toolbar = $DIC->toolbar();
61 $this->tpl = $DIC['tpl'];
62 $this->tabs = $DIC->tabs();
63 $this->type = 'bdga';
64 parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
65
66 $this->badge_request = new ilBadgeGUIRequest(
67 $DIC->http(),
68 $DIC->refinery()
69 );
70
71 $this->lng->loadLanguageModule('badge');
72 }
73
74 public function executeCommand(): void
75 {
76 $next_class = $this->ctrl->getNextClass($this) ?? '';
77 $cmd = $this->ctrl->getCmd() ?? '';
78
79 $this->prepareOutput();
80
81 switch (strtolower($next_class)) {
82 case strtolower(ilPermissionGUI::class):
83 $this->tabs_gui->setTabActive('perm_settings');
84 $perm_gui = new ilPermissionGUI($this);
85 $this->ctrl->forwardCommand($perm_gui);
86 break;
87
88 case strtolower(ilBadgeManagementGUI::class):
89 $this->assertActive();
90 $this->tabs_gui->setTabActive('activity');
91 $gui = new ilBadgeManagementGUI($this->ref_id, $this->obj_id, $this->type);
92 $this->ctrl->forwardCommand($gui);
93 break;
94
95 default:
96 if ($cmd === '' || $cmd === null || $cmd === 'view' || !method_exists($this, $cmd . 'Cmd')) {
98 }
99 $cmd .= 'Cmd';
100
101 if ($this->badge_request->getBadgeIdFromUrl()) {
102 $this->ctrl->setParameter($this, 'tid', $this->badge_request->getBadgeIdFromUrl());
103 }
104
105 $this->$cmd();
106 break;
107 }
108 }
109
110 public function getAdminTabs(): void
111 {
112 if ($this->rbacsystem->checkAccess('read', $this->object->getRefId())) {
113 $this->tabs_gui->addTab(
114 'settings',
115 $this->lng->txt('settings'),
116 $this->ctrl->getLinkTarget($this, self::EDIT_SETTINGS_ACTION)
117 );
118
119 if (ilBadgeHandler::getInstance()->isActive()) {
120 $this->tabs_gui->addTab(
121 'types',
122 $this->lng->txt('badge_types'),
123 $this->ctrl->getLinkTarget($this, self::LIST_TYPES_ACTION)
124 );
125
126 $this->tabs_gui->addTab(
127 'imgtmpl',
128 $this->lng->txt('badge_image_templates'),
129 $this->ctrl->getLinkTarget($this, self::LIST_IMG_TPL_ACTION)
130 );
131
132 $this->tabs_gui->addTab(
133 'activity',
134 $this->lng->txt('badge_activity_badges'),
135 $this->ctrl->getLinkTargetByClass('ilbadgemanagementgui', '')
136 );
137
138 $this->tabs_gui->addTab(
139 'obj_badges',
140 $this->lng->txt('badge_object_badges'),
141 $this->ctrl->getLinkTarget($this, self::LIST_OBJ_BADGES_ACTION)
142 );
143 }
144 }
145
146 if ($this->rbacsystem->checkAccess('edit_permission', $this->object->getRefId())) {
147 $this->tabs_gui->addTab(
148 'perm_settings',
149 $this->lng->txt('perm_settings'),
150 $this->ctrl->getLinkTargetByClass('ilpermissiongui', 'perm')
151 );
152 }
153 }
154
155 public function getSafePostCommands(): array
156 {
157 return [];
158 }
159
160 private function getTableAction(): ?string
161 {
162 return $this->http->wrapper()->query()->retrieve(
163 'tid_table_action',
164 $this->refinery->byTrying([
165 $this->refinery->kindlyTo()->string(),
166 $this->refinery->always(null)
167 ])
168 );
169 }
170
171 private function handleTableActionsCmd(): void
172 {
173 match ($this->getTableAction()) {
174 'badge_type_activate' => $this->activateTypes(),
175 'badge_type_deactivate' => $this->deactivateTypes(),
176 'badge_image_template_editImageTemplate', 'obj_badge_user' => $this->editImageTemplate(),
177 'obj_badge_activate' => $this->activateObjectBadges(),
178 'obj_badge_deactivate' => $this->deactivateObjectBadges(),
179 'obj_badge_show_users' => $this->listObjectBadgeUsers(),
180 'badge_image_template_delete' => $this->confirmDeleteImageTemplates(),
181 'obj_badge_delete' => $this->confirmDeleteObjectBadges(),
182 default => $this->ctrl->redirect($this, self::DEFAULT_ACTION),
183 };
184 }
185
186 public function getUnsafeGetCommands(): array
187 {
188 return [self::TABLE_ACTIONS];
189 }
190
191 private function assertActive(): void
192 {
193 if (!ilBadgeHandler::getInstance()->isActive()) {
194 $this->ctrl->redirect($this, self::DEFAULT_ACTION);
195 }
196 }
197
198 //
199 // settings
200 //
201
202 private function editSettingsCmd(?ilPropertyFormGUI $a_form = null): void
203 {
204 $this->tabs_gui->setTabActive('settings');
205
206 if (!$a_form) {
207 $a_form = $this->initFormSettings();
208 }
209
210 $this->tpl->setContent($a_form->getHTML());
211 }
212
213 private function saveSettingsCmd(): void
214 {
215 $this->checkPermission('write');
216
217 $form = $this->initFormSettings();
218 if ($form->checkInput()) {
220 $handler->setActive((bool) $form->getInput('act'));
221
222 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
223 $this->ctrl->redirect($this, self::EDIT_SETTINGS_ACTION);
224 }
225
226 $form->setValuesByPost();
227 $this->editSettingsCmd($form);
228 }
229
231 {
232 $form = new ilPropertyFormGUI();
233 $form->setFormAction($this->ctrl->getFormAction($this, self::SAVE_SETTINGS_ACTION));
234 $form->setTitle($this->lng->txt('badge_settings'));
235
236 if ($this->access->checkAccess('write', '', $this->object->getRefId())) {
237 $form->addCommandButton(self::SAVE_SETTINGS_ACTION, $this->lng->txt('save'));
238 $form->addCommandButton(self::EDIT_SETTINGS_ACTION, $this->lng->txt('cancel'));
239 }
240
241 $act = new ilCheckboxInputGUI($this->lng->txt('badge_service_activate'), 'act');
242 $act->setInfo($this->lng->txt('badge_service_activate_info'));
243 $form->addItem($act);
244
246 $act->setChecked($handler->isActive());
247
248 return $form;
249 }
250
251 //
252 // types
253 //
254
255 private function listTypesCmd(): void
256 {
257 $this->assertActive();
258 $this->tabs_gui->setTabActive('types');
259
260 $tpl = new ilBadgeTypesTableGUI($this->access->checkAccess('write', '', $this->object->getRefId()));
261 $tpl->renderTable(ILIAS_HTTP_PATH . '/' . $this->ctrl->getLinkTarget($this, self::TABLE_ACTIONS));
262 }
263
264 private function activateTypes(): void
265 {
266 $this->assertActive();
267
268 $tmpl_ids = $this->badge_request->getMultiActionBadgeIdsFromUrl();
269 if ($this->checkPermissionBool('write') && count($tmpl_ids) > 0) {
271 $change_state = [];
272 foreach ($handler->getInactiveTypes() as $type) {
273 if (!in_array($type, $tmpl_ids)) {
274 $change_state[] = $type;
275 }
276 }
277
278 if (current($tmpl_ids) === self::TABLE_ALL_OBJECTS_ACTION) {
279 $handler->setInactiveTypes([]);
280 } else {
281 $handler->setInactiveTypes($change_state);
282 }
283
284 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
285 }
286
287 $this->ctrl->redirect($this, self::LIST_TYPES_ACTION);
288 }
289
290 private function deactivateTypes(): void
291 {
292 $this->assertActive();
293
294 $tmpl_ids = $this->badge_request->getMultiActionBadgeIdsFromUrl();
295 if ($this->checkPermissionBool('write') && count($tmpl_ids) > 0) {
297 $change_state = [];
298 foreach ($handler->getInactiveTypes() as $type) {
299 if (!in_array($type, $tmpl_ids)) {
300 $change_state[] = $type;
301 }
302 }
303
304 $res = [];
305 if (current($tmpl_ids) === self::TABLE_ALL_OBJECTS_ACTION) {
306 $types = $handler->getAvailableTypes(false);
307 foreach ($types as $id => $type) {
308 $res[] = $id;
309 }
310 $handler->setInactiveTypes($res);
311 } else {
312 $handler->setInactiveTypes($change_state);
313 }
314 $inactive = array_merge($handler->getInactiveTypes(), $tmpl_ids);
315 $handler->setInactiveTypes($inactive);
316
317 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
318 }
319
320 $this->ctrl->redirect($this, self::LIST_TYPES_ACTION);
321 }
322
323 //
324 // images templates
325 //
326
327 private function listImageTemplatesCmd(): void
328 {
329 $this->assertActive();
330 $this->tabs_gui->setTabActive('imgtmpl');
331
332 if ($this->checkPermissionBool('write')) {
333 $this->toolbar->addButton(
334 $this->lng->txt('badge_add_template'),
335 $this->ctrl->getLinkTarget($this, self::ADD_IMG_TPL_ACTION)
336 );
337 }
338
339 $template_table = new ilBadgeImageTemplateTableGUI(
340 $this->access->checkAccess('write', '', $this->object->getRefId())
341 );
342 $template_table->renderTable(ILIAS_HTTP_PATH . '/' . $this->ctrl->getLinkTarget($this, self::TABLE_ACTIONS));
343 }
344
345 private function addImageTemplateCmd(
346 ?ilPropertyFormGUI $a_form = null
347 ): void {
348 $this->checkPermission('write');
349
350 $this->assertActive();
351 $this->tabs_gui->setTabActive('imgtmpl');
352
353 if (!$a_form) {
354 $a_form = $this->initImageTemplateForm('create');
355 }
356
357 $this->tpl->setContent($a_form->getHTML());
358 }
359
360 private function initImageTemplateForm(
361 string $a_mode
363 $form = new ilPropertyFormGUI();
364 if ($a_mode === 'create') {
365 $form->setFormAction($this->ctrl->getFormAction($this, self::SAVE_IMG_TPL_ACTION));
366 } else {
367 $form->setFormAction($this->ctrl->getFormAction($this, self::UPDATE_IMG_TPL_ACTION));
368 }
369 $form->setTitle($this->lng->txt('badge_image_template_form'));
370
371 $title = new ilTextInputGUI($this->lng->txt('title'), 'title');
372 $title->setMaxLength(255);
373 $title->setRequired(true);
374 $form->addItem($title);
375
376 $img = new ilImageFileInputGUI($this->lng->txt('image'), 'img');
377 $img->setSuffixes(['png', 'svg']);
378 if ($a_mode === 'create') {
379 $img->setRequired(true);
380 }
381 $img->setUseCache(false);
382 $img->setAllowDeletion(false);
383 $form->addItem($img);
384
385 $types_mode = new ilRadioGroupInputGUI($this->lng->txt('badge_template_types'), 'tmode');
386 $types_mode->setRequired(true);
387 $types_mode->setValue('all');
388 $form->addItem($types_mode);
389
390 $type_all = new ilRadioOption($this->lng->txt('badge_template_types_all'), 'all');
391 $types_mode->addOption($type_all);
392
393 $type_spec = new ilRadioOption($this->lng->txt('badge_template_types_specific'), 'spec');
394 $types_mode->addOption($type_spec);
395
396 $types = new ilCheckboxGroupInputGUI($this->lng->txt('badge_types'), 'type');
397 $types->setRequired(true);
398 $type_spec->addSubItem($types);
399
400 foreach (ilBadgeHandler::getInstance()->getAvailableTypes(false) as $id => $type) {
401 $types->addOption(new ilCheckboxOption($type->getCaption(), $id));
402 }
403
404 if ($a_mode === 'create') {
405 $form->addCommandButton(self::SAVE_IMG_TPL_ACTION, $this->lng->txt('save'));
406 } else {
407 $form->addCommandButton(self::UPDATE_IMG_TPL_ACTION, $this->lng->txt('save'));
408 }
409 $form->addCommandButton(self::LIST_IMG_TPL_ACTION, $this->lng->txt('cancel'));
410
411 return $form;
412 }
413
414 private function saveImageTemplateCmd(): void
415 {
416 $this->checkPermission('write');
417
418 $form = $this->initImageTemplateForm('create');
419 if ($form->checkInput()) {
420 $tmpl = new ilBadgeImageTemplate();
421 $tmpl->setTitle($form->getInput('title'));
422 $tmpl->setTypes($form->getInput('type'));
423 $tmpl->create();
424
425 $tmpl->processImageUpload($tmpl);
426
427 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
428 $this->ctrl->redirect($this, self::LIST_IMG_TPL_ACTION);
429 }
430
431 $form->setValuesByPost();
432 $this->addImageTemplateCmd($form);
433 }
434
435 private function editImageTemplate(
436 ?ilPropertyFormGUI $a_form = null
437 ): void {
438 $this->checkPermission('write');
439
440 $this->assertActive();
441 $this->tabs_gui->setTabActive('imgtmpl');
442
443 $tmpl_ids = $this->badge_request->getMultiActionBadgeIdsFromUrl();
444 if (count($tmpl_ids) !== 1) {
445 $tmpl_id = $this->badge_request->getTemplateId();
446 if (!$tmpl_id) {
447 $this->ctrl->redirect($this, self::LIST_IMG_TPL_ACTION);
448 }
449
450 $tmpl_ids = [$tmpl_id];
451 }
452
453 $template_id = (int) array_pop($tmpl_ids);
454 $this->ctrl->setParameter($this, 'tid', $template_id);
455
456 $tmpl = new ilBadgeImageTemplate($template_id);
457
458 if (!$a_form) {
459 $a_form = $this->initImageTemplateForm('edit');
460 $this->setImageTemplateFormValues($a_form, $tmpl);
461 }
462
463 $this->tpl->setContent($a_form->getHTML());
464 }
465
467 ilPropertyFormGUI $a_form,
469 ): void {
470 $a_form->getItemByPostVar('title')->setValue($a_tmpl->getTitle());
471 if ($a_tmpl->getImageRid() !== null) {
472 $img = $a_tmpl->getImageFromResourceId();
473 $a_form->getItemByPostVar('img')->setImage($img);
474 $a_form->getItemByPostVar('img')->setValue($a_tmpl->getImageRid());
475 } else {
476 $a_form->getItemByPostVar('img')->setImage($a_tmpl->getImagePath());
477 $a_form->getItemByPostVar('img')->setValue($a_tmpl->getImage());
478 }
479
480 if ($a_tmpl->getTypes()) {
481 $a_form->getItemByPostVar('tmode')->setValue('spec');
482 $a_form->getItemByPostVar('type')->setValue($a_tmpl->getTypes());
483 } else {
484 $a_form->getItemByPostVar('tmode')->setValue('all');
485 }
486 }
487
488 private function updateImageTemplateCmd(): void
489 {
490 $this->checkPermission('write');
491
492 $tmpl_id = $this->badge_request->getTemplateId();
493 if (!$tmpl_id) {
494 $this->ctrl->redirect($this, self::LIST_IMG_TPL_ACTION);
495 }
496
497 $this->ctrl->setParameter($this, 'tid', $tmpl_id);
498
499 $tmpl = new ilBadgeImageTemplate($tmpl_id);
500
501 $form = $this->initImageTemplateForm('update');
502 if ($form->checkInput()) {
503 $tmpl->setTitle($form->getInput('title'));
504
505 if ($form->getInput('tmode') !== 'all') {
506 $tmpl->setTypes($form->getInput('type'));
507 } else {
508 $tmpl->setTypes(null);
509 }
510
511 $tmpl->update();
512
513 $tmpl->processImageUpload($tmpl);
514
515 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
516 $this->ctrl->redirect($this, self::LIST_IMG_TPL_ACTION);
517 }
518
519 $this->setImageTemplateFormValues($form, $tmpl);
520 $form->setValuesByPost();
521 $this->editImageTemplate($form);
522 }
523
524 private function confirmDeleteImageTemplates(): void
525 {
526 $this->checkPermission('write');
527
528 $tmpl_ids = $this->badge_request->getBadgeAssignableUsers();
529 if ($tmpl_ids === [self::TABLE_ALL_OBJECTS_ACTION]) {
530 $tmpl_ids = [];
531 foreach (ilBadgeImageTemplate::getInstances() as $template) {
532 $tmpl_ids[] = $template->getId();
533 }
534 }
535
536 if (!$tmpl_ids) {
537 $this->ctrl->redirect($this, self::LIST_IMG_TPL_ACTION);
538 }
539
540 $this->tabs->clearTargets();
541 $this->tabs->setBackTarget(
542 $this->lng->txt('back'),
543 $this->ctrl->getLinkTarget($this, self::LIST_IMG_TPL_ACTION)
544 );
545
546 $confirmation_gui = new ilConfirmationGUI();
547 $confirmation_gui->setFormAction($this->ctrl->getFormAction($this));
548 $confirmation_gui->setHeaderText($this->lng->txt('badge_template_deletion_confirmation'));
549 $confirmation_gui->setCancel($this->lng->txt('cancel'), self::LIST_IMG_TPL_ACTION);
550 $confirmation_gui->setConfirm($this->lng->txt('delete'), self::DELETE_IMG_TPL_ACTION);
551
552 foreach ($tmpl_ids as $tmpl_id) {
553 $tmpl = new ilBadgeImageTemplate($tmpl_id);
554 $confirmation_gui->addItem('id[]', $tmpl_id, $tmpl->getTitle());
555 }
556
557 $this->tpl->setContent($confirmation_gui->getHTML());
558 }
559
560 private function deleteImageTemplatesCmd(): void
561 {
562 $tmpl_ids = $this->badge_request->getIds();
563
564 if ($this->checkPermissionBool('write') && count($tmpl_ids) > 0) {
565 if (current($tmpl_ids) === self::TABLE_ALL_OBJECTS_ACTION) {
566 $tmpl_ids = [];
567 foreach (ilBadgeImageTemplate::getInstances() as $template) {
568 $tmpl_ids[] = $template->getId();
569 }
570 }
571 foreach ($tmpl_ids as $tmpl_id) {
572 $tmpl = new ilBadgeImageTemplate((int) $tmpl_id);
573 $tmpl->delete();
574 }
575 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('badge_deletion'), true);
576 } else {
577 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_FAILURE, $this->lng->txt('badge_select_one'), true);
578 }
579
580 $this->ctrl->redirect($this, self::LIST_IMG_TPL_ACTION);
581 }
582
583 //
584 // object badges
585 //
586
587 private function listObjectBadgeUsers(): void
588 {
589 $parent_obj_id = $this->badge_request->getParentId();
590 if (!$parent_obj_id && $this->badge_request->getBadgeIdFromUrl()) {
591 // In this case, we want't to list the users that have been awarded a specific badge
592 $badge = new ilBadge($this->badge_request->getBadgeIdFromUrl());
593 $parent_obj_id = $badge->getParentId();
594 }
595 if (!$parent_obj_id) {
596 $this->ctrl->redirect($this, self::LIST_OBJ_BADGES_ACTION);
597 }
598
599 $this->assertActive();
600
601 $this->tabs_gui->clearTargets();
602 $this->tabs_gui->setBackTarget(
603 $this->lng->txt('back'),
604 $this->ctrl->getLinkTarget($this, self::LIST_OBJ_BADGES_ACTION)
605 );
606
607 $this->ctrl->saveParameter($this, 'pid');
608
609 $tbl = new ilBadgeUserTableGUI(null, null, $parent_obj_id, $this->badge_request->getBadgeId());
610 $tbl->renderTable(ILIAS_HTTP_PATH . '/' . $this->ctrl->getLinkTarget($this, self::TABLE_ACTIONS));
611 }
612
613 private function listObjectBadgesCmd(): void
614 {
615 $this->assertActive();
616 $this->tabs_gui->setTabActive('obj_badges');
617
618 $tbl = new ilObjectBadgeTableGUI($this, $this->access->checkAccess('write', '', $this->object->getRefId()));
619 $tbl->renderTable(ILIAS_HTTP_PATH . '/' . $this->ctrl->getLinkTarget($this, self::TABLE_ACTIONS));
620 }
621
622 //
623 // see ilBadgeManagementGUI
624 //
625
626 private function getObjectBadgesFromMultiAction(): array
627 {
628 $badge_ids = $this->badge_request->getMultiActionBadgeIdsFromUrl();
629 if (!$badge_ids ||
630 !$this->access->checkAccess('write', '', $this->object->getRefId())) {
631 $this->ctrl->redirect($this, self::LIST_OBJ_BADGES_ACTION);
632 }
633
634 return $badge_ids;
635 }
636
637 private function toggleObjectBadges(bool $a_status): void
638 {
639 $badge_ids = $this->getObjectBadgesFromMultiAction();
640 if (current($badge_ids) === self::TABLE_ALL_OBJECTS_ACTION) {
641 $filter = ['type' => '' , 'title' => '', 'object' => ''];
642 $badge_ids = [];
643 foreach (ilBadge::getObjectInstances($filter) as $badge_item) {
644 $badge_ids[] = $badge_item['id'];
645 }
646 }
647
648 foreach ($badge_ids as $badge_id) {
649 $badge = new ilBadge($badge_id);
650 $badge->setActive($a_status);
651 $badge->update();
652 }
653
654 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
655 $this->ctrl->redirect($this, self::LIST_OBJ_BADGES_ACTION);
656 }
657
658 private function activateObjectBadges(): void
659 {
660 $this->toggleObjectBadges(true);
661 }
662
663 private function deactivateObjectBadges(): void
664 {
665 $this->toggleObjectBadges(false);
666 }
667
668 private function confirmDeleteObjectBadges(): void
669 {
670 $badge_ids = $this->badge_request->getMultiActionBadgeIdsFromUrl();
671
672 $this->tabs->clearTargets();
673 $this->tabs->setBackTarget(
674 $this->lng->txt('back'),
675 $this->ctrl->getLinkTarget($this, self::LIST_OBJ_BADGES_ACTION)
676 );
677
678 $confirmation_gui = new ilConfirmationGUI();
679 $confirmation_gui->setFormAction($this->ctrl->getFormAction($this));
680 $confirmation_gui->setHeaderText($this->lng->txt('badge_deletion_confirmation'));
681 $confirmation_gui->setCancel($this->lng->txt('cancel'), self::LIST_OBJ_BADGES_ACTION);
682 $confirmation_gui->setConfirm($this->lng->txt('delete'), self::DELETE_OBJ_BADGES_ACTION);
683
684 if ($badge_ids === [self::TABLE_ALL_OBJECTS_ACTION]) {
685 $badge_ids = [];
686 $filter = [
687 'type' => '',
688 'title' => '',
689 'object' => ''
690 ];
691 foreach (ilBadge::getObjectInstances($filter) as $badge_item) {
692 $badge_ids[] = $badge_item['id'];
693 }
694 }
695 foreach ($badge_ids as $badge_id) {
696 $badge = new ilBadge($badge_id);
697 $parent = $badge->getParentMeta();
698
699 $container = '(' . $parent['type'] . '/' .
700 $parent['id'] . ') ' .
701 $parent['title'];
702 if ($parent['deleted']) {
703 $container .= ' <span class="il_ItemAlertProperty">' . $this->lng->txt('deleted') . '</span>';
704 }
705
706 $confirmation_gui->addItem(
707 'id[]',
708 $badge_id,
709 $container . ' - ' .
710 $badge->getTitle() .
711 ' (' . count(ilBadgeAssignment::getInstancesByBadgeId($badge_id)) . ')'
712 );
713 }
714
715 $this->tpl->setContent($confirmation_gui->getHTML());
716 }
717
718 private function deleteObjectBadgesCmd(): void
719 {
720 $badge_ids = $this->badge_request->getMultiActionBadgeIdsFromPost();
721
722 foreach ($badge_ids as $badge_id) {
723 $badge = new ilBadge($badge_id);
724 $badge->delete();
725 }
726
727 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
728 $this->ctrl->redirect($this, self::LIST_OBJ_BADGES_ACTION);
729 }
730}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static getInstancesByBadgeId(int $a_badge_id)
@ilCtrl_Calls ilBadgeManagementGUI: ilPropertyFormGUI
static getObjectInstances(?array $filter=null)
This class represents a property in a property form.
This class represents a checkbox property in a property form.
This class represents an option in a checkbox group.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setFormAction(string $a_formaction)
This class represents an image file property in a property form.
@ilCtrl_Calls ilObjBadgeAdministrationGUI: ilPermissionGUI, ilBadgeManagementGUI @ilCtrl_IsCalledBy i...
getUnsafeGetCommands()
This method must return a list of unsafe GET commands.
setImageTemplateFormValues(ilPropertyFormGUI $a_form, ilBadgeImageTemplate $a_tmpl)
addImageTemplateCmd(?ilPropertyFormGUI $a_form=null)
getAdminTabs()
administration tabs show only permissions and trash folder
editSettingsCmd(?ilPropertyFormGUI $a_form=null)
__construct( $a_data, int $a_id, bool $a_call_by_reference=true, bool $a_prepare_output=true)
getSafePostCommands()
This method must return a list of safe POST commands.
editImageTemplate(?ilPropertyFormGUI $a_form=null)
Class ilObjectGUI Basic methods of all Output classes.
ilGlobalTemplateInterface $tpl
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
prepareOutput(bool $show_sub_objects=true)
This class represents a property form user interface.
getItemByPostVar(string $a_post_var)
This class represents a property in a property form.
This class represents an option in a radio group.
class ilRbacSystem system function like checkAccess, addActiveRole ... Supporting system functions ar...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a text property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$res
Definition: ltiservices.php:69
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$handler
Definition: oai.php:31
global $DIC
Definition: shib_login.php:26
$container
@noRector
Definition: wac.php:37