| <?php |
|
|
| namespace Kanboard\Core\Plugin; |
|
|
| |
| |
| |
| |
| |
| |
| class Hook |
| { |
| |
| |
| |
| |
| |
| |
| private $hooks = array(); |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function on($hook, $value) |
| { |
| if (! isset($this->hooks[$hook])) { |
| $this->hooks[$hook] = array(); |
| } |
|
|
| $this->hooks[$hook][] = $value; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function getListeners($hook) |
| { |
| return isset($this->hooks[$hook]) ? $this->hooks[$hook] : array(); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function exists($hook) |
| { |
| return isset($this->hooks[$hook]); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public function merge($hook, array &$values, array $params = array()) |
| { |
| foreach ($this->getListeners($hook) as $listener) { |
| $result = call_user_func_array($listener, $params); |
|
|
| if (is_array($result) && ! empty($result)) { |
| $values = array_merge($values, $result); |
| } |
| } |
|
|
| return $values; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function first($hook, array $params = array()) |
| { |
| foreach ($this->getListeners($hook) as $listener) { |
| return call_user_func_array($listener, $params); |
| } |
|
|
| return null; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function reference($hook, &$param) |
| { |
| foreach ($this->getListeners($hook) as $listener) { |
| $listener($param); |
| } |
|
|
| return $param; |
| } |
| } |
|
|