1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
pushservice.php
См. документацию.
1<?php
2
3namespace Bitrix\Calendar\Integration\Pull;
4
5use Bitrix\Main\Application;
6use Bitrix\Main\Loader;
7use Bitrix\Main\LoaderException;
8use Bitrix\Pull\Event;
9
11{
12 public const MODULE_ID = 'calendar';
13
14 private static ?self $instance;
15 private static bool $isJobOn = false;
16
17 private array $registry = [];
18
19 public static function getInstance(): PushService
20 {
21 self::$instance ??= new self();
22
23 return self::$instance;
24 }
25
29 public static function proceed(): void
30 {
31 if (!Loader::includeModule('pull'))
32 {
33 return;
34 }
35
36 self::getInstance()->sendEvents();
37 }
38
43 public static function addEvent($recipients, array $params): void
44 {
45 $params = self::preparePullManagerParams($params);
46
47 $parameters = [
48 'RECIPIENTS' => $recipients,
49 'PARAMS' => $params,
50 ];
51 self::getInstance()->registerEvent($parameters);
52 self::getInstance()->addBackgroundJob();
53 }
54
55 public static function addEventByTag(string $tag, array $params): void
56 {
57 $params = self::preparePullManagerParams($params);
58
59 $parameters = [
60 'TAG' => $tag,
61 'PARAMS' => $params,
62 ];
63 self::getInstance()->registerEvent($parameters);
64 self::getInstance()->addBackgroundJob();
65 }
66
67 private function addBackgroundJob(): void
68 {
69 if (!self::$isJobOn)
70 {
71 $application = Application::getInstance();
72 $application && $application->addBackgroundJob(self::proceed(...), [], 0);
73
74 self::$isJobOn = true;
75 }
76 }
77
81 private function registerEvent(array $parameters): void
82 {
83 $this->registry[] = [
84 'TAG' => $parameters['TAG'] ?? null,
85 'RECIPIENTS' => $parameters['RECIPIENTS'] ?? null,
86 'PARAMS' => $parameters['PARAMS'] ?? null,
87 ];
88 }
89
90 private function sendEvents(): void
91 {
92 foreach ($this->registry as $event)
93 {
94 if (isset($event['TAG']) && $event['TAG'] !== '')
95 {
96 \CPullWatch::AddToStack($event['TAG'], $event['PARAMS']);
97 }
98 else
99 {
100 Event::add($event['RECIPIENTS'], $event['PARAMS']);
101 }
102 }
103 }
104
105 private static function preparePullManagerParams(array $params): array
106 {
107 $pullManagerParams = [
108 'eventName' => $params['command'],
109 'item' => [],
110 'skipCurrentUser' => false,
111 'eventId' => null,
112 'ignoreDelay' => false,
113 ];
114
115 $params['params'] = array_merge($params['params'], $pullManagerParams);
116
117 return $params;
118 }
119}
static addEvent($recipients, array $params)
Определения pushservice.php:43
static addEventByTag(string $tag, array $params)
Определения pushservice.php:55
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$application
Определения bitrix.php:23
$event
Определения prolog_after.php:141
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799