Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/calendar/lib/internals/eventmanager/ |
Upload File : |
<?php namespace Bitrix\Calendar\Internals\EventManager; use Bitrix\Calendar\Core\Common; use Bitrix\Calendar\Internals\EventManager\EventSubscriber\EventSubscriberInterface; use Bitrix\Main\DI\ServiceLocator; use Bitrix\Main\Event; use Bitrix\Main\EventResult; abstract class BaseEvent { protected static array $subscribers = []; /** * @return EventResult[] */ public function emit(): array { foreach ($this->getSubscribers() as $subscriber) { self::$subscribers[$this::getEventType()] ??= []; if (!empty(self::$subscribers[$this::getEventType()][$subscriber::class])) { continue; } ServiceLocator::getInstance()->get(EventManagerInterface::class)->addEventHandler( fromModuleId: $this::getModuleId(), eventType: $this::getEventType(), callback: $subscriber, ); self::$subscribers[$this::getEventType()][$subscriber::class] = $subscriber::class; } return $this->send($this->buildEvent()); } protected function send(Event $event): array { /** @var EventManagerInterface $eventManager */ $eventManager = ServiceLocator::getInstance()->get(EventManagerInterface::class); $eventManager->send($event); return $event->getResults(); } protected function buildEvent(): Event { return new Event($this::getModuleId(), $this::getEventType(), $this->getEventParams()); } public static function getModuleId(): string { return Common::CALENDAR_MODULE_ID; } abstract public static function getEventType(): string; abstract protected function getEventParams(): array; /** * @return EventSubscriberInterface[] */ protected function getSubscribers(): array { return []; } }