- Модуль: 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;
}
}