- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockproperty.php
- Класс: CAllIBlockProperty
- Вызов: CAllIBlockProperty::GetPropertyEnum
static function GetPropertyEnum($PROP_ID, $arOrder = array("SORT"=>"asc"), $arFilter = array())
{
global $DB;
$strSqlSearch = "";
if(is_array($arFilter))
{
foreach($arFilter as $key => $val)
{
$key = mb_strtoupper($key);
switch($key)
{
case "ID":
$strSqlSearch .= "AND (BPE.ID=".intval($val).")n";
break;
case "IBLOCK_ID":
$strSqlSearch .= "AND (BP.IBLOCK_ID=".intval($val).")n";
break;
case "VALUE":
$strSqlSearch .= "AND (BPE.VALUE LIKE '".$DB->ForSql($val)."')n";
break;
case "EXTERNAL_ID":
case "XML_ID":
$strSqlSearch .= "AND (BPE.XML_ID LIKE '".$DB->ForSql($val)."')n";
break;
}
}
}
$arSqlOrder = array();
if(is_array($arOrder))
{
foreach($arOrder as $by => $order)
{
$by = mb_strtolower($by);
$order = mb_strtolower($order);
if ($order!="asc")
$order = "desc";
if ($by == "value")
$arSqlOrder["BPE.VALUE"] = "BPE.VALUE ".$order;
elseif ($by == "id")
$arSqlOrder["BPE.ID"] = "BPE.ID ".$order;
elseif ($by == "external_id")
$arSqlOrder["BPE.XML_ID"] = "BPE.XML_ID ".$order;
elseif ($by == "xml_id")
$arSqlOrder["BPE.XML_ID"] = "BPE.XML_ID ".$order;
else
$arSqlOrder["BPE.SORT"] = "BPE.SORT ".$order;
}
}
if(empty($arSqlOrder))
$strSqlOrder = "";
else
$strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);
return $DB->Query("
SELECT BPE.*, BPE.XML_ID as EXTERNAL_ID
FROM
b_iblock_property_enum BPE
INNER JOIN b_iblock_property BP ON BP.ID = BPE.PROPERTY_ID
WHERE
".(
is_numeric(mb_substr($PROP_ID, 0, 1))?
"BP.ID = ".(int)$PROP_ID:
"BP.CODE = '".$DB->ForSql($PROP_ID)."'"
)."
".$strSqlSearch."
".$strSqlOrder."
");
}