• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock_rights.php
  • Класс: CIBlockRightsStorage
  • Вызов: CIBlockRightsStorage::FindParentWithInherit
function FindParentWithInherit($GROUP_CODE)
{
	global $DB;
	$arResult = array();

	if($this->ELEMENT_ID > 0)
	{
		$rs = $DB->Query("
			SELECT SR.SECTION_ID, SR.RIGHT_ID
			FROM
				b_iblock_section_element BSE
				INNER JOIN b_iblock_section_right SR ON SR.SECTION_ID = BSE.IBLOCK_SECTION_ID
				INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
			WHERE
				BSE.IBLOCK_ELEMENT_ID = ".$this->ELEMENT_ID."
				AND BSE.ADDITIONAL_PROPERTY_ID IS NULL
				AND BR.GROUP_CODE = '".$DB->ForSQL($GROUP_CODE)."'
		");
		while($ar = $rs->Fetch())
			$arResult[$ar["SECTION_ID"]] = $ar["RIGHT_ID"];
	}
	elseif(is_array($this->_get_section()))
	{
		$rs = $DB->Query("
			SELECT BS.IBLOCK_SECTION_ID, SR.RIGHT_ID
			FROM
				b_iblock_section BS
				INNER JOIN b_iblock_section_right SR ON SR.SECTION_ID = BS.IBLOCK_SECTION_ID
				INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
			WHERE
				BS.ID = ".$this->SECTION_ID."
				AND BR.GROUP_CODE = '".$DB->ForSQL($GROUP_CODE)."'
		");
		while($ar = $rs->Fetch())
			$arResult[$ar["IBLOCK_SECTION_ID"]] = $ar["RIGHT_ID"];
	}
	else
	{
		return array(); //iblock does not have parent
	}

	//Root section or element
	if(empty($arResult))
	{
		$rs = $DB->Query("
			SELECT BR.ID
			FROM
				b_iblock_right BR
			WHERE
				BR.IBLOCK_ID = ".$this->IBLOCK_ID."
				AND BR.GROUP_CODE = '".$DB->ForSQL($GROUP_CODE)."'
				AND ENTITY_TYPE = 'iblock'
		");
		while($ar = $rs->Fetch())
			$arResult[0] = $ar["ID"];
	}

	return $arResult;
}