• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/agent.php
  • Класс: CAllAgent
  • Вызов: CAllAgent::GetList
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; }