• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
  • Класс: CSocNetLogTools
  • Вызов: CSocNetLogTools::FormatComment_Forum
static function FormatComment_Forum($arFields, $arParams, $bMail = false, $arLog = array())
{
	if (
		$bMail
		&& $arFields["MAIL_LANGUAGE_ID"] <> ''
	)
	{
		IncludeModuleLangFile(__FILE__, $arFields["MAIL_LANGUAGE_ID"]);
	}

	$arResult = array(
		"EVENT_FORMATTED" => array(),
	);

	if ($bMail)
	{
		$arResult["CREATED_BY"] = CSocNetLogTools::FormatEvent_GetCreatedBy($arFields, $arParams, $bMail);
		$arResult["ENTITY"] = CSocNetLogTools::FormatEvent_GetEntity($arLog, $arParams, $bMail);
	}
	elseif (($arParams["USE_COMMENT"] ?? null) !== "Y")
	{
		$arResult["ENTITY"] = CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, false);
	}

	$title_tmp = (
		$bMail
			? GetMessage("SONET_GL_EVENT_TITLE_".($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP ? "GROUP" : "USER")."_FORUM_MESSAGE_MAIL")
			: GetMessage("SONET_GL_EVENT_TITLE_FORUM_MESSAGE")
	);

	$topic_tmp = (
		!$bMail
		&& array_key_exists("URL", $arLog)
		&& !empty($arLog["URL"])
			? ''.($arLog["TITLE"] ?? '').''
			: ($arLog["TITLE"] ?? '')
	);

	$title = str_replace(
		[
			"#TITLE#",
			"#ENTITY#",
			"#CREATED_BY#"
		],
		[
			$topic_tmp,
			is_string($arResult["ENTITY"]["FORMATTED"] ?? null) ? $arResult["ENTITY"]["FORMATTED"] : '',
			($bMail ? $arResult["CREATED_BY"]["FORMATTED"] : "")
		],
		$title_tmp
	);

	static $parser = false;
	if (CModule::IncludeModule("forum"))
	{
		if (!$parser)
		{
			$parser = new forumTextParser(LANGUAGE_ID);
		}

		$parser->pathToUser = $parser->userPath = $arParams["PATH_TO_USER"];
		$parser->bMobile = (($arParams["MOBILE"] ?? null) === "Y");
		$parser->LAZYLOAD = (isset($arParams["LAZYLOAD"]) && $arParams["LAZYLOAD"] === "Y" ? "Y" : "N");

		$arFields["FILES"] = CForumFiles::GetByMessageID($arFields["SOURCE_ID"]);
		if (($arParams['MOBILE'] ?? null) !== 'Y')
		{
			if (!empty($arParams['IMAGE_MAX_WIDTH']))
			{
				$parser->imageWidth = (int)$arParams['IMAGE_MAX_WIDTH'];
			}
			if (!empty($arParams['IMAGE_MAX_HEIGHT']))
			{
				$parser->imageHeight = (int)$arParams['IMAGE_MAX_HEIGHT'];
			}
		}
	}

	$arResult["EVENT_FORMATTED"] = array(
		"TITLE" => $title,
		"MESSAGE" => ($bMail ? $arFields["TEXT_MESSAGE"] : htmlspecialcharsBack($arFields["MESSAGE"])),
		"FILES" => (!!$arFields["FILES"] ? array_keys($arFields["FILES"]) : array())
	);

	if (!$bMail)
	{
		if (($arParams["MOBILE"] ?? null) !== "Y")
		{
			static $parserLog = false;
			if (!$parserLog)
			{
				$parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]);
			}
			$arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut(
				$parserLog->convert(
					$arResult["EVENT_FORMATTED"]["MESSAGE"],
					array(),
					array(
						"HTML" => "Y",
						"ALIGN" => "Y",
						"ANCHOR" => "Y", "BIU" => "Y",
						"IMG" => "Y", "LOG_IMG" => "N",
						"QUOTE" => "Y", "LOG_QUOTE" => "N",
						"CODE" => "Y", "LOG_CODE" => "N",
						"FONT" => "Y", "LOG_FONT" => "N",
						"LIST" => "Y",
						"SMILES" => (
							!empty($arFields["ADDITIONAL_DATA"])
							&& !empty($arFields["ADDITIONAL_DATA"]["USE_SMILES"])
								? $arFields["ADDITIONAL_DATA"]["USE_SMILES"]
								: "Y"
						),
						"NL2BR" => "Y", "MULTIPLE_BR" => "N",
						"VIDEO" => "Y", "LOG_VIDEO" => "N",
						"USERFIELDS" => $arFields["UF"]
					)
				),
				500
			);
		}

		$parser = (is_object($parser) ? $parser : (is_object($parserLog) ? $parserLog : new logTextParser(false, $arParams["PATH_TO_SMILE"])));
		if (get_class($parser) === "forumTextParser")
		{
			$parser->arUserfields = $arFields["UF"];
			$arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parser->convert(
				$arResult["EVENT_FORMATTED"]["MESSAGE"],
				array(
					"HTML" => "N",
					"ALIGN" => "Y",
					"ANCHOR" => "Y", "BIU" => "Y",
					"IMG" => "Y", "QUOTE" => "Y",
					"CODE" => "Y", "FONT" => "Y",
					"LIST" => "Y",
					"SMILES" => (
						!empty($arFields["ADDITIONAL_DATA"])
						&& !empty($arFields["ADDITIONAL_DATA"]["USE_SMILES"])
							? $arFields["ADDITIONAL_DATA"]["USE_SMILES"]
							: "Y"
					),
					"NL2BR" => "Y", "VIDEO" => "Y",
					"LOG_VIDEO" => "N", "SHORT_ANCHOR" => "Y",
					"USERFIELDS" => $arFields["UF"],
					"USER" => "Y",
					"TAG" => "Y"
				),
				"html",
				$arResult["EVENT_FORMATTED"]["FILES"]
			));
			$arResult["EVENT_FORMATTED"]["PARSED_FILES"] = $parser->arFilesIDParsed;
		}
		else
		{
			$arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parser->convert(
				$arResult["EVENT_FORMATTED"]["MESSAGE"],
				array(),
				array(
					"HTML" => "N",
					"ALIGN" => "Y",
					"ANCHOR" => "Y", "BIU" => "Y",
					"IMG" => "Y", "QUOTE" => "Y",
					"CODE" => "Y", "FONT" => "Y",
					"LIST" => "Y",
					"SMILES" => (
						!empty($arFields["ADDITIONAL_DATA"])
						&& !empty($arFields["ADDITIONAL_DATA"]["USE_SMILES"])
							? $arFields["ADDITIONAL_DATA"]["USE_SMILES"]
							: "Y"
					),
					"NL2BR" => "Y", "VIDEO" => "Y",
					"LOG_VIDEO" => "N", "SHORT_ANCHOR" => "Y",
					"USERFIELDS" => $arFields["UF"],
					"TAG" => "Y"
				)
			));
		}

		if (
			($arParams["MOBILE"] ?? null) !== "Y"
			&& (!isset($arParams["NEW_TEMPLATE"]) || $arParams["NEW_TEMPLATE"] !== "Y")
		)
		{
			$arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]);
		}
	}
	else
	{
		if ($arFields["URL"] <> '')
		{
			$url = $arFields["URL"];
		}
		elseif (
			$arLog["PARAMS"] <> ''
			&& unserialize($arLog["PARAMS"], [ 'allowed_classes' => false ])
		)
		{
			$arTmp = unserialize($arLog["PARAMS"], [ 'allowed_classes' => false ]);
			if (
				array_key_exists("PATH_TO_MESSAGE", $arTmp)
				&& $arTmp["PATH_TO_MESSAGE"] <> ''
			)
			{
				$url = CComponentEngine::MakePathFromTemplate($arTmp["PATH_TO_MESSAGE"], array("MID" => $arFields["SOURCE_ID"]));
			}
		}

		$url = (
			$url <> ''
				? CSocNetLogTools::FormatEvent_GetURL(array("ID" => $arLog["ID"], "URL" => $url))
				: CSocNetLogTools::FormatEvent_GetURL($arLog)
		);

		if ($url <> '')
		{
			$arResult["EVENT_FORMATTED"]["URL"] = $url;
		}
	}

	if (
		$bMail
		&& $arFields["MAIL_LANGUAGE_ID"] <> ''
	)
	{
		IncludeModuleLangFile(__FILE__, LANGUAGE_ID);
	}

	return $arResult;
}