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/rospirotorg.ru/bitrix/modules/pull/lib/push/service/ |
Upload File : |
<?php namespace Bitrix\Pull\Push\Service; use Bitrix\Main\Config\Option; use Bitrix\Main\Context; use Bitrix\Pull\Push\Message\BaseMessage; abstract class BaseService implements PushService { protected bool $allowEmptyMessage = true; const DEFAULT_EXPIRY = 14400; protected function getBatchWithModifier($appMessages = Array(), $modifier = ""): string { $batch = ""; $batchComponents = []; $modifier = trim($modifier, ";"); if (!is_array($appMessages) || count($appMessages) <= 0) { return $batch; } foreach ($appMessages as $appID => $tokenMessages) { $appBatch = [ $modifier, "tkey={$appID}" ]; if ($host = static::getHost()) { $appBatch[] = "h={$host}"; } $appMessagesBatches = []; foreach ($tokenMessages as $token => $messages) { foreach ($messages as $messageArray) { if ( (!$this->allowEmptyMessage && trim($messageArray["MESSAGE"]) == '') || !static::shouldBeSent($messageArray) ) { continue; } $message = static::getMessageInstance($token); $id = random_int(1, 10000); $message->setCustomIdentifier($id); $message->setFromArray($messageArray); $message->setCustomProperty('target', md5($messageArray["USER_ID"] . \CMain::GetServerUniqID())); $messageBatch = $message->getBatch(); if(!empty($messageBatch)) { $appMessagesBatches[] = $messageBatch; } } } if ($appMessagesBatches) { array_push($appBatch, ... $appMessagesBatches); array_push($batchComponents, ... $appBatch); } } if (!empty($batchComponents)) { $batch = ";".implode(";", $batchComponents); } return $batch; } protected static function getGroupedByServiceMode($arMessages): array { $groupedMessages = array(); foreach ($arMessages as $keyToken => $messTokenData) { $count = count($messTokenData["messages"]); for ($i = 0; $i < $count; $i++) { $mode = $messTokenData["mode"]; $mess = $messTokenData["messages"][$i]; $app_id = $mess["APP_ID"]; $groupedMessages[$mode][$app_id][$keyToken][] = $mess; } } return $groupedMessages; } protected static function getGroupedByAppID($arMessages): array { $groupedMessages = array(); foreach ($arMessages as $keyToken => $messTokenData) { $count = count($messTokenData["messages"]); for ($i = 0; $i < $count; $i++) { $mode = $arMessages[$keyToken]["mode"]; $mess = $messTokenData["messages"][$i]; $app_id = $mess["APP_ID"]; $groupedMessages[$app_id][$keyToken][] = $mess; } } return $groupedMessages; } private static function getHost(): string { if (defined("SITE_SERVER_NAME") && SITE_SERVER_NAME) { return SITE_SERVER_NAME; } else { return Option::get("main", "server_name", Context::getCurrent()->getRequest()->getHttpHost()); } } abstract function getMessageInstance(string $token): BaseMessage; abstract static function shouldBeSent(array $messageRowData): bool; abstract function getBatch(array $messages): string; }