- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Message.php
- Класс: BitrixImV2Message
- Вызов: Message::getPreviewMessage
public function getPreviewMessage(?int $messageSize = 200): string
{
$previewMessage = trim($this->getFormattedMessage());
$hasFiles = $this->hasFiles();
$hasAttach = mb_strpos($previewMessage, '[ATTACH=') !== false;
if ($this->getRegistry() instanceof MessageCollection)
{
$this->getRegistry()->fillFiles();
}
if ($hasFiles)
{
$files = $this->getFiles();
foreach ($files as $file)
{
$hasFiles = true;
$previewMessage .= " [{$file->getDiskFile()->getName()}]";
}
}
$previewMessage = preg_replace(
"/[ATTACH=([0-9]{1,})]/i",
" [".Loc::getMessage('IM_MESSAGE_ATTACH')."] ",
$previewMessage
);
$previewMessage = preg_replace(
'#-{54}.+?-{54}#s',
" [".Loc::getMessage('IM_MESSAGE_QUOTE')."] ",
str_replace(["#BR#"], [" "], $previewMessage)
);
$previewMessage = preg_replace(
'/^(>>(.*)(n)?)/mi',
" [".Loc::getMessage('IM_MESSAGE_QUOTE')."] ",
str_replace(["#BR#"], [" "], $previewMessage)
);
if (!$hasFiles && !$hasAttach)
{
if ($this->getParams()->isSet(Params::ATTACH))
{
$previewMessage .= " [".Loc::getMessage('IM_MESSAGE_ATTACH')."]";
}
}
if ($messageSize !== null)
{
$dots = mb_strlen($previewMessage) >= $messageSize ? '...' : '';
$previewMessage = mb_substr($previewMessage, 0, $messageSize - 1) . $dots;
}
return $previewMessage;
}