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