1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
eventsubscribermanager.php
См. документацию.
1<?php
2
3namespace Bitrix\Calendar\Internals\EventManager\EventSubscriber;
4
5use Bitrix\Calendar\Internals\EventManager\BaseEvent;
6use Bitrix\Calendar\Internals\EventManager\EventManagerInterface;
7use Bitrix\Main\DI\ServiceLocator;
8
13{
14 private const DEFAULT_EVENT_SORT = 100;
15
16 public function __invoke(): void
17 {
19 $eventManager = ServiceLocator::getInstance()->get(EventManagerInterface::class);
20
21 foreach ($this->getEventSubscribers() as $eventSubscriberOptions)
22 {
23 if (is_array($eventSubscriberOptions))
24 {
25 $eventSubscriber = $eventSubscriberOptions['class'];
26 $eventSort = $eventSubscriberOptions['sort'];
27 }
28 else
29 {
30 $eventSubscriber = $eventSubscriberOptions;
31 $eventSort = self::DEFAULT_EVENT_SORT;
32 }
33
34 $subscriber = new $eventSubscriber();
35 if (!($subscriber instanceof EventSubscriberInterface))
36 {
37 throw new \RuntimeException(sprintf(
38 'EventSubscriber must implement EventSubscriberInterface: %s given',
39 $eventSubscriber
40 ));
41 }
42 $eventClasses = $subscriber->getEventClasses();
43 foreach ($eventClasses as $eventClass)
44 {
45 if (!is_a($eventClass, BaseEvent::class, true))
46 {
47 throw new \RuntimeException(sprintf('Event must extend BaseEvent: %s given', $eventClass));
48 }
49
50 $eventCallback = $subscriber;
51 $eventManager->addEventHandler(
52 fromModuleId: $eventClass::getModuleId(),
53 eventType: $eventClass::getEventType(),
54 callback: $eventCallback,
55 sort: $eventSort,
56 );
57 }
58 }
59 }
60
61 private function getEventSubscribers(): array
62 {
63 return [
64 Event\CheckIsOpenEvent::class,
65 Event\CreateEventOption::class,
66 Event\SendPullAfterCreate::class,
67
68 Event\EditEventOption::class,
69 Event\AfterOpenEventEdit::class,
70 Event\UpdateNewEventsNotify::class,
71
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],
79 ];
80 }
81}
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$eventManager
Определения include.php:412
case callback
Определения wrapper_popup.php:31