• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblocksection.php
  • Класс: CAllIBlockSection
  • Вызов: CAllIBlockSection::getElementInherentFilter
static function getElementInherentFilter(array $filter): array
{
	$result = array();
	$filter = array_filter($filter, [__CLASS__, 'clearNull']);
	if (!empty($filter))
	{
		$prepared = array();
		foreach ($filter as $index => $value)
		{
			if ($index == 'ID' && (is_int($value) || is_string($value)))
			{
				$result['=ID'] = $value;
				break;
			}
			elseif (
				preg_match('/^(>=|<=|>|<|=|!=|)ID$/', $index, $prepared)
				&& $value instanceof CIBlockElement
			)
			{
				if ($index == 'ID')
					$index = '=ID';
				$result[$index] = $value;
			}
			elseif (($index === 'SUBQUERY' || $index === '=SUBQUERY') && is_array($value))
			{
				$result[$index] = $value;
			}
		}
		unset($index, $value);
		$catalogIncluded = Loader::includeModule('catalog');
		foreach($filter as $index => $value)
		{
			$op = CIBlock::MkOperationFilter($index);
			if (
				strncmp($op['FIELD'], 'PROPERTY_', 9) == 0
				|| ($catalogIncluded && CProductQueryBuilder::isValidField($op['FIELD']))
			)
			{
				$result[$index] = $value;
			}
		}
		unset($op);
	}
	return $result;
}