• Модуль: extranet
  • Путь к файлу: ~/bitrix/modules/extranet/classes/general/extranet.php
  • Класс: CExtranet
  • Вызов: CExtranet::IsIntranetUser
static function IsIntranetUser($site = SITE_ID, $userID = 0)
{
	global $USER;

	static $staticCache = [];

	if(!is_int($userID))
	{
		$userID = (int)$userID;
	}

	if($userID > 0)
	{
		if (isset($staticCache[$userID]))
		{
			$result = $staticCache[$userID];
		}
		else
		{
			$rsUser = CUser::GetList(
				'ID',
				'ASC',
				array("ID_EQUAL_EXACT" => $userID),
				array("FIELDS" => array("ID"), "SELECT" => array("UF_DEPARTMENT"))
			);
			$arUser = $rsUser->Fetch();

			$result = $staticCache[$userID] = (
				is_array($arUser)
				&& isset($arUser["UF_DEPARTMENT"][0])
				&& $arUser["UF_DEPARTMENT"][0] > 0
			);
		}

		return $result;
	}

	if(!(
		isset($USER)
		&& is_object($USER)
		&& ((get_class($USER) === 'CUser') || ($USER instanceof CUser))
		&& $USER->IsAuthorized()
	))
	{
		return false;
	}

	$userID = $USER->GetID();
	if($userID <= 0)
	{
		return false;
	}

	if(isset(BitrixMainApplication::getInstance()->getKernelSession()["aExtranetUser_{$userID}"][$site]))
	{
		return true;
	}

	if(
		$USER->IsAdmin()
		|| (
			Loader::includeModule('socialnetwork')
			&& CSocNetUser::IsCurrentUserModuleAdmin($site)
		)
	)
	{
		BitrixMainApplication::getInstance()->getKernelSession()["aExtranetUser_{$userID}"][$site] = true;
		return true;
	}

	if (isset($staticCache[$userID]))
	{
		$result = $staticCache[$userID];
	}
	else
	{
		$rsUser = CUser::GetList(
			'ID',
			'ASC',
			array("ID_EQUAL_EXACT" => $userID),
			array("FIELDS" => array("ID"), "SELECT" => array("UF_DEPARTMENT"))
		);

		$arUser = $rsUser->Fetch();
		$result = $staticCache[$userID] = (
			is_array($arUser)
			&& isset($arUser["UF_DEPARTMENT"][0])
			&& $arUser["UF_DEPARTMENT"][0] > 0
		);

		if ($result)
		{
			BitrixMainApplication::getInstance()->getKernelSession()["aExtranetUser_{$userID}"][$site] = true;
		}
	}

	return $result;
}