• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Send/MentionService.php
  • Класс: BitrixImV2MessageSendMentionService
  • Вызов: MentionService::preparePushMessage
private function preparePushMessage(Message $message, string $chatTitle, string $userName, string $userGender): string
{
	Message::loadPhrases();

	$pushMessage = $message->getMessage();

	$pushFiles = '';
	if ($message->hasFiles())
	{
		foreach ($message->getFiles() as $file)
		{
			$pushFiles .= " [".Loc::getMessage('IM_MESSAGE_FILE').": ".$file->getDiskFile()->getName()."]";
		}
		$pushMessage .= $pushFiles;
	}

	$hasAttach = mb_strpos($pushMessage, '[ATTACH=') !== false;

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

	if (!$pushFiles && !$hasAttach && $message->getParams()->isSet('ATTACH'))
	{
		$pushMessage .= " [".Loc::getMessage('IM_MESSAGE_ATTACH')."]";
	}

	return
		Loc::getMessage('IM_MESSAGE_MENTION_PUSH_2_'.$userGender, ['#USER#' => $userName, '#TITLE#' => $chatTitle])
		. ': '
		. $pushMessage;
}