ILIAS  trunk Revision v11.0_alpha-1749-g1a06bdef097
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
Triggerer.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
23 use ILIAS\UI\Component as C;
24 
35 trait Triggerer
36 {
40  private array $triggered_signals = array();
41 
47  protected function appendTriggeredSignal(C\Signal $signal, string $event)
48  {
49  $clone = clone $this;
50  if (!isset($clone->triggered_signals[$event])) {
51  $clone->triggered_signals[$event] = array();
52  }
53  $clone->triggered_signals[$event][] = new TriggeredSignal($signal, $event);
54  return $clone;
55  }
56 
62  protected function withTriggeredSignal(C\Signal $signal, string $event)
63  {
64  $clone = clone $this;
65  $clone->setTriggeredSignal($signal, $event);
66  return $clone;
67  }
68 
75  protected function setTriggeredSignal(C\Signal $signal, string $event): void
76  {
77  $this->triggered_signals[$event] = array();
78  $this->triggered_signals[$event][] = new TriggeredSignal($signal, $event);
79  }
80 
84  public function getTriggeredSignals(): array
85  {
86  return $this->flattenArray($this->triggered_signals);
87  }
88 
94  public function getTriggeredSignalsFor(string $event): array
95  {
96  if (!isset($this->triggered_signals[$event])) {
97  return [];
98  }
99  return array_map(
100  fn ($ts) => $ts->getSignal(),
101  $this->triggered_signals[$event]
102  );
103  }
104 
106  {
107  $clone = clone $this;
108  $clone->triggered_signals = array();
109  return $clone;
110  }
111 
115  private function flattenArray(array $array): array
116  {
117  $flatten = array();
118  array_walk_recursive($array, function ($a) use (&$flatten) {
119  $flatten[] = $a;
120  });
121  return $flatten;
122  }
123 }
appendTriggeredSignal(C\Signal $signal, string $event)
Append a triggered signal to other signals of the same event.
Definition: Triggerer.php:47
withTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event. ...
Definition: Triggerer.php:62
getTriggeredSignalsFor(string $event)
Get signals that are triggered for a certain event.
Definition: Triggerer.php:94
setTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event. ...
Definition: Triggerer.php:75
flattenArray(array $array)
Flatten a multidimensional array to a single dimension.
Definition: Triggerer.php:115
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples