- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/counter.php
- Класс: CAllControllerCounter
- Вызов: CAllControllerCounter::GetList
static function GetList($arOrder=false, $arFilter=false)
{
global $DB;
if(!is_array($arOrder))
$arOrder = array();
$arQueryOrder = array();
foreach($arOrder as $strColumn => $strDirection)
{
$strColumn = mb_strtoupper($strColumn);
$strDirection = mb_strtoupper($strDirection) == "ASC"? "ASC": "DESC";
switch($strColumn)
{
case "ID":
case "NAME":
$arSelect[] = $strColumn;
$arQueryOrder[$strColumn] = $strColumn." ".$strDirection;
break;
}
}
$obQueryWhere = new CSQLWhere;
$arFields = array(
"ID" => array(
"TABLE_ALIAS" => "cc",
"FIELD_NAME" => "cc.ID",
"FIELD_TYPE" => "int",
"JOIN" => false,
),
"CONTROLLER_GROUP_ID" => array(
"TABLE_ALIAS" => "ccg",
"FIELD_NAME" => "ccg.CONTROLLER_GROUP_ID",
"FIELD_TYPE" => "int",
"JOIN" => "INNER JOIN b_controller_counter_group ccg ON ccg.CONTROLLER_COUNTER_ID = cc.ID",
"LEFT_JOIN" => "LEFT JOIN b_controller_counter_group ccg ON ccg.CONTROLLER_COUNTER_ID = cc.ID",
),
);
$obQueryWhere->SetFields($arFields);
if(!is_array($arFilter))
$arFilter = array();
$strQueryWhere = $obQueryWhere->GetQuery($arFilter);
$bDistinct = $obQueryWhere->bDistinctReqired;
$strSql = "
SELECT ".($bDistinct? "DISTINCT": "")."
cc.*
,".$DB->DateToCharFunction("cc.TIMESTAMP_X")." TIMESTAMP_X
FROM
b_controller_counter cc
".$obQueryWhere->GetJoins()."
";
if($strQueryWhere)
{
$strSql .= "
WHERE
".$strQueryWhere."
";
}
if(count($arQueryOrder) > 0)
{
$strSql .= "
ORDER BY
".implode(", ", $arQueryOrder)."
";
}
return $DB->Query($strSql);
}