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