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

	static $arAlbumName = array();

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

	$arResult = array(
		"EVENT" => $arFields,
		"CREATED_BY" => CSocNetLogTools::FormatEvent_GetCreatedBy($arFields, $arParams, $bMail),
		"ENTITY" => CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, $bMail),
		"EVENT_FORMATTED" => array(),
	);

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

	$count = false;
	if ($arFields["PARAMS"] <> '')
	{
		$arTmp = unserialize(htmlspecialcharsback($arFields["PARAMS"]), [ 'allowed_classes' => false ]);
		if ($arTmp)
		{
			$count = $arTmp["COUNT"];
		}
		else
		{
			$arFieldsParams = explode("&", $arFields["PARAMS"]);
			if (is_array($arFieldsParams) && count($arFieldsParams) > 0)
			{
				foreach ($arFieldsParams as $tmp)
				{
					list($key, $value) = explode("=", $tmp);
					if ($key === "count")
					{
						$count = $value;
						break;
					}
				}
			}
		}
	}

	if (!$count)
		$count_tmp = "";
	else
		$count_tmp = intval($count);

	$album_default = GetMessage("SONET_GL_EVENT_TITLE_PHOTO_ALBUM");
	$album_default_24 = GetMessage("SONET_GL_EVENT_TITLE_PHOTO_ALBUM_24");
	$album_default_24_mobile = GetMessage("SONET_GL_EVENT_TITLE_PHOTO_ALBUM_24_MOBILE");

	$section_name = false;
	if (
		intval($arFields["SOURCE_ID"]) > 0
		&& CModule::IncludeModule('iblock')
	)
	{
		if (array_key_exists($arFields["SOURCE_ID"], $arAlbumName))
			$section_name = $arAlbumName[$arFields["SOURCE_ID"]];
		else
		{
			$rsSection = CIBlockSection::GetByID($arFields["SOURCE_ID"]);
			if ($arSection = $rsSection->GetNext())
			{
				$section_name = $arSection["NAME"];
				$arAlbumName[$arFields["SOURCE_ID"]] = $arSection["NAME"];

				if(defined("BX_COMP_MANAGED_CACHE"))
				{
					$CACHE_MANAGER->RegisterTag("iblock_id_".$arSection["IBLOCK_ID"]);
				}
			}
		}
	}

	if (
		!$bMail
		&& array_key_exists("URL", $arFields)
		&& $arFields["URL"] <> ''
	)
	{
		$album_tmp = ($section_name ? $album_default.' '.$section_name.'' : ''.$album_default.'');
		$album_tmp_24 = ($section_name ? $album_default_24.': '.$section_name.'' : ''.$album_default_24.'');
		$album_tmp_24_mobile = ($section_name ? $album_default_24_mobile.': '.$section_name : $album_default_24_mobile);
	}
	else
	{
		$album_tmp = ($section_name ? $album_default.' '.$section_name : $album_default);
		$album_tmp_24 = ($section_name ? $album_default_24.': ' . $section_name : $album_default_24);
		$album_tmp_24_mobile = ($section_name ? $album_default_24_mobile.': '.$section_name : $album_default_24_mobile);
	}

	$title_tmp = '';
	if ($bMail)
		$title_tmp = GetMessage("SONET_GL_EVENT_TITLE_".($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP ? "GROUP" : "USER")."_PHOTO_MAIL");
	elseif (($arParams["MOBILE"] ?? null) == "Y")
		$title_tmp_24 = GetMessage("SONET_GL_EVENT_TITLE_PHOTO_24_MOBILE");
	else
	{
		$title_tmp = GetMessage("SONET_GL_EVENT_TITLE_PHOTO");
		switch ($arFields["CREATED_BY_PERSONAL_GENDER"])
		{
			case "M":
				$suffix = "_M";
				break;
			case "F":
				$suffix = "_F";
				break;
			default:
				$suffix = "";
		}
		$title_tmp_24 = GetMessage("SONET_GL_EVENT_TITLE_PHOTO_24".$suffix);
	}

	$title = str_replace(
		[
			"#ALBUM#",
			"#COUNT#",
			"#ENTITY#",
			"#CREATED_BY#"
		],
		[
			$album_tmp,
			$count_tmp,
			(is_string($arResult["ENTITY"]["FORMATTED"]) ? $arResult["ENTITY"]["FORMATTED"] : ''),
			($bMail ? $arResult["CREATED_BY"]["FORMATTED"] : "")
		],
		$title_tmp
	);

	if (!$bMail)
	{
		$title_24 = str_replace(
			[
				"#ALBUM#",
				"#COUNT#",
				"#ENTITY#",
				"#CREATED_BY#"
			],
			[
				(($arParams["MOBILE"] ?? null) === "Y" ? $album_tmp_24_mobile : $album_tmp_24),
				$count_tmp,
				(is_string($arResult["ENTITY"]["FORMATTED"]) ? $arResult["ENTITY"]["FORMATTED"] : ''),
				($bMail ? $arResult["CREATED_BY"]["FORMATTED"] : "")
			],
			$title_tmp_24
		);
	}

	$arResult["EVENT_FORMATTED"] = (
		(($arParams["MOBILE"] ?? null) === "Y")
			? [
				"TITLE_24" => $title_24,
				"MESSAGE" => "",
			]
			: [
				"TITLE" => $title,
				"TITLE_24" => $title_24,
				"MESSAGE" => "",
				"IS_MESSAGE_SHORT" => true,
			]
	);

	if ($bMail)
	{
		$url = CSocNetLogTools::FormatEvent_GetURL($arFields);
		if ($url <> '')
		{
			$arResult["EVENT_FORMATTED"]["URL"] = $url;
		}
	}
	else
	{
		$dbRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arFields["ID"]));
		while ($arRight = $dbRight->Fetch())
		{
			$arRights[] = $arRight["GROUP_CODE"];
		}

		$arResult["EVENT_FORMATTED"]["DESTINATION"] = CSocNetLogTools::FormatDestinationFromRights($arRights, array_merge($arParams, array("CREATED_BY" => $arFields["USER_ID"])), $iMoreCount);
		if (intval($iMoreCount) > 0)
		{
			$arResult["EVENT_FORMATTED"]["DESTINATION_MORE"] = $iMoreCount;
		}
	}

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

	return $arResult;
}