• Модуль: 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;
}