1C-Bitrix 25.700.0
baseservice.php
См. документацию.
1<?php
2
3namespace Bitrix\Pull\Push\Service;
4
5use Bitrix\Main\Config\Option;
6use Bitrix\Main\Context;
7use Bitrix\Pull\Push\Message\BaseMessage;
8
9abstract class BaseService implements PushService
10{
11 protected bool $allowEmptyMessage = true;
12 const DEFAULT_EXPIRY = 14400;
13
14 protected function getBatchWithModifier($appMessages = Array(), $modifier = ""): string
15 {
16 $batch = "";
17 $batchComponents = [];
18 $modifier = trim($modifier, ";");
19 if (!is_array($appMessages) || count($appMessages) <= 0)
20 {
21 return $batch;
22 }
23 foreach ($appMessages as $appID => $tokenMessages)
24 {
25 $appBatch = [
26 $modifier,
27 "tkey={$appID}"
28 ];
29
30 if ($host = static::getHost())
31 {
32 $appBatch[] = "h={$host}";
33 }
34 $appMessagesBatches = [];
35 foreach ($tokenMessages as $token => $messages)
36 {
37 foreach ($messages as $messageArray)
38 {
39 if (
40 (!$this->allowEmptyMessage && trim($messageArray["MESSAGE"]) == '')
41 || !static::shouldBeSent($messageArray)
42 )
43 {
44 continue;
45 }
46
47
48 $message = static::getMessageInstance($token);
49 $id = random_int(1, 10000);
50 $message->setCustomIdentifier($id);
51 $message->setFromArray($messageArray);
52 $message->setCustomProperty('target', md5($messageArray["USER_ID"] . \CMain::GetServerUniqID()));
53 $messageBatch = $message->getBatch();
54 if(!empty($messageBatch))
55 {
56 $appMessagesBatches[] = $messageBatch;
57 }
58 }
59 }
60
61 if ($appMessagesBatches)
62 {
63 array_push($appBatch, ... $appMessagesBatches);
64 array_push($batchComponents, ... $appBatch);
65 }
66 }
67
68 if (!empty($batchComponents))
69 {
70 $batch = ";".implode(";", $batchComponents);
71 }
72
73 return $batch;
74 }
75
76 protected static function getGroupedByServiceMode($arMessages): array
77 {
78 $groupedMessages = array();
79 foreach ($arMessages as $keyToken => $messTokenData)
80 {
81 $count = count($messTokenData["messages"]);
82 for ($i = 0; $i < $count; $i++)
83 {
84 $mode = $messTokenData["mode"];
85 $mess = $messTokenData["messages"][$i];
86 $app_id = $mess["APP_ID"];
87 $groupedMessages[$mode][$app_id][$keyToken][] = $mess;
88 }
89 }
90
91 return $groupedMessages;
92 }
93
94 protected static function getGroupedByAppID($arMessages): array
95 {
96 $groupedMessages = array();
97 foreach ($arMessages as $keyToken => $messTokenData)
98 {
99 $count = count($messTokenData["messages"]);
100 for ($i = 0; $i < $count; $i++)
101 {
102 $mode = $arMessages[$keyToken]["mode"];
103 $mess = $messTokenData["messages"][$i];
104 $app_id = $mess["APP_ID"];
105 $groupedMessages[$app_id][$keyToken][] = $mess;
106 }
107 }
108
109 return $groupedMessages;
110 }
111
112 private static function getHost(): string {
113 if (defined("SITE_SERVER_NAME") && SITE_SERVER_NAME)
114 {
115 return SITE_SERVER_NAME;
116 }
117 else
118 {
119 return Option::get("main", "server_name", Context::getCurrent()->getRequest()->getHttpHost());
120 }
121 }
122
123 abstract function getMessageInstance(string $token): BaseMessage;
124 abstract static function shouldBeSent(array $messageRowData): bool;
125 abstract function getBatch(array $messages): string;
126}
$count
Определения admin_tab.php:4
static shouldBeSent(array $messageRowData)
static getGroupedByAppID($arMessages)
Определения baseservice.php:94
getBatchWithModifier($appMessages=Array(), $modifier="")
Определения baseservice.php:14
static getGroupedByServiceMode($arMessages)
Определения baseservice.php:76
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$host
Определения mysql_to_pgsql.php:32
if(!function_exists(__NAMESPACE__.'\\___972068685'))
Определения license.php:1
$message
Определения payment.php:8
$i
Определения factura.php:643
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$messages
Определения template.php:8