- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/iblocksocnet.php
- Класс: CIBlockWebdavSocnet
- Вызов: CIBlockWebdavSocnet::GetUserGroups
static function GetUserGroups($userID = 0, $bGetFolders = true)
{
static $oCache = null;
static $CACHE_PATH = "/webdav/sonet_user_groups/";
if (! CBXFeatures::IsFeatureEnabled("Workgroups"))
return array();
$userID = intval($userID);
if (intval($userID) <= 0)
$userID = $GLOBALS['USER']->GetID();
//$currentUserGroups = CWebDavBase::CustomDataCache($CACHE_PATH, $userID);
//if (!$currentUserGroups)
//{
$currentUserGroups = array();
$db_res = CSocNetUserToGroup::GetList(
array("GROUP_NAME" => "ASC"),
array("USER_ID" => $userID),
false,
false,
array("GROUP_ID", "GROUP_NAME", "GROUP_ACTIVE", "GROUP_CLOSED", "ROLE")
);
while ($res = $db_res->GetNext())
{
if (
($res['GROUP_ACTIVE'] == 'Y') &&
($res['GROUP_CLOSED'] == 'N') &&
($res['ROLE'] != SONET_ROLES_BAN) &&
($res['ROLE'] != SONET_ROLES_REQUEST))
{
$currentUserGroups[$res["GROUP_ID"]] = $res;
}
}
$arGroupID = array_keys($currentUserGroups);
if (is_array($arGroupID) && (sizeof($arGroupID) > 0))
{
$arFeatures = CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arGroupID, 'files');
foreach ($arFeatures as $groupID => $enabled)
if (!$enabled)
unset($currentUserGroups[$groupID]);
}
if ($bGetFolders)
{
$groupIBlock = CWebDavIblock::LibOptions('group_files', false, SITE_ID);
if ($groupIBlock && isset($groupIBlock['id']) && intval($groupIBlock['id']) > 0)
{
$arFilter = array(
"IBLOCK_ID" => intval($groupIBlock['id']),
"SECTION_ID" => 0,
"CHECK_PERMISSIONS" => "N"
);
$dbSection = CIBlockSection::GetList(array(), $arFilter, false, array('ID', 'SOCNET_GROUP_ID'));
while ($arGroupSection = $dbSection->Fetch())
{
if (isset($currentUserGroups[$arGroupSection['SOCNET_GROUP_ID']]))
$currentUserGroups[$arGroupSection['SOCNET_GROUP_ID']]['SECTION_ID'] = $arGroupSection['ID'];
}
//CWebDavBase::CustomDataCache($CACHE_PATH, $userID, $currentUserGroups, 'wd_socnet, iblock_id_'.intval($groupIBlock['id'])); // do not save to cache if LibOptions('group_files') is empty
}
}
//}
return $currentUserGroups;
}