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

	if (is_array($arSonetGroupIDAvailable))
	{
		return $arSonetGroupIDAvailable;
	}
	else
	{
		$arSonetGroupIDAvailable = array();

		if (!$isExtranetUser)
		{
			$isExtranetUser = (CModule::IncludeModule("extranet") && !CExtranet::IsIntranetUser() ? "Y" : "N");
		}

		if (!$isExtranetSite)
		{
			$isExtranetSite = (CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite() ? "Y" : "N");
		}

		$cache = new CPHPCache;
		$cache_time = 31536000;
		$cache_id = $USER->GetID().($isExtranetUser == "Y" ? "_ex" : "");
		$cache_path = "/sonet/groups_available/".$USER->GetID()."/";

		if ($cache->InitCache($cache_time, $cache_id, $cache_path))
		{
			$arCacheVars = $cache->GetVars();
			$arSonetGroupIDAvailable = $arCacheVars["arGroupID"];
		}
		else
		{
			$cache->StartDataCache($cache_time, $cache_id, $cache_path);
			if (defined("BX_COMP_MANAGED_CACHE"))
			{
				$CACHE_MANAGER->StartTagCache($cache_path);
				$CACHE_MANAGER->RegisterTag("sonet_user2group_U".$USER->GetID());
				$CACHE_MANAGER->RegisterTag("sonet_group");
			}

			$arFilter = array("CHECK_PERMISSIONS" => $USER->GetID());

			if (
				$isExtranetUser == "Y"
				&& $isExtranetSite == "Y"
				&& CModule::IncludeModule("extranet")
			)
			{
				$arFilter["SITE_ID"] = CExtranet::GetExtranetSiteID();
			}

			$rsGroup = CSocNetGroup::GetList(
				array(),
				$arFilter,
				false,
				false,
				array("ID")
			);
			while($arGroup = $rsGroup->Fetch())
			{
				$arSonetGroupIDAvailable[] = $arGroup["ID"];
			}

			$arCacheData = array(
				"arGroupID" => $arSonetGroupIDAvailable
			);

			if(defined("BX_COMP_MANAGED_CACHE"))
			{
				$CACHE_MANAGER->EndTagCache();
			}

			$cache->EndDataCache($arCacheData);
		}

		return $arSonetGroupIDAvailable;
	}
}