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;
}