- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/iblock.php
- Класс: CWebDavIblock
- Вызов: CWebDavIblock::GetPermissions
static function GetPermissions($type, $arID, $IBLOCK_ID=null)
{
static $cache = array();
if ($IBLOCK_ID === null && isset($this))
$IBLOCK_ID = $this->IBLOCK_ID;
if ($IBLOCK_ID === null)
throw new Exception("GetPermissions called statically, but no IBLOCK_ID is set");
if (!isset($cache[$IBLOCK_ID]))
$cache[$IBLOCK_ID] = array();
if (!is_array($arID) && ($type=='ELEMENT'))
{
if (isset($cache[$IBLOCK_ID][$arID]))
return $cache[$IBLOCK_ID][$arID];
}
if($type == 'SECTION' && !is_array($arID) && isset($this) && is_object($this) && $this instanceof CWebDavBase)
{
list($contextType, $contextEntityId) = $this->getContextData();
$sectionData = $this->getSectionDataForLinkAnalyze($arID);
//if this element is link.
if($sectionData && $sectionData['ID'] != $arID)
{
return self::GetPermissions($type, $sectionData['ID'], $sectionData['IBLOCK_ID']);
}
}
$ibRights = CWebDavIblock::_get_ib_rights_object($type, 0, $IBLOCK_ID);
$result = $ibRights->GetUserOperations($arID);
if ($type=='ELEMENT')
{
if (is_array($arID))
$cache[$IBLOCK_ID] = array_merge($cache[$IBLOCK_ID], $result);
else
$cache[$IBLOCK_ID][$arID] = $result;
}
return $result;
}