static function GetList($arOrder = Array("ID" => "DESC"), $arFilter = array())
{
global $DB;
$err_mess = "FILE: ".__FILE__."
LINE: ";
$arSqlSearch = array();
$arSqlOrder = array();
$arOFields = array(
"ID" => "A.ID",
"ACTIVE" => "A.ACTIVE",
"IS_PERIOD" => "A.IS_PERIOD",
"NAME" => "A.NAME",
"MODULE_ID" => "A.MODULE_ID",
"USER_ID" => "A.USER_ID",
"LAST_EXEC" => "A.LAST_EXEC",
"AGENT_INTERVAL" => "A.AGENT_INTERVAL",
"NEXT_EXEC" => "A.NEXT_EXEC",
"DATE_CHECK" => "A.DATE_CHECK",
"SORT" => "A.SORT"
);
if(!is_array($arFilter))
$filter_keys = array();
else
$filter_keys = array_keys($arFilter);
for($i = 0, $n = count($filter_keys); $i < $n; $i++)
{
$val = $arFilter[$filter_keys[$i]];
$key = strtoupper($filter_keys[$i]);
if ((string)$val == '')
{
continue;
}
switch($key)
{
case "ID":
$arSqlSearch[] = "A.ID=".(int)$val;
break;
case "ACTIVE":
$t_val = mb_strtoupper($val);
if($t_val == "Y" || $t_val == "N")
$arSqlSearch[] = "A.ACTIVE='".$t_val."'";
break;
case "IS_PERIOD":
$t_val = mb_strtoupper($val);
if($t_val=="Y" || $t_val=="N")
$arSqlSearch[] = "A.IS_PERIOD='".$t_val."'";
break;
case "NAME":
$arSqlSearch[] = "A.NAME LIKE '".$DB->ForSQLLike($val)."'";
break;
case "=NAME":
$arSqlSearch[] = "A.NAME = '".$DB->ForSQL($val)."'";
break;
case "MODULE_ID":
$arSqlSearch[] = "A.MODULE_ID = '".$DB->ForSQL($val)."'";
break;
case "USER_ID":
$arSqlSearch[] = "A.USER_ID ".(intval($val)<=0?"IS NULL":"=".intval($val));
break;
case "LAST_EXEC":
$arr = ParseDateTime($val, CLang::GetDateFormat());
if($arr)
{
$date2 = mktime(0, 0, 0, $arr["MM"], $arr["DD"]+1, $arr["YYYY"]);
$arSqlSearch[] = "A.LAST_EXEC>=".$DB->CharToDateFunction($DB->ForSql($val), "SHORT")." AND A.LAST_EXEC<".$DB->CharToDateFunction(ConvertTimeStamp($date2), "SHORT");
}
break;
case "NEXT_EXEC":
$arr = ParseDateTime($val);
if($arr)
{
$date2 = mktime(0, 0, 0, $arr["MM"], $arr["DD"]+1, $arr["YYYY"]);
$arSqlSearch[] = "A.NEXT_EXEC>=".$DB->CharToDateFunction($DB->ForSql($val), "SHORT")." AND A.NEXT_EXEC<".$DB->CharToDateFunction(ConvertTimeStamp($date2), "SHORT");
}
break;
}
}
foreach($arOrder as $by => $order)
{
$by = mb_strtoupper($by);
$order = mb_strtoupper($order);
if (isset($arOFields[$by]))
{
if ($order != "ASC")
{
$order = "DESC";
}
$arSqlOrder[] = $arOFields[$by]." ".$order;
}
}
$strSql = "SELECT A.ID, A.MODULE_ID, A.USER_ID, B.LOGIN, B.NAME as USER_NAME, B.LAST_NAME, A.SORT, ".
"A.NAME, A.ACTIVE, A.RUNNING, ".
$DB->DateToCharFunction("A.LAST_EXEC")." as LAST_EXEC, ".
$DB->DateToCharFunction("A.NEXT_EXEC")." as NEXT_EXEC, ".
$DB->DateToCharFunction("A.DATE_CHECK")." as DATE_CHECK, ".
"A.AGENT_INTERVAL, A.IS_PERIOD, A.RETRY_COUNT ".
"FROM b_agent A LEFT JOIN b_user B ON(A.USER_ID = B.ID)";
$strSql .= !empty($arSqlSearch) ? " WHERE ".implode(" AND ", $arSqlSearch) : "";
$strSql .= !empty($arSqlOrder) ? " ORDER BY ".implode(", ", $arSqlOrder) : "";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
return $res;
}