%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/pull/classes/general/pushservices/ |
Current File : //home/bitrix/www/bitrix/modules/pull/classes/general/pushservices/push_service.php |
<?php use Bitrix\Main\Text\Encoding; abstract class CPushService { protected $allowEmptyMessage = true; const DEFAULT_EXPIRY = 14400; protected function getBatchWithModifier($appMessages = Array(), $modifier = "") { global $APPLICATION; $batch = ""; if (!is_array($appMessages) || count($appMessages) <= 0) { return $batch; } foreach ($appMessages as $appID => $arMessages) { $appModifier = ";tkey=" . $appID . ";"; foreach ($arMessages as $token => $messages) { if (!count($messages)) { continue; } $mess = 0; $messCount = count($messages); while ($mess < $messCount) { /** * @var CPushMessage $message ; */ $messageArray = $messages[$mess]; if (!$this->allowEmptyMessage && strlen(trim($messageArray["MESSAGE"])) <= 0) { $mess++; continue; } $message = static::getMessageInstance($token); $id = rand(1, 10000); $message->setCustomIdentifier($id); $text = \Bitrix\Main\Text\Encoding::convertEncoding($messageArray["MESSAGE"], SITE_CHARSET, "utf-8"); $title = \Bitrix\Main\Text\Encoding::convertEncoding($messageArray["TITLE"], SITE_CHARSET, "utf-8"); $message->setSound(''); $message->setText($text); $message->setTitle($title); if (strlen($text) > 0) { $message->setSound( (strlen($messageArray["SOUND"]) > 0) ? $messageArray["SOUND"] : "default" ); } if ($messages[$mess]["CATEGORY"]) { $message->setCategory($messages[$mess]["CATEGORY"]); } if (array_key_exists("EXPIRY", $messageArray)) { $expiry = intval($messageArray["EXPIRY"]); $message->setExpiry((intval($expiry) > 0) ? intval($expiry) : self::DEFAULT_EXPIRY ); } if ($messageArray["PARAMS"]) { $message->setCustomProperty( 'params', (is_array($messageArray["PARAMS"])) ? json_encode($messageArray["PARAMS"]) : $messageArray["PARAMS"] ); } if ($messageArray["ADVANCED_PARAMS"] && is_array($messageArray["ADVANCED_PARAMS"])) { $messageArray["ADVANCED_PARAMS"] = \Bitrix\Main\Text\Encoding::convertEncoding($messageArray["ADVANCED_PARAMS"], SITE_CHARSET, "UTF-8"); foreach ($messageArray["ADVANCED_PARAMS"] as $param => $value) { $message->setCustomProperty($param, $value); } } $message->setCustomProperty('target', md5($messages[$mess]["USER_ID"] . CMain::GetServerUniqID())); $badge = intval($messages[$mess]["BADGE"]); if (array_key_exists("BADGE", $messages[$mess]) && $badge >= 0) { $message->setBadge($badge); } if (strlen($batch) > 0) { $batch .= ";"; } $messageBatch = $message->getBatch(); if($messageBatch && strlen($messageBatch)>0) { $batch .= $messageBatch; } $mess++; } } $batch = $appModifier . $batch; } if (strlen($batch) == 0) { return $batch; } return $modifier . $batch; } protected static function getGroupedByServiceMode($arMessages) { $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[$mode][$app_id][$keyToken][] = $mess; } } return $groupedMessages; } protected static function getGroupedByAppID($arMessages) { $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; } abstract function getMessageInstance($token); abstract function getBatch($messages); }