ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilBTControllerGUI.php
Go to the documentation of this file.
1 <?php
2 
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) {
40  case self::CMD_GET_POPOVER_CONTENT:
41  $this->getPopoverContent();
42  break;
43  case self::CMD_USER_INTERACTION:
44  $this->userInteraction();
45  break;
46  case self::CMD_ABORT:
47  case self::CMD_REMOVE:
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 }
static http()
Fetches the global http state from ILIAS.
exit
Definition: backend.php:16
Class ilBTControllerGUI.
$url