docs/api/source-system.engine.event.html
| 1: | <?php | | 2: | /** | | 3: | * @package OpenCart | | 4: | * | | 5: | * @author Daniel Kerr | | 6: | * @copyright Copyright (c) 2005 - 2022, OpenCart, Ltd. (https://www.opencart.com/) | | 7: | * @license https://opensource.org/licenses/GPL-3.0 | | 8: | * | | 9: | * @see https://www.opencart.com | | 10: | */ | | 11: | namespace Opencart\System\Engine; | | 12: | /** | | 13: | * Class Event | | 14: | * | | 15: | * https://github.com/opencart/opencart/wiki/Events-(script-notifications)-2.2.x.x | | 16: | */ | | 17: | class Event { | | 18: | /** | | 19: | * @var \Opencart\System\Engine\Registry | | 20: | */ | | 21: | protected \Opencart\System\Engine\Registry $registry; | | 22: | /** | | 23: | * @var array<int, array<string, mixed>> | | 24: | */ | | 25: | protected array $data = []; | | 26: | | | 27: | /** | | 28: | * Constructor | | 29: | * | | 30: | * @param \Opencart\System\Engine\Registry $registry | | 31: | */ | | 32: | public function __construct(\Opencart\System\Engine\Registry $registry) { | | 33: | $this->registry = $registry; | | 34: | } | | 35: | | | 36: | /** | | 37: | * Register | | 38: | * | | 39: | * @param string $trigger | | 40: | * @param \Opencart\System\Engine\Action $action | | 41: | * @param int $priority | | 42: | * | | 43: | * @return void | | 44: | */ | | 45: | public function register(string $trigger, \Opencart\System\Engine\Action $action, int $priority = 0): void { | | 46: | $this->data[] = [ | | 47: | 'trigger' => $trigger, | | 48: | 'action' => $action, | | 49: | 'priority' => $priority | | 50: | ]; | | 51: | | | 52: | $sort_order = []; | | 53: | | | 54: | foreach ($this->data as $key => $value) { | | 55: | $sort_order[$key] = $value['priority']; | | 56: | } | | 57: | | | 58: | array_multisort($sort_order, SORT_ASC, $this->data); | | 59: | } | | 60: | | | 61: | /** | | 62: | * Trigger | | 63: | * | | 64: | * @param string $event | | 65: | * @param array<mixed> $args | | 66: | * | | 67: | * @return mixed | | 68: | */ | | 69: | public function trigger(string $event, array $args = []) { | | 70: | foreach ($this->data as $value) { | | 71: | if (preg_match('/^' . str_replace(['*', '?'], ['.*', '.'], preg_quote($value['trigger'], '/')) . '/', $event)) { | | 72: | $value['action']->execute($this->registry, $args); | | 73: | } | | 74: | } | | 75: | | | 76: | return ''; | | 77: | } | | 78: | | | 79: | /** | | 80: | * Unregister | | 81: | * | | 82: | * @param string $trigger | | 83: | * @param string $route | | 84: | * | | 85: | * @return void | | 86: | */ | | 87: | public function unregister(string $trigger, string $route): void { | | 88: | foreach ($this->data as $key => $value) { | | 89: | if ($trigger == $value['trigger'] && $value['action']->getId() == $route) { | | 90: | unset($this->data[$key]); | | 91: | } | | 92: | } | | 93: | } | | 94: | | | 95: | /** | | 96: | * Clear | | 97: | * | | 98: | * @param string $trigger | | 99: | * | | 100: | * @return void | | 101: | */ | | 102: | public function clear(string $trigger): void { | | 103: | foreach ($this->data as $key => $value) { | | 104: | if ($trigger == $value['trigger']) { | | 105: | unset($this->data[$key]); | | 106: | } | | 107: | } | | 108: | } | | 109: | } | | 110: | |
OpenCart API API documentation generated by ApiGen dev-master