ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
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 CMD_ABORT = 'abortBucket';
19  const CMD_REMOVE = 'abortBucket';
20  const CMD_USER_INTERACTION = 'userInteraction';
21  const IS_ASYNC = 'bt_task_is_async';
22  const CMD_GET_REPLACEMENT_ITEM = "getAsyncReplacementItem";
23 
24 
25  public function executeCommand() : void
26  {
27  $cmd = $this->ctrl()->getCmd();
28  switch ($cmd) {
29  case self::CMD_GET_REPLACEMENT_ITEM:
30  $this->getAsyncReplacementItem();
31  break;
32  case self::CMD_USER_INTERACTION:
33  $this->userInteraction();
34  break;
35  case self::CMD_ABORT:
36  case self::CMD_REMOVE:
37  $this->abortBucket();
38  break;
39  default:
40  break;
41  }
42  }
43 
44 
45  protected function userInteraction() : void
46  {
47  $observer_id = (int) $this->http()->request()->getQueryParams()[self::OBSERVER_ID];
48  $selected_option = $this->http()->request()->getQueryParams()[self::SELECTED_OPTION];
49  $from_url = $this->getFromURL();
50 
51  $observer = $this->dic()->backgroundTasks()->persistence()->loadBucket($observer_id);
52  $option = new UserInteractionOption("", $selected_option);
53  $this->dic()->backgroundTasks()->taskManager()->continueTask($observer, $option);
54  if ($this->http()->request()->getQueryParams()[self::IS_ASYNC] === "true") {
55  exit;
56  }
57  $this->ctrl()->redirectToURL($from_url);
58  }
59 
60 
61  protected function abortBucket()
62  {
63  $observer_id = (int) $this->http()->request()->getQueryParams()[self::OBSERVER_ID];
64  $from_url = $this->getFromURL();
65 
66  $bucket = $this->dic()->backgroundTasks()->persistence()->loadBucket($observer_id);
67 
68  $this->dic()->backgroundTasks()->taskManager()->quitBucket($bucket);
69  if ($this->http()->request()->getQueryParams()[self::IS_ASYNC] === "true") {
70  exit;
71  }
72  $this->ctrl()->redirectToURL($from_url);
73  }
74 
75 
80  protected function getAsyncReplacementItem()
81  {
82  $observer_id = (int) $this->http()->request()->getQueryParams()[self::OBSERVER_ID];
83  $bucket = $this->dic()->backgroundTasks()->persistence()->loadBucket($observer_id);
84 
85  $item_source = new ilBTPopOverGUI($this->dic());
86  $this->dic()->language()->loadLanguageModule('background_tasks');
87  $item = $item_source->getItemForObserver($bucket);
88  echo $this->dic()->ui()->renderer()->renderAsync($item);
89  exit;
90  }
91 
92 
96  protected function getFromURL()
97  {
98  $from_url = self::unhash($this->http()->request()->getQueryParams()[self::FROM_URL]);
99 
100  return $from_url;
101  }
102 
103 
109  public static function hash($url)
110  {
111  return base64_encode($url);
112  }
113 
114 
120  public static function unhash($url)
121  {
122  return base64_decode($url);
123  }
124 }
exit
Definition: login.php:29
getAsyncReplacementItem()
Loads one single aggregate notification item representing a button async to replace an existing one...
static http()
Fetches the global http state from ILIAS.
Class ilBTControllerGUI.
$url