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