• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Send/PushService.php
  • Класс: BitrixImV2MessageSendPushService
  • Вызов: PushService::prepareMessageForPush
private function prepareMessageForPush(array $message): string
{
	Message::loadPhrases();

	$messageText = $message['message']['text'];
	if (isset($message['message']['text_push']) && $message['message']['text_push'])
	{
		$messageText = $message['message']['text_push'];
	}
	else
	{
		if (isset($message['message']['params']['ATTACH']) && count($message['message']['params']['ATTACH']) > 0)
		{
			$attachText = $message['message']['params']['ATTACH'][0]['DESCRIPTION'];
			if (!$attachText)
			{
				$attachText = Text::getEmoji('attach').' '.Loc::getMessage('IM_MESSAGE_ATTACH');
			}

			$messageText .=
				(empty($messageText)? '': ' ')
				. $attachText
			;
		}

		if (isset($message['files']) && count($message['files']) > 0)
		{
			$file = array_values($message['files'])[0];

			if ($file['type'] === 'image')
			{
				$fileName = Text::getEmoji($file['type']).' '.Loc::getMessage('IM_MESSAGE_IMAGE');
			}
			else if ($file['type'] === 'audio')
			{
				$fileName = Text::getEmoji($file['type']).' '.Loc::getMessage('IM_MESSAGE_AUDIO');
			}
			else if ($file['type'] === 'video')
			{
				$fileName = Text::getEmoji($file['type']).' '.Loc::getMessage('IM_MESSAGE_VIDEO');
			}
			else
			{
				$fileName = Text::getEmoji('file', Loc::getMessage('IM_MESSAGE_FILE').':').' '.$file['name'];
			}

			$messageText .= trim($fileName);
		}
	}

	$codeIcon = Text::getEmoji('code', '['.Loc::getMessage('IM_MESSAGE_CODE').']');
	$quoteIcon = Text::getEmoji('quote', '['.Loc::getMessage('IM_MESSAGE_QUOTE').']');

	$messageText = str_replace("n", ' ', $messageText);
	$messageText = preg_replace("/[CODE](.*?)[/CODE]/si", ' '.$codeIcon.' ', $messageText);
	$messageText = preg_replace("/[s].*?[/s]/i", '-', $messageText);
	$messageText = preg_replace("/[[bui]](.*?)[/[bui]]/i", "$1", $messageText);
	$messageText = preg_replace("/\[url\](.*?)\[\/url\]/i".BX_UTF_PCRE_MODIFIER, "$1", $messageText);
	$messageText = preg_replace("/\[url\s*=\s*((?:[^\[\]]++|\[ (?: (?>[^\[\]]+) | (?:\1) )* \])+)\s*\](.*?)\[\/url\]/ixs".BX_UTF_PCRE_MODIFIER, "$2", $messageText);
	$messageText = preg_replace_callback("/[USER=([0-9]{1,})][/USER]/i", ['BitrixImText', 'modifyShortUserTag'], $messageText);
	$messageText = preg_replace("/[USER=([0-9]+)( REPLACE)?](.+?)[/USER]/i", "$3", $messageText);
	$messageText = preg_replace("/[CHAT=([0-9]{1,})](.*?)[/CHAT]/i", "$2", $messageText);
	$messageText = preg_replace_callback("/[SEND(?:=(?:.+?))?](?:.+?)?[/SEND]/i", ['BitrixImText', "modifySendPut"], $messageText);
	$messageText = preg_replace_callback("/[PUT(?:=(?:.+?))?](?:.+?)?[/PUT]/i", ['BitrixImText', "modifySendPut"], $messageText);
	$messageText = preg_replace("/[CALL(?:=(.+?))?](.+?)?[/CALL]/i", "$2", $messageText);
	$messageText = preg_replace("/[PCH=([0-9]{1,})](.*?)[/PCH]/i", "$2", $messageText);
	$messageText = preg_replace_callback("/[ICON=([^]]*)]/i", ['BitrixImText', 'modifyIcon'], $messageText);
	$messageText = preg_replace('#-{54}.+?-{54}#s', ' '.$quoteIcon.' ', str_replace('#BR#', ' ', $messageText));
	$messageText = preg_replace('/^(>>(.*)(n)?)/mi', ' '.$quoteIcon.' ', str_replace('#BR#', ' ', $messageText));
	$messageText = preg_replace("/\[color\s*=\s*([^\]]+)\](.*?)\[\/color\]/is".BX_UTF_PCRE_MODIFIER, "$2", $messageText);
	$messageText = preg_replace("/\[size\s*=\s*([^\]]+)\](.*?)\[\/size\]/is".BX_UTF_PCRE_MODIFIER, "$2", $messageText);

	return trim($messageText);
}