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;
}