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

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

	$arResult = array();
	$bActiveUsers = false;

	if ((int)$arFields["MESSAGE"] > 0)
	{
		$dbUser = CUser::GetByID($arFields["MESSAGE"]);
		if ($arUser = $dbUser->Fetch())
		{
			if(defined("BX_COMP_MANAGED_CACHE"))
			{
				$CACHE_MANAGER->RegisterTag("USER_NAME_".intval($arUser["ID"]));
			}

			$messageUserID = $arFields["MESSAGE"];

			if (
				$arFields["ENTITY_TYPE"] === SONET_SUBSCRIBE_ENTITY_USER
				&& (int)$arFields["ENTITY_ID"] > 0
			)
			{
				$dbUser2 = CUser::GetByID($arFields["ENTITY_ID"]);
				if ($arUser2 = $dbUser2->Fetch())
				{
					if(defined("BX_COMP_MANAGED_CACHE"))
					{
						$CACHE_MANAGER->RegisterTag("USER_NAME_".intval($arUser2["ID"]));
					}

					$secondUserID = $arFields["ENTITY_ID"];
					$bActiveUsers = true;
				}
			}
		}
	}

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

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

		if ($bMail)
		{
			if ($arFields["USER_NAME"] <> '' || $arFields["USER_LAST_NAME"] <> '')
				$arResult["ENTITY"]["FORMATTED"] = $arFields["USER_NAME"]." ".$arFields["USER_LAST_NAME"].$suffix;
			else
				$arResult["ENTITY"]["FORMATTED"] = $arFields["USER_LOGIN"].$suffix;

			$arResult["ENTITY"]["TYPE_MAIL"] = GetMessage("SONET_GL_EVENT_ENTITY_U");
		}
		else
		{
			$arFieldsTooltip = array(
				"ID" => $secondUserID,
				"NAME" => $arFields["~USER_NAME"],
				"LAST_NAME" => $arFields["~USER_LAST_NAME"],
				"SECOND_NAME" => $arFields["~USER_SECOND_NAME"],
				"LOGIN" => $arFields["~USER_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, "USER_");
		}

		$suffix = (is_array($GLOBALS["arExtranetUserID"]) && in_array($messageUserID, $GLOBALS["arExtranetUserID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");
		$user_tmp = '';

		if ($bMail)
		{
			$user_tmp .= (
				$arUser["NAME"] <> ''
				|| $arUser["LAST_NAME"] <> ''
					? $arUser["NAME"]." ".$arUser["LAST_NAME"].$suffix
					: $arUser["LOGIN"].$suffix
			);
		}
		else
		{
			$suffix = (is_array($GLOBALS["arExtranetUserID"]) && in_array($messageUserID, $GLOBALS["arExtranetUserID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : "");

			$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;
		}

		if ($bMail)
		{
			$title_tmp = GetMessage("SONET_GL_EVENT_TITLE_SYSTEM_FRIENDS_".mb_strtoupper($arFields["TITLE"])."_MAIL");
		}
		else
		{
			$title_tmp = GetMessage("SONET_GL_EVENT_TITLE_SYSTEM_FRIENDS_".mb_strtoupper($arFields["TITLE"]).(trim($arFields["USER_PERSONAL_GENDER"]) <> '' ? "_".$arFields["USER_PERSONAL_GENDER"]: ""));
			$title_tmp_24 = GetMessage("SONET_GL_EVENT_TITLE_SYSTEM_FRIENDS_".mb_strtoupper($arFields["TITLE"])."_24".(trim($arFields["USER_PERSONAL_GENDER"]) <> '' ? "_".$arFields["USER_PERSONAL_GENDER"] : ""));
		}

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

		if ($bMail)
		{
			$arResult["EVENT_FORMATTED"] = array(
				"TITLE" => $title,
				"MESSAGE" => false
			);

			$friends_page = COption::GetOptionString("socialnetwork", "friends_page", false, SITE_ID);
			if ($friends_page <> '')
			{
				$arFields["URL"] = str_replace(array("#user_id#", "#USER_ID#"), $secondUserID, $friends_page);
				$arResult["EVENT_FORMATTED"]["URL"] = CSocNetLogTools::FormatEvent_GetURL($arFields);
			}
		}
		else
		{
			switch ($arFields["TITLE"])
			{
				case "friend":
					$classname = "join-group";
					break;
				case "unfriend":
					$classname = "leave-group";
					break;
				default:
					$classname = "";
			}

			$arResult["EVENT_FORMATTED"] = array(
				"TITLE" => false,
				"TITLE_24" => $title_tmp_24,
				"MESSAGE" => $title,
				"IS_MESSAGE_SHORT" => true,
				"DESTINATION" => array(
					array(
						"STYLE" => "users",
						"TITLE" => $user_tmp,
						"URL" => str_replace(array("#user_id#", "#USER_ID#", "#id#", "#ID#"), $arFields["MESSAGE"], $arParams["~PATH_TO_USER"])
					)
				),
				"STYLE" => $classname
			);
		}
	}

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

	return $arResult;
}