- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/text.php
- Класс: BitrixImText
- Вызов: Text::parseLegacyFormat
static function parseLegacyFormat($text, $params = Array())
{
if (!$text)
{
return '';
}
$safeParam = $params['SAFE'] ?? null;
$linkParam = $params['LINK'] ?? null;
$fontParam = $params['FONT'] ?? null;
$smilesParam = $params['SMILES'] ?? null;
$textAnchorParam = $params['TEXT_ANCHOR'] ?? null;
$linkLimitParam = $params['LINK_LIMIT'] ?? null;
$textLimitParam = $params['TEXT_LIMIT'] ?? null;
$linkTargetSelfParam = $params['LINK_TARGET_SELF'] ?? null;
$cutStrikeParam = $params['CUT_STRIKE'] ?? null;
if (!$safeParam || $safeParam === 'Y')
{
$text = htmlspecialcharsbx($text);
}
$allowTags = [
'HTML' => 'N',
'USER' => 'N',
'ANCHOR' => $linkParam === 'N' ? 'N' : 'Y',
'BIU' => 'Y',
'IMG' => 'N',
'QUOTE' => 'N',
'CODE' => 'N',
'FONT' => $fontParam === 'Y' ? 'Y' : 'N',
'LIST' => 'N',
'SPOILER' => 'N',
'SMILES' => $smilesParam === 'N' ? 'N' : 'Y',
'EMOJI' => 'Y',
'NL2BR' => 'Y',
'VIDEO' => 'N',
'TABLE' => 'N',
'CUT_ANCHOR' => 'N',
'SHORT_ANCHOR' => 'N',
'ALIGN' => 'N',
'TEXT_ANCHOR' => $textAnchorParam === 'N' ? 'N' : 'Y',
];
$parseId = md5('legacy'.$linkParam.$smilesParam.$linkLimitParam.$textLimitParam.$linkTargetSelfParam);
if (isset(self::$parsers[$parseId]))
{
$parser = self::$parsers[$parseId];
}
else
{
$parser = new CTextParser();
$parser->serverName = Common::getPublicDomain();
$parser->maxAnchorLength = intval($linkLimitParam)? $linkLimitParam: 55;
$parser->maxStringLen = intval($textLimitParam);
$parser->allow = $allowTags;
if ($linkTargetSelfParam === 'Y')
{
$parser->link_target = "_self";
}
self::$parsers[$parseId] = $parser;
}
$text = preg_replace_callback("/[PUT(?:=(.+?))?](.+?)?[/PUT]/i", Array('BitrixImText', 'setReplacement'), $text);
$text = preg_replace_callback("/[SEND(?:=(.+?))?](.+?)?[/SEND]/i", Array('BitrixImText', 'setReplacement'), $text);
$text = preg_replace_callback("/[CODE](.*?)[/CODE]/si", Array('BitrixImText', 'setReplacement'), $text);
$text = preg_replace_callback("/[USER=([0-9]{1,})][/USER]/i", Array('BitrixImText', 'modifyShortUserTag'), $text);
if ($cutStrikeParam === 'Y')
{
$text = preg_replace("/[s].*?[/s]/i", "", $text);
}
$text = $parser->convertText($text);
$text = str_replace(array('#BR#', '[br]', '[BR]'), '
', $text);
$text = self::recoverReplacements($text);
return $text;
}