• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
  • Класс: CSocNetLogTools
  • Вызов: CSocNetLogTools::FormatEvent_System
static function FormatEvent_System($arFields, $arParams, $bMail = false)
{
	global $CACHE_MANAGER;

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

	$arResult = array(
		"EVENT" => $arFields,
		"CREATED_BY" => array(),
		"ENTITY" => array(),
		"EVENT_FORMATTED" => array(),
	);

	if (intval($arFields["ENTITY_ID"]) > 0)
	{
		$suffix = (is_array($GLOBALS["arExtranetGroupID"]) && in_array($arFields["ENTITY_ID"], $GLOBALS["arExtranetGroupID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");
		if ($bMail)
		{
			$arResult["ENTITY"]["FORMATTED"] = $arFields["GROUP_NAME"].$suffix;
			$arResult["ENTITY"]["TYPE_MAIL"] = GetMessage("SONET_GL_EVENT_ENTITY_G");
		}
		elseif (mb_strpos($arFields["MESSAGE"], ",") > 0)
			$arResult["ENTITY"] = CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, false);
	}

	if (in_array($arFields["TITLE"], array("moderate", "unmoderate", "join", "unjoin")))
	{
		if (mb_strpos($arFields["MESSAGE"], ",") !== false)
		{
			$arResult["CREATED_BY"] = false;
			$arGroup = array(
				"IMAGE_ID" => $arFields["GROUP_IMAGE_ID"]
			);
			$arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatarGroup($arGroup, $arParams); // group avatar
		}
		else
		{
			$suffix = (is_array($GLOBALS["arExtranetUserID"]) && in_array($arFields["MESSAGE"], $GLOBALS["arExtranetUserID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");

			$dbUser = CUser::GetByID($arFields["MESSAGE"]);
			if ($arUser = $dbUser->Fetch())
			{
				$arFieldsTooltip = array(
					"ID" => $arUser["ID"],
					"NAME" => $arUser["NAME"],
					"LAST_NAME" => $arUser["LAST_NAME"],
					"SECOND_NAME" => $arUser["SECOND_NAME"],
					"LOGIN" => $arUser["LOGIN"],
				);
				$oldNameTemplate = $arParams["NAME_TEMPLATE"];
				$arParams["NAME_TEMPLATE"] .= $suffix;
				$arResult["CREATED_BY"]["TOOLTIP_FIELDS"] = CSocNetLogTools::FormatEvent_FillTooltip($arFieldsTooltip, $arParams);
				$arParams["NAME_TEMPLATE"] = $oldNameTemplate;

				if (!$bMail)
					$arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arUser, $arParams, "");
			}
		}
	}
	else
	{
		$suffix = (is_array($GLOBALS["arExtranetUserID"]) && in_array($arFields["USER_ID"], $GLOBALS["arExtranetUserID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");

		$arFieldsTooltip = array(
			"ID" => $arFields["USER_ID"],
			"NAME" => $arFields["~CREATED_BY_NAME"],
			"LAST_NAME" => $arFields["~CREATED_BY_LAST_NAME"],
			"SECOND_NAME" => $arFields["~CREATED_BY_SECOND_NAME"],
			"LOGIN" => $arFields["~CREATED_BY_LOGIN"],
		);
		$oldNameTemplate = $arParams["NAME_TEMPLATE"];
		$arParams["NAME_TEMPLATE"] .= $suffix;
		$arResult["CREATED_BY"]["TOOLTIP_FIELDS"] = CSocNetLogTools::FormatEvent_FillTooltip($arFieldsTooltip, $arParams);
		$arParams["NAME_TEMPLATE"] = $oldNameTemplate;

		if (!$bMail)
			$arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arFields, $arParams, "CREATED_BY_");
	}

	if ($arFields["MESSAGE"] <> '')
	{
		$arUsersID = explode(",", $arFields["MESSAGE"]);

		$bFirst = true;
		$count = 0;
		$user_tmp = "";

		if ($bMail)
		{
			$dbUser = CUser::GetList(
				"last_name",
				"asc",
				array(
					"ID" => implode(" | ", $arUsersID)
				)
			);
			while($arUser = $dbUser->Fetch())
			{
				$suffix = (is_array($GLOBALS["arExtranetUserID"]) && in_array($arUser["ID"], $GLOBALS["arExtranetUserID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");

				$count++;
				if (!$bFirst)
					$user_tmp .= ", ";

				if (
					$arUser["NAME"] <> ''
					|| $arUser["LAST_NAME"] <> ''
				)
					$user_tmp .= $arUser["NAME"]." ".$arUser["LAST_NAME"].$suffix;
				else
					$user_tmp .= $arUser["LOGIN"].$suffix;

				$bFirst = false;
			}
		}
		else
		{
			$dbUser = CUser::GetList(
				"last_name",
				"asc",
				array(
					"ID" => implode(" | ", $arUsersID)
				),
				array("FIELDS" => array("ID", "NAME", "LAST_NAME", "SECOND_NAME", "LOGIN", "PERSONAL_GENDER"))
			);
			while($arUser = $dbUser->Fetch())
			{
				if (defined("BX_COMP_MANAGED_CACHE"))
				{
					$CACHE_MANAGER->RegisterTag("USER_NAME_".intval($arUser["ID"]));
				}

				$suffix = (is_array($GLOBALS["arExtranetUserID"]) && in_array($arUser["ID"], $GLOBALS["arExtranetUserID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");

				$count++;
				if (!$bFirst)
					$user_tmp .= ", ";

				$oldNameTemplate = $arParams["NAME_TEMPLATE"];
				$arParams["NAME_TEMPLATE"] .= $suffix;

				$anchor_id = RandString(8);

				$user_tmp .= ''.CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, ($arParams["SHOW_LOGIN"] != "N" ? true : false)).'';

				$arParams["NAME_TEMPLATE"] = $oldNameTemplate;

				$bFirst = false;
				$arLastUser = $arUser;
			}
		}
	}

	if ($bMail)
		$title_tmp = GetMessage("SONET_GL_EVENT_TITLE_SYSTEM_".mb_strtoupper($arFields["TITLE"])."_".($count > 1 ? "2" : "1")."_MAIL");
	else
	{
		if (in_array($arFields["TITLE"], array("moderate", "unmoderate", "join", "unjoin")))
		{
			if (
				$count == 1
				&& $arLastUser
			)
				$suffix = $arLastUser["PERSONAL_GENDER"];
			else
				$suffix = "";
		}
		else
			$suffix = $arFields["CREATED_BY_PERSONAL_GENDER"];

		$title_tmp = GetMessage("SONET_GL_EVENT_TITLE_SYSTEM_".mb_strtoupper($arFields["TITLE"])."_".($count > 1 ? "2" : "1".(trim($suffix) <> '' ? "_".$suffix : "")));

		$title_tmp_24 = GetMessage("SONET_GL_EVENT_TITLE_SYSTEM_".mb_strtoupper($arFields["TITLE"])."_".($count > 1 ? "2_24" : "1_24".(trim($suffix) <> '' ? "_".$suffix : "")));
	}

	$url = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arFields["ENTITY_ID"]));
	$suffix = (is_array($GLOBALS["arExtranetGroupID"]) && in_array($arFields["ENTITY_ID"], $GLOBALS["arExtranetGroupID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");

	if ($url <> '')
		$group_tmp = ''.$arFields["GROUP_NAME"].''.$suffix;
	else
		$group_tmp = $arFields["GROUP_NAME"].$suffix;

	$title = str_replace(
		array("#USER_NAME#", "#ENTITY#", "#GROUP_NAME#"),
		array($user_tmp, $arResult["ENTITY"]["FORMATTED"], $group_tmp),
		$title_tmp
	);

	$title_tmp_24 = str_replace(
		array("#USER_NAME#"),
		array($user_tmp),
		$title_tmp_24
	);

	if ($bMail)
		$arResult["EVENT_FORMATTED"] = array(
			"TITLE" => $title,
			"MESSAGE" => false
		);
	else
	{
		switch ($arFields["TITLE"])
		{
			case "join":
			case "moderate":
			case "owner":
				$classname = "join-group";
				break;
			case "unjoin":
			case "exclude_group":
			case "unmoderate":
				$classname = "leave-group";
				break;
			default:
				$classname = "";
		}

		if (($arParams["MOBILE"] ?? null) == "Y")
			$arResult["EVENT_FORMATTED"] = array(
				"TITLE_24" => $title_tmp_24,
				"DESTINATION" => array(
					array(
						"STYLE" => "",
						"TITLE" => $arFields["GROUP_NAME"].$suffix,
						"URL" => $url
					)
				),
				"STYLE" => $classname
			);
		else
			$arResult["EVENT_FORMATTED"] = array(
				"TITLE" => false,
				"MESSAGE" => $title,
				"IS_MESSAGE_SHORT" => true,
				"TITLE_24" => $title_tmp_24,
				"DESTINATION" => array(
					array(
						"STYLE" => "sonetgroups",
						"TITLE" => $arFields["GROUP_NAME"].$suffix,
						"URL" => $url
					)
				),
				"STYLE" => $classname
			);
	}

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

	return $arResult;
}