static function GetList($arOrder = Array("ID" => "DESC"), $arFilter = array(), $arNavParams = false)
{
global $DB;
$err_mess = "FILE: ".__FILE__."
LINE: ";
$arSqlSearch = array();
$arSqlOrder = array();
$arFields = array("ID", "TIMESTAMP_X", "AUDIT_TYPE_ID", "MODULE_ID", "SEVERITY", "ITEM_ID", "SITE_ID", "REMOTE_ADDR", "USER_AGENT", "REQUEST_URI", "USER_ID", "GUEST_ID");
$arOFields = array(
"ID" => "L.ID",
"TIMESTAMP_X" => "L.TIMESTAMP_X",
);
foreach($arFilter as $key => $val)
{
if(is_array($val))
{
if(empty($val))
continue;
}
elseif((string)$val == '')
{
continue;
}
$key = mb_strtoupper($key);
switch($key)
{
case "ID":
$arSqlSearch[] = "L.ID=".intval($val);
break;
case "TIMESTAMP_X_1":
$arSqlSearch[] = "L.TIMESTAMP_X >= ".$DB->CharToDateFunction($DB->ForSql($val), "FULL");
break;
case "TIMESTAMP_X_2":
$arSqlSearch[] = "L.TIMESTAMP_X <= ".$DB->CharToDateFunction($DB->ForSql($val), "FULL");
break;
case "=AUDIT_TYPE_ID":
$arValues = array();
if(is_array($val))
{
foreach($val as $value)
{
$value = trim($value);
if($value <> '')
{
$arValues[$value] = $DB->ForSQL($value);
}
}
}
elseif(is_string($val))
{
$value = trim($val);
if($value <> '')
{
$arValues[$value] = $DB->ForSQL($value);
}
}
if(!empty($arValues))
$arSqlSearch[] = "L.AUDIT_TYPE_ID in ('".implode("', '", $arValues)."')";
break;
case "=MODULE_ITEM":
if(is_array($val))
{
$arSqlSearch2 = array();
foreach($val as $value)
{
$arSqlSearchTmp = array();
foreach($value as $item2 => $value2)
{
if (in_array($item2, $arFields))
$arSqlSearchTmp[] = "L.".$item2." = '".$DB->ForSQL($value2)."'";
}
if(!empty($arSqlSearchTmp))
$arSqlSearch2[] = implode(" AND ", $arSqlSearchTmp);
}
if(!empty($arSqlSearch2))
$arSqlSearch[] = "(".implode(" OR ", $arSqlSearch2).")";
}
break;
case "SEVERITY":
case "AUDIT_TYPE_ID":
case "MODULE_ID":
case "ITEM_ID":
case "SITE_ID":
case "REMOTE_ADDR":
case "USER_AGENT":
case "REQUEST_URI":
$arSqlSearch[] = GetFilterQuery("L.".$key, $val);
break;
case "USER_ID":
case "GUEST_ID":
$arSqlSearch[] = "L.".$key." = ".intval($val)."";
break;
}
}
foreach($arOrder as $by => $order)
{
$by = mb_strtoupper($by);
$order = mb_strtoupper($order);
if (array_key_exists($by, $arOFields))
{
if ($order != "ASC")
{
$order = "DESC";
}
$arSqlOrder[$by] = $arOFields[$by]." ".$order;
}
}
$strSql = "
FROM
b_event_log L
";
if(!empty($arSqlSearch))
$strSql .= " WHERE ".implode(" AND ", $arSqlSearch);
if(is_array($arNavParams))
{
$res_cnt = $DB->Query("SELECT count(1) C".$strSql);
$res_cnt = $res_cnt->Fetch();
$cnt = $res_cnt["C"];
if(!empty($arSqlOrder))
$strSql .= " ORDER BY ".implode(", ", $arSqlOrder);
$res = new CDBResult();
$res->NavQuery("
SELECT
ID
,".$DB->DateToCharFunction("L.TIMESTAMP_X")." as TIMESTAMP_X
,SEVERITY
,AUDIT_TYPE_ID
,MODULE_ID
,ITEM_ID
,REMOTE_ADDR
,USER_AGENT
,REQUEST_URI
,SITE_ID
,USER_ID
,GUEST_ID
,DESCRIPTION
".$strSql, $cnt, $arNavParams);
return $res;
}
else
{
if(!empty($arSqlOrder))
$strSql .= " ORDER BY ".implode(", ", $arSqlOrder);
return $DB->Query("SELECT L.*, ".$DB->DateToCharFunction("L.TIMESTAMP_X")." as TIMESTAMP_X".$strSql, false, $err_mess.__LINE__);
}
}