• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblocksection.php
  • Класс: CAllIBlockSection
  • Вызов: CAllIBlockSection::GetCount
static function GetCount($arFilter = [])
{
	global $DB, $USER;

	$arSqlSearch = CIBlockSection::GetFilter($arFilter);

	$bCheckPermissions = !array_key_exists("CHECK_PERMISSIONS", $arFilter) || $arFilter["CHECK_PERMISSIONS"]!=="N";
	$bIsAdmin = is_object($USER) && $USER->IsAdmin();
	$permissionsBy = null;
	if ($bCheckPermissions && isset($arFilter['PERMISSIONS_BY']))
	{
		$permissionsBy = (int)$arFilter['PERMISSIONS_BY'];
		if ($permissionsBy < 0)
			$permissionsBy = null;
	}
	if ($bCheckPermissions && ($permissionsBy !== null || !$bIsAdmin))
	{
		$arSqlSearch[] = self::_check_rights_sql(
			$arFilter['MIN_PERMISSION'] ?? CIBlockRights::PUBLIC_READ,
			$permissionsBy
		);
	}
	unset($permissionsBy);

	$strSqlSearch = "";
	foreach($arSqlSearch as $i=>$strSearch)
		if($strSearch <> '')
			$strSqlSearch .= "ntttAND  (".$strSearch.") ";

	$strSql = "
		SELECT COUNT(DISTINCT BS.ID) as C
		FROM b_iblock_section BS
			INNER JOIN b_iblock B ON BS.IBLOCK_ID = B.ID
		WHERE 1=1
		".$strSqlSearch."
	";

	$res = $DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__); $res_cnt = $res->Fetch(); return (int)($res_cnt["C"] ?? 0); }