%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/modules/pull/classes/general/pushservices/
Upload File :
Create Path :
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);

}

Zerion Mini Shell 1.0