• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_destination.php
  • Класс: CSocNetLogDestination
  • Вызов: CSocNetLogDestination::GetGratMedalUsers
static function GetGratMedalUsers($arParams = Array())
{
	global $USER;

	static $resultCache = array();

	$userId = intval($USER->GetID());

	if(!isset($resultCache[$userId]))
	{
		$arSubordinateDepts = array();

		if (CModule::IncludeModule("intranet"))
		{
			$arSubordinateDepts = CIntranetUtils::GetSubordinateDepartments($userId, true);
		}

		$arFilter = Array(
			"ACTIVE" => "Y",
			"!UF_DEPARTMENT" => false
		);

		$arExtParams = Array(
			"FIELDS" => Array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "EMAIL", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION", "IS_ONLINE"),
			"SELECT" => Array("UF_DEPARTMENT")
		);

		if (isset($arParams["id"]))
		{
			if (empty($arParams["id"]))
			{
				$arFilter["ID"] = $userId;
			}
			else
			{
				$arSelect = array();
				foreach ($arParams["id"] as $value)
				{
					$arSelect[] = intval($value);
				}
				$arFilter["ID"] = implode("|", $arSelect);
			}
		}

		$arGratUsers = Array();
		$arMedalUsers = Array();

		$dbUsers = CUser::GetList(Array("last_name" => "asc", "IS_ONLINE" => "desc"), '', $arFilter, $arExtParams);
		while ($arUser = $dbUsers->GetNext())
		{
			$sName = trim(CUser::FormatName(empty($arParams["NAME_TEMPLATE"]) ? CSite::GetNameFormat(false) : $arParams["NAME_TEMPLATE"], $arUser));

			if (empty($sName))
			{
				$sName = $arUser["~LOGIN"];
			}

			$arFileTmp = CFile::ResizeImageGet(
				$arUser["PERSONAL_PHOTO"],
				array("width" => 100, "height" => 100),
				BX_RESIZE_IMAGE_EXACT,
				false
			);

			$arGratUsers['U'.$arUser["ID"]] = Array(
				"id" => "U".$arUser["ID"],
				"entityId" => $arUser["ID"],
				"email" => $arUser["EMAIL"],
				"name" => $sName,
				"avatar" => empty($arFileTmp["src"]) ? '' : $arFileTmp["src"],
				"desc" => $arUser["WORK_POSITION"] ? $arUser["WORK_POSITION"] : ($arUser["PERSONAL_PROFESSION"] ? $arUser["PERSONAL_PROFESSION"] : " "),
			);

			if (
				count($arSubordinateDepts) > 0
				&& count(array_intersect($arSubordinateDepts, $arUser["UF_DEPARTMENT"])) > 0
			)
			{
				$arMedalUsers['U'.$arUser["ID"]] = $arGratUsers['U'.$arUser["ID"]];
			}
		}
		$resultCache[$userId] = array("GRAT" => $arGratUsers, "MEDAL" => $arMedalUsers);
	}

	return $resultCache[$userId];
}