2namespace Bitrix\Rest\Event;
4use Bitrix\Main\Application;
7use Bitrix\Rest\EventOfflineTable;
8use Bitrix\Main\EventManager;
9use Bitrix\Rest\Tools\Diagnostics\Event\Logger;
10use Bitrix\Rest\Tools\Diagnostics\Event\LogType;
11use Bitrix\Rest\Tools\Diagnostics\LoggerManager;
20 private array $eventList = [];
21 private bool $isFinaliseInit =
false;
25 if (static::$instance ===
null)
27 static::$instance =
new static();
30 return static::$instance;
35 $this->eventList = array_merge($this->eventList, $eventList);
44 if (!$this->isFinaliseInit)
46 $this->isFinaliseInit =
true;
49 job: [__CLASS__,
'runFinalize'],
50 priority: $application::JOB_PRIORITY_LOW
71 $offlineEventsCount = [];
72 $offlineEventsApp = [];
74 foreach ($this->eventList as $item)
77 $handler = $item[
'HANDLER'];
80 $serverAuthData[
'client_id'] !==
$application[
'CLIENT_ID']
81 || $serverAuthData[
'auth_connector'] !== $handler[
'CONNECTOR_ID']
84 if (!isset($offlineEventsCount[
$application[
'CLIENT_ID']]))
89 if (!isset($offlineEventsCount[
$application[
'CLIENT_ID']][$handler[
'CONNECTOR_ID']]))
91 $offlineEventsCount[
$application[
'CLIENT_ID']][$handler[
'CONNECTOR_ID']] = 0;
97 'EVENT_NAME' => $handler[
'EVENT_NAME'],
98 'EVENT_DATA' => $item[
'DATA'],
99 'EVENT_ADDITIONAL' => $item[
'AUTH'],
100 'CONNECTOR_ID' => $handler[
'CONNECTOR_ID'],
104 $offlineEventsCount[
$application[
'CLIENT_ID']][$handler[
'CONNECTOR_ID']]++;
109 LoggerManager::getInstance()->getLogger()?->info(
111 .
"{date} - {host}\n{delimiter}\n"
112 .
"Event skipped because initializer is current application. \n"
113 .
"auth: {serverAuthData}"
114 .
"app: {application}\n", [
115 'serverAuthData' => $serverAuthData,
117 'MESSAGE' => LogType::OFFLINE_EVENT_SKIPPED->value,
122 if (!empty($offlineEventsCount))
127 if (!empty($offlineEventsApp))
132 $this->eventList = [];
133 $this->isFinaliseInit =
false;
138 $server = \CRestServer::instance();
139 $serverAuthData =
array(
'auth_connector' =>
'',
'client_id' =>
'');
142 $serverAuthData = $server->getAuthData();
143 if(!isset($serverAuthData[
'auth_connector']))
145 $serverAuthData[
'auth_connector'] =
'';
148 $serverAuthData[
'client_id'] = $server->getClientId();
151 return $serverAuthData;
156 foreach (EventManager::getInstance()->findEventHandlers(
158 "onAfterOfflineEventCall"
169 if(is_array($connectorCounters) && !empty($connectorCounters))
178 if(Loader::includeModule(
'pull'))
180 $eventParam =
array();
182 foreach($connectorCounters as $connectorId =>
$count)
184 $eventParam[] =
array(
185 'connector_id' => $connectorId,
191 'module_id' =>
'rest',
192 'command' =>
'event_offline',
193 'params' => $eventParam,
static add($recipient, array $parameters, $channelType=\CPullChannel::TYPE_PRIVATE)
notifyApplication($clientId, array $connectorCounters)
sendOfflineEvent(array $appList)
notifyApplications(array $counters)
static callEvent($fields)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ExecuteModuleEventEx($arEvent, $arParams=[])