- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockelement.php
- Класс: CAllIBlockElement
- Вызов: CAllIBlockElement::GetPropertyValues
static function GetPropertyValues($IBLOCK_ID, $arElementFilter, $extMode = false, $propertyFilter = array())
{
global $DB;
$IBLOCK_ID = (int)$IBLOCK_ID;
$VERSION = CIBlockElement::GetIBVersion($IBLOCK_ID);
$propertyID = array();
if (isset($propertyFilter['ID']))
{
$propertyID = (is_array($propertyFilter['ID']) ? $propertyFilter['ID'] : array($propertyFilter['ID']));
MainTypeCollection::normalizeArrayValuesByInt($propertyID);
}
$arElementFilter["IBLOCK_ID"] = $IBLOCK_ID;
$element = new CIBlockElement;
$element->strField = "ID";
$element->prepareSql(array("ID"), $arElementFilter, false, false);
if ($VERSION == 2)
$strSql = "
SELECT
BEP.*
FROM
".$element->sFrom."
INNER JOIN b_iblock_element_prop_s".$IBLOCK_ID." BEP ON BEP.IBLOCK_ELEMENT_ID = BE.ID
WHERE 1=1 ".$element->sWhere."
ORDER BY
BEP.IBLOCK_ELEMENT_ID
";
else
$strSql = "
SELECT
BE.ID IBLOCK_ELEMENT_ID
,BEP.IBLOCK_PROPERTY_ID
,BEP.VALUE
,BEP.VALUE_NUM
".($extMode ?
",BEP.ID PROPERTY_VALUE_ID
,BEP.DESCRIPTION
" :
""
)."
FROM
".$element->sFrom."
LEFT JOIN b_iblock_element_property BEP ON BEP.IBLOCK_ELEMENT_ID = BE.ID ".
"WHERE 1=1 ".$element->sWhere.(!empty($propertyID) ? " AND BEP.IBLOCK_PROPERTY_ID IN (".implode(', ', $propertyID).")" : "")."
ORDER BY
BEP.IBLOCK_ELEMENT_ID, BEP.IBLOCK_PROPERTY_ID, BEP.ID
";
$rs = new CIBlockPropertyResult($DB->Query($strSql));
$rs->setIBlock($IBLOCK_ID, $propertyID);
$rs->setMode($extMode);
return $rs;
}