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