static function PrepareMessageForPush($message)
{
if (isset($message['message']['text_push']) && $message['message']['text_push'])
{
$message['message']['text'] = $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 = BitrixImText::getEmoji('attach').' '.GetMessage('IM_MESSAGE_ATTACH');
}
if ($attachText === CIMMessageParamAttach::SKIP_MESSAGE)
{
$attachText = '';
}
$message['message']['text'] .=
(empty($message['message']['text'])? '': " ")
.$attachText
;
}
if (isset($message['files']) && count($message['files']) > 0)
{
$file = array_values($message['files'])[0];
if ($file['type'] === 'image')
{
$fileName = BitrixImText::getEmoji($file['type']).' '.GetMessage('IM_MESSAGE_IMAGE');
}
else if ($file['type'] === 'audio')
{
$fileName = BitrixImText::getEmoji($file['type']).' '.GetMessage('IM_MESSAGE_AUDIO');
}
else if ($file['type'] === 'video')
{
$fileName = BitrixImText::getEmoji($file['type']).' '.GetMessage('IM_MESSAGE_VIDEO');
}
else
{
$fileName = BitrixImText::getEmoji('file', GetMessage('IM_MESSAGE_FILE').":")." ".$file['name'];
}
$message['message']['text'] .= trim($fileName);
}
}
$codeIcon = BitrixImText::getEmoji('code', "[".GetMessage('IM_MESSAGE_CODE')."]");
$quoteIcon = BitrixImText::getEmoji('quote', "[".GetMessage('IM_QUOTE')."]");
$message['message']['text'] = str_replace("n", " ", $message['message']['text']);
$message['message']['text'] = preg_replace("/[CODE](.*?)[/CODE]/si", " ".$codeIcon." ", $message['message']['text']);
$message['message']['text'] = preg_replace("/[s].*?[/s]/i", "-", $message['message']['text']);
$message['message']['text'] = preg_replace("/[[bui]](.*?)[/[bui]]/i", "$1", $message['message']['text']);
$message['message']['text'] = preg_replace("/\[url\](.*?)\[\/url\]/i".BX_UTF_PCRE_MODIFIER, "$1", $message['message']['text']);
$message['message']['text'] = preg_replace("/\[url\s*=\s*((?:[^\[\]]++|\[ (?: (?>[^\[\]]+) | (?:\1) )* \])+)\s*\](.*?)\[\/url\]/ixs".BX_UTF_PCRE_MODIFIER, "$2", $message['message']['text']);
$message['message']['text'] = preg_replace_callback("/[USER=([0-9]{1,})][/USER]/i", Array('BitrixImText', 'modifyShortUserTag'), $message['message']['text']);
$message['message']['text'] = preg_replace("/[USER=([0-9]+)( REPLACE)?](.+?)[/USER]/i", "$3", $message['message']['text']);
$message['message']['text'] = preg_replace("/[CHAT=([0-9]{1,})](.*?)[/CHAT]/i", "$2", $message['message']['text']);
$message['message']['text'] = preg_replace("/[context=(chatd+|d+:d+)/(d+)](.*?)[/context]/i", "$3", $message['message']['text']);
$message['message']['text'] = preg_replace_callback("/[SEND(?:=(?:.+?))?](?:.+?)?[/SEND]/i", Array("CIMMessenger", "PrepareMessageForPushSendPutCallBack"), $message['message']['text']);
$message['message']['text'] = preg_replace_callback("/[PUT(?:=(?:.+?))?](?:.+?)?[/PUT]/i", Array("CIMMessenger", "PrepareMessageForPushSendPutCallBack"), $message['message']['text']);
$message['message']['text'] = preg_replace("/[CALL(?:=(.+?))?](.+?)?[/CALL]/i", "$2", $message['message']['text']);
$message['message']['text'] = preg_replace("/[PCH=([0-9]{1,})](.*?)[/PCH]/i", "$2", $message['message']['text']);
$message['message']['text'] = preg_replace_callback("/[ICON=([^]]*)]/i", Array("CIMMessenger", "PrepareMessageForPushIconCallBack"), $message['message']['text']);
$message['message']['text'] = preg_replace('#-{54}.+?-{54}#s', " ".$quoteIcon." ", str_replace(array("#BR#"), Array(" "), $message['message']['text']));
$message['message']['text'] = preg_replace('/^(>>(.*)(n)?)/mi', " ".$quoteIcon." ", str_replace(array("#BR#"), Array(" "), $message['message']['text']));
$message['message']['text'] = preg_replace("/\[color\s*=\s*([^\]]+)\](.*?)\[\/color\]/is".BX_UTF_PCRE_MODIFIER, "$2", $message['message']['text']);
$message['message']['text'] = preg_replace("/\[size\s*=\s*([^\]]+)\](.*?)\[\/size\]/is".BX_UTF_PCRE_MODIFIER, "$2", $message['message']['text']);
return trim($message['message']['text']);
}