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