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