• Модуль: controller
  • Путь к файлу: ~/bitrix/modules/controller/classes/general/controllergroup.php
  • Класс: CControllerGroup
  • Вызов: CControllerGroup::GetList
static function GetList($arOrder = Array(), $arFilter = Array(), $arSelect = Array())
{
	global $DB;

	$obUserFieldsSql = new CUserTypeSQL;
	$obUserFieldsSql->SetEntity("CONTROLLER_GROUP", "G.ID");
	$obUserFieldsSql->SetSelect($arSelect);
	$obUserFieldsSql->SetFilter($arFilter);
	$obUserFieldsSql->SetOrder($arOrder);

	static $arFields = array(
		"ID" => array(
			"FIELD_NAME" => "G.ID",
			"FIELD_TYPE" => "int",
		),
		"NAME" => array(
			"FIELD_NAME" => "G.NAME",
			"FIELD_TYPE" => "string",
		),
		"TIMESTAMP_X" => array(
			"FIELD_NAME" => "G.TIMESTAMP_X",
			"FIELD_TYPE" => "datetime",
		),
		"MODIFIED_BY" => array(
			"FIELD_NAME" => "G.MODIFIED_BY",
			"FIELD_TYPE" => "int",
		),
		"UPDATE_PERIOD" => array(
			"FIELD_NAME" => "G.UPDATE_PERIOD",
			"FIELD_TYPE" => "int",
		),
		"MODIFIED_BY_USER" => array(
			"FIELD_TYPE" => "string",
		),
		"DATE_CREATE" => array(
			"FIELD_NAME" => "G.DATE_CREATE",
			"FIELD_TYPE" => "datetime",
		),
		"CREATED_BY" => array(
			"FIELD_NAME" => "G.CREATED_BY",
			"FIELD_TYPE" => "int",
		),
		"CREATED_BY_USER" => array(
			"FIELD_TYPE" => "string",
		),
		"TRIAL_PERIOD" => array(
			"FIELD_NAME" => "G.TRIAL_PERIOD",
			"FIELD_TYPE" => "int",
		),
		"COUNTER_UPDATE_PERIOD" => array(
			"FIELD_NAME" => "G.COUNTER_UPDATE_PERIOD",
			"FIELD_TYPE" => "int",
		),
		"CHECK_COUNTER_FREE_SPACE" => array(
			"FIELD_NAME" => "G.CHECK_COUNTER_FREE_SPACE",
			"FIELD_TYPE" => "string",
		),
		"CHECK_COUNTER_SITES" => array(
			"FIELD_NAME" => "G.CHECK_COUNTER_SITES",
			"FIELD_TYPE" => "string",
		),
		"CHECK_COUNTER_USERS" => array(
			"FIELD_NAME" => "G.CHECK_COUNTER_USERS",
			"FIELD_TYPE" => "string",
		),
		"CHECK_COUNTER_LAST_AUTH" => array(
			"FIELD_NAME" => "G.CHECK_COUNTER_LAST_AUTH",
			"FIELD_TYPE" => "string",
		),
	);

	$arFields["MODIFIED_BY_USER"]["FIELD_NAME"] = $DB->Concat("UM.LOGIN", "UM.NAME", "UM.LAST_NAME");
	$arFields["CREATED_BY_USER"]["FIELD_NAME"] = $DB->Concat("UC.LOGIN", "UC.NAME", "UC.LAST_NAME");

	$obWhere = new CSQLWhere;
	$obWhere->SetFields($arFields);

	$arFilterNew = Array();
	foreach ($arFilter as $k => $value)
		if ($value <> '' || $value === false)
			$arFilterNew[$k] = $value;

	$strWhere = "1 = 1";
	$r = $obWhere->GetQuery($arFilterNew);
	if ($r <> '')
		$strWhere .= " AND (".$r.") ";

	$r = $obUserFieldsSql->GetFilter();
	if ($r <> '')
		$strWhere .= " AND (".$r.") ";

	$strSql = "
		SELECT ".($obUserFieldsSql->GetDistinct()? "DISTINCT": "")." G.*
			,UC.LOGIN as CREATED_BY_LOGIN
			,UC.NAME as CREATED_BY_NAME
			,UC.LAST_NAME as CREATED_BY_LAST_NAME
			,UM.LOGIN as MODIFIED_BY_LOGIN
			,UM.NAME as MODIFIED_BY_NAME
			,UM.LAST_NAME as MODIFIED_BY_LAST_NAME
			,".$DB->DateToCharFunction("G.TIMESTAMP_X")." as TIMESTAMP_X
			,".$DB->DateToCharFunction("G.DATE_CREATE")." as DATE_CREATE
			".$obUserFieldsSql->GetSelect()."
		FROM b_controller_group G
			LEFT JOIN b_user UC ON UC.ID=G.CREATED_BY
			LEFT JOIN b_user UM ON UM.ID=G.MODIFIED_BY
			".$obWhere->GetJoins()."
			".$obUserFieldsSql->GetJoin("G.ID")."
		WHERE ".$strWhere."
		".CControllerAgent::_OrderBy($arOrder, $arFields, $obUserFieldsSql)."
	";

	$dbr = $DB->Query($strSql);
	$dbr->is_filtered = ($strWhere <> '');
	return $dbr;
}