17 private $arImages =
array();
30 parent::__construct();
33 $strLang = LANGUAGE_ID;
37 $this->showedImages =
array();
38 $this->ajaxPage =
$GLOBALS[
"APPLICATION"]->GetCurPageParam(
"",
array(
"bxajaxid",
"logout"));
39 $this->blogImageSizeEvents =
GetModuleEvents(
"blog",
"BlogImageSize",
true);
40 $this->arUserfields =
array();
43 $this->smilesGallery = \COption::GetOptionInt(
"blog",
"smile_gallery_id", 0);
46 public function convert(
$text,
$bPreview = True, $arImages =
array(),
$allow =
array(
"HTML" =>
"N",
"ANCHOR" =>
"Y",
"BIU" =>
"Y",
"IMG" =>
"Y",
"QUOTE" =>
"Y",
"CODE" =>
"Y",
"FONT" =>
"Y",
"LIST" =>
"Y",
"SMILES" =>
"Y",
"NL2BR" =>
"N",
"VIDEO" =>
"Y",
"TABLE" =>
"Y",
"CUT_ANCHOR" =>
"N",
"SHORT_ANCHOR" =>
"N"),
$arParams = Array())
56 if (intval(
$arParams[
"imageWidth"] ?? 0) > 0)
58 $this->imageWidth = intval(
$arParams[
"imageWidth"]);
60 if (intval(
$arParams[
"imageHeight"] ?? 0) > 0)
62 $this->imageHeight = intval(
$arParams[
"imageHeight"]);
64 if ((
$arParams[
"pathToUser"] ??
'') <>
'')
66 $this->pathToUser =
$arParams[
"pathToUser"];
68 if (!empty(
$arParams[
"pathToUserEntityType"]) &&
$arParams[
"pathToUserEntityType"] <>
'')
70 $this->pathToUserEntityType =
$arParams[
"pathToUserEntityType"];
72 if (intval(
$arParams[
"pathToUserEntityId"] ?? 0) > 0)
74 $this->pathToUserEntityId = intval(
$arParams[
"pathToUserEntityId"]);
76 $this->parser_nofollow = COption::GetOptionString(
"blog",
"parser_nofollow",
"N");
78 $this->type = (
$type ==
"rss" ?
"rss" :
"html");
79 $this->isSonetLog =
$arParams[
"isSonetLog"] ??
false;
82 "HTML" => ((
$allow[
"HTML"] ??
null) ==
"Y" ?
"Y" :
"N"),
83 "NL2BR" => ((
$allow[
"NL2BR"] ??
null) ==
"Y" ?
"Y" :
"N"),
84 "CODE" => ((
$allow[
"CODE"] ??
null) ==
"N" ?
"N" :
"Y"),
85 "VIDEO" => ((
$allow[
"VIDEO"] ??
null) ==
"N" ?
"N" :
"Y"),
86 "ANCHOR" => ((
$allow[
"ANCHOR"] ??
null) ==
"N" ?
"N" :
"Y"),
87 "BIU" => ((
$allow[
"BIU"] ??
null) ==
"N" ?
"N" :
"Y"),
88 "IMG" => ((
$allow[
"IMG"] ??
null) ==
"N" ?
"N" :
"Y"),
89 "QUOTE" => ((
$allow[
"QUOTE"] ??
null) ==
"N" ?
"N" :
"Y"),
90 "FONT" => ((
$allow[
"FONT"] ??
null) ==
"N" ?
"N" :
"Y"),
91 "LIST" => ((
$allow[
"LIST"] ??
null) ==
"N" ?
"N" :
"Y"),
92 "SMILES" => ((
$allow[
"SMILES"] ??
null) ==
"N" ?
"N" :
"Y"),
93 "TABLE" => ((
$allow[
"TABLE"] ??
null) ==
"N" ?
"N" :
"Y"),
94 "ALIGN" => ((
$allow[
"ALIGN"] ??
null) ==
"N" ?
"N" :
"Y"),
95 "CUT_ANCHOR" => ((
$allow[
"CUT_ANCHOR"] ??
null) ==
"Y" ?
"Y" :
"N"),
96 "SHORT_ANCHOR" => ((
$allow[
"SHORT_ANCHOR"] ??
null) ==
"Y" ?
"Y" :
"N"),
97 "USER" => ((
$allow[
"USER"] ??
null) ==
"N" ?
"N" :
"Y"),
98 "USER_LINK" => ((
$allow[
"USER_LINK"] ??
null) ==
"N" ?
"N" :
"Y"),
99 "TAG" => ((
$allow[
"TAG"] ??
null) ==
"N" ?
"N" :
"Y"),
100 'SPOILER' => ((
$allow[
'SPOILER'] ??
null) ===
'N' ?
'N' :
'Y'),
102 (isset(
$allow[
"USERFIELDS"]) && is_array(
$allow[
"USERFIELDS"]))
107 if (!empty($this->arUserfields))
108 $this->allow[
"USERFIELDS"] = array_merge($this->allow[
"USERFIELDS"], $this->arUserfields);
110 $this->arImages = $arImages;
113 static $firstCall =
true;
117 AddEventHandler(
"main",
"TextParserBefore", Array(
"blogTextParser",
"ParserCut"));
118 AddEventHandler(
"main",
"TextParserBefore", Array(
"blogTextParser",
"ParserBlogImageBefore"));
119 AddEventHandler(
"main",
"TextParserAfterTags", Array(
"blogTextParser",
"ParserBlogImage"));
120 AddEventHandler(
"main",
"TextParserAfterTags", Array(
"blogTextParser",
"ParserTag"));
121 AddEventHandler(
"main",
"TextParserAfter", Array(
"blogTextParser",
"ParserCutAfter"));
122 AddEventHandler(
"main",
"TextParserVideoConvert", Array(
"blogTextParser",
"blogConvertVideo"));
135 $text = preg_replace(
"#^(.*?)<cut[\s]*(/>|>).*?$#is",
"\\1",
$text);
136 $text = preg_replace(
"#^(.*?)\[cut[\s]*(/\]|\]).*?$#is",
"\\1",
$text);
140 $text = preg_replace(
"#<cut[\s]*(/>|>)#is",
"[cut]",
$text);
147 $text = preg_replace(
"#\[cut[\s]*(/\]|\])#is",
"<a name=\"cut\"></a>",
$text);
153 $text = preg_replace(
"/\[img([^\]]*)id\s*=\s*([0-9]+)([^\]]*)\]/isu",
"[imag id=\\1 \\2 \\3]",
$text);
158 if(is_callable(
array($obj,
'convert_blog_image')))
160 $text = preg_replace_callback(
161 "/\[imag([^\]]*)id\s*=\s*([0-9]+)([^\]]*)\]/isu",
162 array($obj,
"convertBlogImage"),
168 private function convertBlogImage(
$matches)
173 private function convertBlogImageMail(
$matches)
175 return $this->convert_blog_image(
'',
$matches[2],
'',
'mail');
181 ($obj->allow[
"TAG"] ??
null) !==
"N"
182 && is_callable(
array($obj,
'convert_blog_tag'))
185 $text = preg_replace_callback(
186 "/\[tag(?:[^\]])*\](.+?)\[\/tag\]/isu",
187 array($obj,
"convertBlogTag"),
193 private function convertBlogTag(
$matches)
195 return $this->convert_blog_tag(
$matches[1]);
198 private function convert_blog_tag(
$name =
"")
202 return "TAG [".$name.
"]";
207 $text = preg_replace(
209 "/\[(\/?)(code|quote)([^\]]*)\]/isu",
210 "/\\[url\\s*=\\s*(\\S+?)\\s*\\](.*?)\\[\\/url\\]/isu",
211 "/\\[(table)(.*?)\\]/isu",
212 "/\\[\\/table(.*?)\\]/isu"
230 $this->arImages = $arImages;
232 $text = preg_replace_callback(
233 "/\[img([^\]]*)id\s*=\s*([0-9]+)([^\]]*)\]/isu",
234 array($this,
"convertBlogImageMail"),
241 private function convert_blog_image($p1 =
"", $imageId =
"", $p2 =
"",
$type =
"html")
243 $imageId = intval($imageId);
248 if(intval($this->arImages[$imageId]) > 0)
250 $this->showedImages[] = $imageId;
253 if(COption::GetOptionString(
"blog",
"use_image_perm",
"N") ==
"N")
255 if($db_img_arr = CFile::GetFileArray($this->arImages[$imageId]))
257 if(mb_substr($db_img_arr[
"SRC"], 0, 1) ==
"/")
258 $strImage = $this->serverName.$db_img_arr[
"SRC"];
260 $strImage = $db_img_arr[
"SRC"];
263 preg_match(
"/width\=([0-9]+)/isu", $p1,
$width);
264 preg_match(
"/height\=([0-9]+)/isu", $p1, $height);
266 $height = intval($height[1]);
270 preg_match(
"/width\=([0-9]+)/isu", $p2,
$width);
275 preg_match(
"/height\=([0-9]+)/isu", $p2, $height);
276 $height = intval($height[1]);
280 $width = $db_img_arr[
"WIDTH"];
281 if(intval($height) <= 0)
282 $height= $db_img_arr[
"HEIGHT"];
284 if(
$width > $this->imageWidth || $height > $this->imageHeight)
288 array(
"width" => $this->imageWidth,
"height" => $this->imageHeight),
292 if(mb_substr($arFileTmp[
"src"], 0, 1) ==
"/")
293 $strImage = $this->serverName.$arFileTmp[
"src"];
295 $strImage = $arFileTmp[
"src"];
296 $width = $arFileTmp[
"width"];
297 $height = $arFileTmp[
"height"];
300 $sourceImage = $this->serverName.
"/bitrix/components/bitrix/blog/show_file.php?fid=".$imageId;
303 $sourceImage .=
"&width=".blogTextParser::IMAGE_MAX_SHOWING_WIDTH;
305 $sourceImage .=
"&height=".blogTextParser::IMAGE_MAX_SHOWING_HEIGHT;
307 $strPar =
'style=" width:'.$width.
'px; height:'.$height.
'px;"';
308 $strImage = preg_replace(
"'(?<!:)/+'s",
"/", $strImage);
309 $sourceImage = preg_replace(
"'(?<!:)/+'s",
"/", $sourceImage);
311 if($this->authorName <>
'')
312 $strPar .=
" data-bx-title=\"".$this->authorName.
"\"";
314 if ($this->isSonetLog)
316 $strImage = preg_replace(
"'(?<!:)/+'s",
"/", $strImage);
317 $res =
'[IMG]'.$strImage.
'[/IMG]';
325 $res =
'<img src="'.$strImage.
'" title="" alt="'.
htmlspecialcharsbx(
$f[
"TITLE"]).
'" border="0"'.$strPar.
' data-bx-image="'.$sourceImage.
'" />';
331 preg_match(
"/width\=([0-9]+)/isu", $p1,
$width);
332 preg_match(
"/height\=([0-9]+)/isu", $p1, $height);
334 $height = intval($height[1]);
338 preg_match(
"/width\=([0-9]+)/isu", $p2,
$width);
343 preg_match(
"/height\=([0-9]+)/isu", $p2, $height);
344 $height = intval($height[1]);
349 if(intval($height) <= 0)
352 if(
$width > $this->imageWidth)
354 if($height > $this->imageHeight)
359 $strImage = $this->serverName.
"/bitrix/components/bitrix/blog/show_file.php?fid=".$imageId.
"&width=".
$width.
"&height=".$height;
360 $sourceImage = $this->serverName.
"/bitrix/components/bitrix/blog/show_file.php?fid=".$imageId;
363 $sourceImage .=
"&width=".blogTextParser::IMAGE_MAX_SHOWING_WIDTH;
365 $sourceImage .=
"&height=".blogTextParser::IMAGE_MAX_SHOWING_HEIGHT;
369 if ($this->isSonetLog)
371 $strImage = preg_replace(
"'(?<!:)/+'s",
"/", $strImage);
372 $res =
'[IMG]'.$strImage.
'[/IMG]';
380 $strPar =
' width="'.$arDestinationSize[
"width"].
'" height="'.$arDestinationSize[
"height"].
'"';
381 if($this->authorName <>
'')
382 $strPar .=
" data-bx-title=\"".$this->authorName.
"\"";
384 $res =
'<img src="'.$strImage.
'" title="" alt="'.
htmlspecialcharsbx(
$f[
"TITLE"]).
'" border="0" data-bx-image="'.$sourceImage.
'"'.$strPar.
' />';
385 if(!empty($this->blogImageSizeEvents))
387 foreach($this->blogImageSizeEvents as $arEvent)
399 public function convert_to_rss(
$text, $arImages = Array(), $arAllow =
array(
"HTML" =>
"N",
"ANCHOR" =>
"Y",
"BIU" =>
"Y",
"IMG" =>
"Y",
"QUOTE" =>
"Y",
"CODE" =>
"Y",
"FONT" =>
"Y",
"LIST" =>
"Y",
"SMILES" =>
"Y",
"NL2BR" =>
"N",
"VIDEO" =>
"Y",
"TABLE" =>
"Y",
"CUT_ANCHOR" =>
"N"),
$bPreview =
true,
$arParams = Array())
408 $marker = (mb_strtolower($marker) ==
"code" ?
"code" :
"quote");
409 $this->{$marker.
"_open"}++;
410 if ($this->type ==
"rss")
411 return "\n====".$marker.
"====\n";
412 return "<div class='blog-post-".$marker.
"' title=\"".
GetMessage(
"BLOG_".mb_strtoupper($marker)).
"\"><table class='blog".$marker.
"'><tr><td>";
429 $GLOBALS[
"APPLICATION"]->IncludeComponent(
432 "PLAYER_TYPE" =>
"auto",
433 "USE_PLAYLIST" =>
"N",
440 "SKIN_PATH" =>
"/bitrix/components/bitrix/player/mediaplayer/skins",
441 "SKIN" =>
"bitrix.swf",
442 "CONTROLBAR" =>
"bottom",
443 "WMODE" =>
"transparent",
445 "SHOW_CONTROLS" =>
"Y",
447 "SHOW_DIGITS" =>
"Y",
448 "CONTROLS_BGCOLOR" =>
"FFFFFF",
449 "CONTROLS_COLOR" =>
"000000",
450 "CONTROLS_OVER_COLOR" =>
"000000",
451 "SCREEN_COLOR" =>
"000000",
455 "DISPLAY_CLICK" =>
"play",
457 "HIGH_QUALITY" =>
"Y",
458 "ADVANCED_MODE_SETTINGS" =>
"N",
459 "BUFFER_LENGTH" =>
"10",
460 "DOWNLOAD_LINK" =>
"",
461 "DOWNLOAD_LINK_TARGET" =>
"_self"),
467 $video = ob_get_contents();
475 if (method_exists(
"CTextParser",
"clearAllTags"))
479 $text = preg_replace(
481 "/<(\/)(quote|code)([^>]*)>/isu",
482 "/\[(\/)(code|quote|video|td|tr|th|table|tbody|thead|file|document|disk)([^\]]*)\]/isu",
483 "/\[(\/?)(\*)([^\]]*)\]/isu",
487 $text = preg_replace(
489 "/<(\/?)(quote|code|font|color|video)([^>]*)>/isu",
490 "/\[(\/?)(b|u|i|s|list|code|quote|font|color|url|img|video|td|tr|th|tbody|thead|table|file|document|disk|user|left|right|center|justify)([^\]]*)\]/isu"
499 $classAdditional = (!empty(
$fields[
'CLASS_ADDITIONAL']) ?
$fields[
'CLASS_ADDITIONAL'] :
'');
504 $anchorId = RandString(8);
507 $this->allow[
"USER_LINK"] ==
"N"
509 :
'<a class="blog-p-user-name' . $classAdditional .
'" id="bp_'.$anchorId.
'" href="'.CComponentEngine::MakePathFromTemplate(
$pathToUser,
array(
"user_id" =>
$userId)).
'" bx-tooltip-user-id="'.(!$this->bMobile ?
$userId :
'').
'">'.
$userName.
'</a>'
513 private static function getEditorDefaultFeatures()
515 return array(
"Bold",
"Italic",
"Underline",
"SmileList",
"RemoveFormat",
"Quote",
"Code");
518 private static function getEditorExtendFeatures()
521 "EDITOR_USE_FONT" =>
array(
"FontList",
"FontSizeList",
"ForeColor"),
522 "EDITOR_USE_LINK" =>
array(
"CreateLink"),
523 "EDITOR_USE_IMAGE" =>
array(
"UploadImage",
"Image"),
524 "EDITOR_USE_FORMAT" =>
array(
"Strike",
"Table",
"Justify",
"InsertOrderedList",
"InsertUnorderedList"),
525 "EDITOR_USE_VIDEO" =>
array(
"InputVideo")
540 $editorFull = isset(
$params[
"EDITOR_FULL"]) &&
$params[
"EDITOR_FULL"] ==
"Y";
542 $defaultFeatures = self::getEditorDefaultFeatures();
543 $extendFeatures = self::getEditorExtendFeatures();
549 foreach($extendFeatures as
$key => $feature)
554 foreach($extendFeatures as
$key => $feature)
557 if(isset($blog[
$key]) && $blog[
$key] ==
"Y")
558 foreach($feature as
$f)
565 foreach($extendFeatures[
"EDITOR_USE_VIDEO"] as
$f)
569 foreach($extendFeatures[
"EDITOR_USE_LINK"] as
$f)
572 if (LANGUAGE_ID ==
'ru')
584 is_array(
$arResult[
"COMMENT_PROPERTIES"][
"DATA"])
586 array_key_exists(
"UF_BLOG_COMMENT_FILE",
$arResult[
"COMMENT_PROPERTIES"][
"DATA"])
587 || array_key_exists(
"UF_BLOG_COMMENT_DOC",
$arResult[
"COMMENT_PROPERTIES"][
"DATA"])
589 && array_key_exists(
'EDITOR_USE_IMAGE', $blog) && $blog[
"EDITOR_USE_IMAGE"] ===
"Y"
596 if(
$arResult[
"allowVideo"] && (isset($blog[
"EDITOR_USE_VIDEO"]) && $blog[
"EDITOR_USE_VIDEO"] ===
"Y"))
602 if(!
$arResult[
"NoCommentUrl"] && (isset($blog[
"EDITOR_USE_LINK"]) && $blog[
"EDITOR_USE_LINK"] ===
"Y"))
620 if(!empty($array) && is_array($array))
622 foreach($array as
$k => $v)
626 foreach($v as $k1 => $v1)
628 $res[$k1] = htmlspecialcharsex($v1);
634 if (preg_match(
"/[;&<>\"]/", ($v ??
'')))
635 $res[
$k] = htmlspecialcharsex($v);
647 $arFile = CFile::ResizeImageGet($aFile,
array(
"width"=>$sizeX,
"height"=>$sizeY));
649 if(is_array($arFile))
650 return $arFile[
"src"];
657 $timestamp = mktime(7,30,45,2,22,2007);
659 "d-m-Y H:i:s" => date(
"d-m-Y H:i:s", $timestamp),
660 "m-d-Y H:i:s" => date(
"m-d-Y H:i:s", $timestamp),
661 "Y-m-d H:i:s" => date(
"Y-m-d H:i:s", $timestamp),
662 "d.m.Y H:i:s" => date(
"d.m.Y H:i:s", $timestamp),
663 "m.d.Y H:i:s" => date(
"m.d.Y H:i:s", $timestamp),
664 "j M Y H:i:s" => date(
"j M Y H:i:s", $timestamp),
665 "M j, Y H:i:s" => date(
"M j, Y H:i:s", $timestamp),
666 "j F Y H:i:s" => date(
"j F Y H:i:s", $timestamp),
667 "F j, Y H:i:s" => date(
"F j, Y H:i:s", $timestamp),
668 "d.m.y g:i A" => date(
"d.m.y g:i A", $timestamp),
669 "d.m.y G:i" => date(
"d.m.y G:i", $timestamp),
670 "d.m.Y H:i:s" => date(
"d.m.Y H:i:s", $timestamp),
676 if(mb_strpos(
$text,
"<br />\r<br />") !==
false)
678 $text = str_replace(
"<br />\r<br />",
"<br />",
$text);
681 if(mb_strpos(
$text,
"<br /><br />") !==
false)
683 $text = str_replace(
"<br /><br />",
"<br />",
$text);
687 if(mb_strpos(
$text,
"<br />") == 0 && mb_strpos(
$text,
"<br />") !==
false)
700 'INPUT_NAME' =>
$arParams[
"arUserField"][
"FIELD_NAME"],
701 'INPUT_NAME_UNSAVED' =>
'FILE_NEW_TMP',
703 'MAX_FILE_SIZE' => intval(
$arParams[
'arUserField'][
'SETTINGS'][
'MAX_ALLOWED_SIZE']),
704 'MULTIPLE' =>
$arParams[
'arUserField'][
'MULTIPLE'],
706 'ALLOW_UPLOAD' =>
'A',
709 $GLOBALS[
"APPLICATION"]->IncludeComponent(
'bitrix:main.file.input',
'drag_n_drop',
$componentParams,
false, Array(
"HIDE_ICONS" =>
"Y"));
724 <div
class=
"feed-com-files">
725 <div
class=
"feed-com-files-title"><?=
GetMessage(
'BLOG_FILES')?></div>
726 <div
class=
"feed-com-files-cont">
731 $arFile = CFile::GetFileArray($fileID);
734 $name = $arFile[
'ORIGINAL_NAME'];
736 $dotpos = mb_strrpos(
$name,
".");
737 if (($dotpos !==
false) && ($dotpos + 1 < mb_strlen(
$name)))
738 $ext = mb_substr(
$name, $dotpos + 1);
739 if (mb_strlen($ext) < 3 || mb_strlen($ext) > 5)
741 $arFile[
'EXTENSION'] = $ext;
742 $arFile[
'LINK'] =
"/bitrix/components/bitrix/blog/show_file.php?bp_fid=".$fileID;
743 $arFile[
"FILE_SIZE"] = CFile::FormatSize($arFile[
"FILE_SIZE"]);
745 <div
id=
"wdif-doc-<?=$arFile['ID']?>" class=
"feed-com-file-wrap">
746 <div
class=
"feed-con-file-name-wrap">
747 <div
class=
"feed-con-file-icon feed-file-icon-<?=htmlspecialcharsbx($arFile['EXTENSION'])?>"></div>
748 <a target=
"_blank" href=
"<?=htmlspecialcharsbx($arFile['LINK'])?>" class=
"feed-com-file-name"><?=
htmlspecialcharsbx($arFile[
'ORIGINAL_NAME'])?></a>
749 <span
class=
"feed-con-file-size">(<?=$arFile[
'FILE_SIZE']?>)</span>
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static getImageMaxWidth()
static getImageMaxHeight()
static blogUFfileEdit($arResult, $arParams)
static DeleteDoubleBR($text)
static blogUFfileShow($arResult, $arParams)
static ResizeImage($aFile, $sizeX, $sizeY)
static htmlspecialcharsExArray($array)
static GetDateTimeFormat()
static ResizeImageGet($file, $arSize, $resizeType=BX_RESIZE_IMAGE_PROPORTIONAL, $bInitSizes=false, $arFilters=false, $bImmediate=false, $jpgQuality=false)
static GetFileArray($fileId, $uploadDir=false)
static ScaleImage($sourceImageWidth, $sourceImageHeight, $arSize, $resizeType, &$bNeedCreatePicture, &$arSourceSize, &$arDestinationSize)
convertText($text, $attributes=[])
static clearAllTags($text)
convert4im($text, $arImages=[])
static killAllTags($text)
static blogConvertVideo(&$arParams)
const IMAGE_MAX_SHOWING_HEIGHT
const IMAGE_MAX_SHOWING_WIDTH
static ParserBlogImageBefore(&$text, &$obj=null)
convert($text, $bPreview=True, $arImages=array(), $allow=array("HTML"=> "N", "ANCHOR"=> "Y", "BIU"=> "Y", "IMG"=> "Y", "QUOTE"=> "Y", "CODE"=> "Y", "FONT"=> "Y", "LIST"=> "Y", "SMILES"=> "Y", "NL2BR"=> "N", "VIDEO"=> "Y", "TABLE"=> "Y", "CUT_ANCHOR"=> "N", "SHORT_ANCHOR"=> "N"), $arParams=Array())
static ParserBlogImage(&$text, &$obj)
static getEditorButtons($blog, $arResult)
static ParserCutAfter(&$text, &$obj)
convert_open_tag($marker="quote")
static ParserCut(&$text, &$obj)
__construct($strLang=False, $pathToSmile=false, $arParams=array())
static GetEditorToolbar($params, $arResult=null)
convert_to_rss($text, $arImages=Array(), $arAllow=array("HTML"=> "N", "ANCHOR"=> "Y", "BIU"=> "Y", "IMG"=> "Y", "QUOTE"=> "Y", "CODE"=> "Y", "FONT"=> "Y", "LIST"=> "Y", "SMILES"=> "Y", "NL2BR"=> "N", "VIDEO"=> "Y", "TABLE"=> "Y", "CUT_ANCHOR"=> "N"), $bPreview=true, $arParams=Array())
static ParserTag(&$text, &$obj)
convert4mail($text, $arImages=Array())
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
const BX_RESIZE_IMAGE_PROPORTIONAL
ExecuteModuleEventEx($arEvent, $arParams=[])
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
$GLOBALS['_____370096793']