- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockelement.php
- Класс: CAllIBlockElement
- Вызов: CAllIBlockElement::SubQuery
static function SubQuery($strField, $arFilter)
{
if(mb_substr($strField, 0, 9) == "PROPERTY_")
{
if (!is_array($arFilter))
{
return null;
}
$iblockId = null;
if (isset($arFilter['IBLOCK_ID']))
{
$iblockId = $arFilter['IBLOCK_ID'];
}
elseif (isset($arFilter['=IBLOCK_ID']))
{
$iblockId = $arFilter['=IBLOCK_ID'];
}
if ($iblockId === null)
{
return null;
}
$db_prop = CIBlockProperty::GetPropertyArray(
mb_substr($strField, 9),
CIBlock::_MergeIBArrays(
$iblockId,
$arFilter["IBLOCK_CODE"] ?? false,
$arFilter["~IBLOCK_ID"] ?? false,
$arFilter["~IBLOCK_CODE"] ?? false
)
);
if ($db_prop && $db_prop["PROPERTY_TYPE"] === IblockPropertyTable::TYPE_ELEMENT)
{
$ob = new CIBlockElement;
$ob->subQueryProp = $db_prop;
$ob->strField = $strField;
$ob->arFilter = $arFilter;
return $ob;
}
}
elseif($strField == "ID")
{
$ob = new CIBlockElement;
$ob->strField = $strField;
$ob->arFilter = $arFilter;
return $ob;
}
return null;
}