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

	if($this->ELEMENT_ID > 0)
	{
	}
	elseif(is_array($this->_get_section()))
	{
		//Count subsections
		$rs = $DB->Query("
			SELECT
				COUNT(DISTINCT SR.SECTION_ID) CNT
			FROM
				b_iblock_right BR
				INNER JOIN b_iblock_section_right SR ON SR.RIGHT_ID = BR.ID
				INNER JOIN b_iblock_section BS ON BS.ID = SR.SECTION_ID
			WHERE
				BR.IBLOCK_ID = ".$this->IBLOCK_ID."
				AND BR.GROUP_CODE = '".$DB->ForSQL($GROUP_CODE, 32)."'
				AND SR.IS_INHERITED = 'N'
				AND BS.LEFT_MARGIN  > ".$this->arSection["LEFT_MARGIN"]."
				AND BS.RIGHT_MARGIN < ".$this->arSection["RIGHT_MARGIN"]."
		");
		$ar = $rs->Fetch();
		if($ar)
			$arResult[0] = $ar["CNT"];

		//Count elements in subsections
		$rs = $DB->Query("
			SELECT
				COUNT(DISTINCT ER.ELEMENT_ID) CNT
			FROM
				b_iblock_right BR
				INNER JOIN b_iblock_element_right ER ON ER.RIGHT_ID = BR.ID
				INNER JOIN b_iblock_section_element BSE ON BSE.IBLOCK_ELEMENT_ID = ER.ELEMENT_ID AND ADDITIONAL_PROPERTY_ID IS NULL
				INNER JOIN b_iblock_section BS ON BS.ID = BSE.IBLOCK_SECTION_ID
			WHERE
				BR.IBLOCK_ID = ".$this->IBLOCK_ID."
				AND BR.GROUP_CODE = '".$DB->ForSQL($GROUP_CODE, 32)."'
				AND ER.IS_INHERITED = 'N'
				AND BS.LEFT_MARGIN  >= ".$this->arSection["LEFT_MARGIN"]."
				AND BS.RIGHT_MARGIN <= ".$this->arSection["RIGHT_MARGIN"]."
		");

		$ar = $rs->Fetch();
		if($ar)
			$arResult[1] = $ar["CNT"];
	}
	else
	{
		//Count subsections
		$rs = $DB->Query("
			SELECT
				COUNT(DISTINCT SR.SECTION_ID) CNT
			FROM
				b_iblock_right BR
				INNER JOIN b_iblock_section_right SR ON SR.RIGHT_ID = BR.ID
			WHERE
				BR.IBLOCK_ID = ".$this->IBLOCK_ID."
				AND BR.GROUP_CODE = '".$DB->ForSQL($GROUP_CODE, 32)."'
				AND SR.IS_INHERITED = 'N'
		");
		$ar = $rs->Fetch();
		if($ar)
			$arResult[0] = $ar["CNT"];

		//Count elements in subsections
		$rs = $DB->Query("
			SELECT
				COUNT(DISTINCT ER.ELEMENT_ID) CNT
			FROM
				b_iblock_right BR
				INNER JOIN b_iblock_element_right ER ON ER.RIGHT_ID = BR.ID
			WHERE
				BR.IBLOCK_ID = ".$this->IBLOCK_ID."
				AND BR.GROUP_CODE = '".$DB->ForSQL($GROUP_CODE, 32)."'
				AND ER.IS_INHERITED = 'N'
		");
		$ar = $rs->Fetch();
		if($ar)
			$arResult[1] = $ar["CNT"];
	}

	return $arResult;
}