ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilBTControllerGUI.php
Go to the documentation of this file.
1<?php
2
4use ILIAS\Modules\OrgUnit\ARHelper\DIC;
5
13{
14 use DIC;
15 const FROM_URL = 'from_url';
16 const OBSERVER_ID = 'observer_id';
17 const SELECTED_OPTION = 'selected_option';
18 const REPLACE_SIGNAL = 'replaceSignal';
19 const CMD_ABORT = 'abortBucket';
20 const CMD_REMOVE = 'abortBucket';
21 const CMD_GET_POPOVER_CONTENT = 'getPopoverContent';
22 const CMD_USER_INTERACTION = 'userInteraction';
23 const IS_ASYNC = 'bt_task_is_async';
24 const CMD_GET_REPLACEMENT_ITEM = "getAsyncReplacementItem";
25
26
27 public function executeCommand()
28 {
29 switch ($this->ctrl()->getCmdClass()) {
30 default:
31 $this->performCommand();
32 }
33 }
34
35
36 protected function performCommand()
37 {
38 $cmd = $this->ctrl()->getCmd();
39 switch ($cmd) {
41 $this->getPopoverContent();
42 break;
44 $this->userInteraction();
45 break;
46 case self::CMD_ABORT:
48 $this->abortBucket();
49 break;
50 default:
51 break;
52 }
53 }
54
55
56 protected function userInteraction()
57 {
58 $observer_id = (int) $this->http()->request()->getQueryParams()[self::OBSERVER_ID];
59 $selected_option = $this->http()->request()->getQueryParams()[self::SELECTED_OPTION];
60 $from_url = $this->getFromURL();
61 try {
62 $observer = $this->dic()->backgroundTasks()->persistence()->loadBucket($observer_id);
63 } catch (Throwable $t) {
64 $this->ctrl()->redirectToURL($from_url);
65 }
66 $option = new UserInteractionOption("", $selected_option);
67 $this->dic()->backgroundTasks()->taskManager()->continueTask($observer, $option);
68 if ($this->http()->request()->getQueryParams()[self::IS_ASYNC] === "true") {
69 exit;
70 }
71 $this->ctrl()->redirectToURL($from_url);
72 }
73
74
75 protected function abortBucket()
76 {
77 $observer_id = (int) $this->http()->request()->getQueryParams()[self::OBSERVER_ID];
78 $from_url = $this->getFromURL();
79
80 $bucket = $this->dic()->backgroundTasks()->persistence()->loadBucket($observer_id);
81
82 $this->dic()->backgroundTasks()->taskManager()->quitBucket($bucket);
83 if ($this->http()->request()->getQueryParams()[self::IS_ASYNC] === "true") {
84 exit;
85 }
86 $this->ctrl()->redirectToURL($from_url);
87 }
88
89
90 protected function getPopoverContent()
91 {
93 $gui = $this->dic()->backgroundTasks()->injector()->createInstance(ilBTPopOverGUI::class);
94 $signal_id = $this->http()->request()->getQueryParams()[self::REPLACE_SIGNAL];
95
96 $this->ctrl()
97 ->setParameterByClass(ilBTControllerGUI::class, self::REPLACE_SIGNAL, $signal_id);
98
99 $replace_url = $this->ctrl()
100 ->getLinkTargetByClass([ ilBTControllerGUI::class ], self::CMD_GET_POPOVER_CONTENT, "", true);
101
102 echo $this->ui()->renderer()->renderAsync($gui->getPopOverContent($this->user()
103 ->getId(), $this->getFromURL(), $replace_url));
104 exit;
105 }
106
107
111 protected function getFromURL()
112 {
113 $from_url = self::unhash($this->http()->request()->getQueryParams()[self::FROM_URL]);
114
115 return $from_url;
116 }
117
118
124 public static function hash($url)
125 {
126 return base64_encode($url);
127 }
128
129
135 public static function unhash($url)
136 {
137 return base64_decode($url);
138 }
139}
exit
Definition: backend.php:16
An exception for terminatinating execution or to throw for unit testing.
Class ilBTControllerGUI.
static http()
Fetches the global http state from ILIAS.
$url