static function GetList($arOrder=array(), $arFilter=array(), $arSelect=array())
{
global $DB;
if(!is_array($arSelect))
$arSelect =/*.(array[string]string).*/array();
if(count($arSelect) < 1)
$arSelect = array(
"ID",
"ACTIVE",
"READ_ONLY",
"SORT",
"SERVICE_ID",
"LOCATION",
"BUCKET",
"SETTINGS",
"CNAME",
"PREFIX",
"FILE_COUNT",
"FILE_SIZE",
"LAST_FILE_ID",
"FILE_RULES",
"FAILOVER_ACTIVE",
"FAILOVER_BUCKET_ID",
"FAILOVER_COPY",
"FAILOVER_DELETE",
"FAILOVER_DELETE_DELAY",
);
if(!is_array($arOrder))
$arOrder =/*.(array[string]string).*/array();
$arQueryOrder = array();
foreach($arOrder as $strColumn => $strDirection)
{
$strColumn = mb_strtoupper($strColumn);
$strDirection = mb_strtoupper($strDirection) === "ASC"? "ASC": "DESC";
switch($strColumn)
{
case "ID":
case "SORT":
$arSelect[] = $strColumn;
$arQueryOrder[$strColumn] = $strColumn." ".$strDirection;
break;
default:
break;
}
}
$arQuerySelect = array();
foreach($arSelect as $strColumn)
{
$strColumn = mb_strtoupper($strColumn);
switch($strColumn)
{
case "ID":
case "ACTIVE":
case "READ_ONLY":
case "SORT":
case "SERVICE_ID":
case "LOCATION":
case "BUCKET":
case "SETTINGS":
case "CNAME":
case "PREFIX":
case "FILE_COUNT":
case "FILE_SIZE":
case "LAST_FILE_ID":
case "FILE_RULES":
case "FAILOVER_ACTIVE":
case "FAILOVER_BUCKET_ID":
case "FAILOVER_COPY":
case "FAILOVER_DELETE":
case "FAILOVER_DELETE_DELAY":
$arQuerySelect[$strColumn] = "s.".$strColumn;
break;
}
}
if(count($arQuerySelect) < 1)
$arQuerySelect = array("ID"=>"s.ID");
$obQueryWhere = new CSQLWhere;
$arFields = array(
"ID" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.ID",
"FIELD_TYPE" => "int",
),
"ACTIVE" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.ACTIVE",
"FIELD_TYPE" => "string",
),
"READ_ONLY" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.READ_ONLY",
"FIELD_TYPE" => "string",
),
"SERVICE_ID" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.SERVICE_ID",
"FIELD_TYPE" => "string",
),
"BUCKET" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.BUCKET",
"FIELD_TYPE" => "string",
),
"FAILOVER_ACTIVE" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.FAILOVER_ACTIVE",
"FIELD_TYPE" => "string",
),
"FAILOVER_BUCKET_ID" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.FAILOVER_BUCKET_ID",
"FIELD_TYPE" => "int",
),
"FAILOVER_COPY" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.FAILOVER_COPY",
"FIELD_TYPE" => "string",
),
"FAILOVER_DELETE" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.FAILOVER_DELETE",
"FIELD_TYPE" => "string",
),
"FAILOVER_DELETE_DELAY" => array(
"TABLE_ALIAS" => "s",
"FIELD_NAME" => "s.FAILOVER_DELETE_DELAY",
"FIELD_TYPE" => "int",
),
);
$obQueryWhere->SetFields($arFields);
if(!is_array($arFilter))
$arFilter =/*.(array[string]string).*/array();
$strQueryWhere = $obQueryWhere->GetQuery($arFilter);
$bDistinct = $obQueryWhere->bDistinctReqired;
$strSql = "
SELECT ".($bDistinct? "DISTINCT": "")."
".implode(", ", $arQuerySelect)."
FROM
b_clouds_file_bucket s
".$obQueryWhere->GetJoins()."
";
if($strQueryWhere != "")
{
$strSql .= "
WHERE
".$strQueryWhere."
";
}
if(count($arQueryOrder) > 0)
{
$strSql .= "
ORDER BY
".implode(", ", $arQueryOrder)."
";
}
return $DB->Query($strSql);
}