14 private const DEFAULT_EVENT_SORT = 100;
19 $eventManager = ServiceLocator::getInstance()->get(EventManagerInterface::class);
21 foreach ($this->getEventSubscribers() as $eventSubscriberOptions)
23 if (is_array($eventSubscriberOptions))
25 $eventSubscriber = $eventSubscriberOptions[
'class'];
26 $eventSort = $eventSubscriberOptions[
'sort'];
30 $eventSubscriber = $eventSubscriberOptions;
31 $eventSort = self::DEFAULT_EVENT_SORT;
34 $subscriber =
new $eventSubscriber();
37 throw new \RuntimeException(sprintf(
38 'EventSubscriber must implement EventSubscriberInterface: %s given',
42 $eventClasses = $subscriber->getEventClasses();
43 foreach ($eventClasses as $eventClass)
45 if (!is_a($eventClass, BaseEvent::class,
true))
47 throw new \RuntimeException(sprintf(
'Event must extend BaseEvent: %s given', $eventClass));
50 $eventCallback = $subscriber;
52 fromModuleId: $eventClass::getModuleId(),
53 eventType: $eventClass::getEventType(),
61 private function getEventSubscribers():
array
64 Event\CheckIsOpenEvent::class,
65 Event\CreateEventOption::class,
66 Event\SendPullAfterCreate::class,
68 Event\EditEventOption::class,
69 Event\AfterOpenEventEdit::class,
70 Event\UpdateNewEventsNotify::class,
72 EventCategory\IncrementEventsCounter::class,
73 EventCategory\DecrementEventsCounter::class,
74 EventCategory\UpdateChannel::class,
75 EventCategory\SendPullAfterCreate::class,
76 EventCategory\SendPullAfterUpdate::class,
77 EventCategory\SendPullAfterDelete::class,
78 [
'class' => Event\CreateChannelThreadForEvent::class,
'sort' => 99],