static function GetList($arOrder=false, $arFilter=false, $arSelect=false)
{
global $DB;
if(!is_array($arSelect))
$arSelect = array();
if(count($arSelect) < 1)
$arSelect = array(
"ID",
"ACTIVE",
"ROLE_ID",
"NAME",
"DESCRIPTION",
"DB_HOST",
"DB_NAME",
"DB_LOGIN",
"DB_PASSWORD",
"MASTER_ID",
"SERVER_ID",
"STATUS",
"WEIGHT",
"SELECTABLE",
"GROUP_ID"
);
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;
}
}
$arQuerySelect = array();
foreach($arSelect as $strColumn)
{
$strColumn = mb_strtoupper($strColumn);
switch($strColumn)
{
case "ID":
case "ACTIVE":
case "ROLE_ID":
case "NAME":
case "DESCRIPTION":
case "DB_HOST":
case "DB_NAME":
case "DB_LOGIN":
case "DB_PASSWORD":
case "MASTER_ID":
case "SERVER_ID":
case "STATUS":
case "WEIGHT":
case "SELECTABLE":
case "GROUP_ID":
$arQuerySelect[$strColumn] = "n.".$strColumn;
break;
}
}
if(count($arQuerySelect) < 1)
$arQuerySelect = array("ID"=>"n.ID");
$obQueryWhere = new CSQLWhere;
$arFields = array(
"ID" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.ID",
"FIELD_TYPE" => "int",
"JOIN" => false,
),
"GROUP_ID" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.GROUP_ID",
"FIELD_TYPE" => "string",
"JOIN" => false,
),
"ROLE_ID" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.ROLE_ID",
"FIELD_TYPE" => "string",
"JOIN" => false,
),
"ACTIVE" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.ACTIVE",
"FIELD_TYPE" => "string",
"JOIN" => false,
),
"SERVER_ID" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.SERVER_ID",
"FIELD_TYPE" => "int",
"JOIN" => false,
),
"MASTER_ID" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.MASTER_ID",
"FIELD_TYPE" => "int",
"JOIN" => false,
),
"STATUS" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.STATUS",
"FIELD_TYPE" => "string",
"JOIN" => false,
),
"NAME" => array(
"TABLE_ALIAS" => "n",
"FIELD_NAME" => "n.NAME",
"FIELD_TYPE" => "string",
"JOIN" => false,
),
);
$obQueryWhere->SetFields($arFields);
if(!is_array($arFilter))
$arFilter = array();
$strQueryWhere = $obQueryWhere->GetQuery($arFilter);
$bDistinct = $obQueryWhere->bDistinctReqired;
$strSql = "
SELECT ".($bDistinct? "DISTINCT": "")."
".implode(", ", $arQuerySelect)."
FROM
b_cluster_dbnode n
".$obQueryWhere->GetJoins()."
";
if($strQueryWhere)
{
$strSql .= "
WHERE
".$strQueryWhere."
";
}
if(count($arQueryOrder) > 0)
{
$strSql .= "
ORDER BY
".implode(", ", $arQueryOrder)."
";
}
return $DB->Query($strSql, false, '', array('fixed_connection'=>true));
}