1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
event_log.php
См. документацию.
1<?php
2
9
10use Psr\Log\LogLevel;
11use Psr\Log\NullLogger;
12use Psr\Log\LoggerInterface;
17
18IncludeModuleLangFile(__FILE__);
19
21{
22 public const SEVERITY_SECURITY = 'SECURITY';
23 public const SEVERITY_EMERGENCY = 'EMERGENCY';
24 public const SEVERITY_ALERT = 'ALERT';
25 public const SEVERITY_CRITICAL = 'CRITICAL';
26 public const SEVERITY_ERROR = 'ERROR';
27 public const SEVERITY_WARNING = 'WARNING';
28 public const SEVERITY_NOTICE = 'NOTICE';
29 public const SEVERITY_INFO = 'INFO';
30 public const SEVERITY_DEBUG = 'DEBUG';
31
32 public static function Log($SEVERITY, $AUDIT_TYPE_ID, $MODULE_ID, $ITEM_ID, $DESCRIPTION = false, $SITE_ID = false)
33 {
34 return CEventLog::Add([
35 "SEVERITY" => $SEVERITY,
36 "AUDIT_TYPE_ID" => $AUDIT_TYPE_ID,
37 "MODULE_ID" => $MODULE_ID,
38 "ITEM_ID" => $ITEM_ID,
39 "DESCRIPTION" => $DESCRIPTION,
40 "SITE_ID" => $SITE_ID,
41 ]);
42 }
43
44 public static function Add($arFields)
45 {
46 global $USER, $DB;
47
48 static $arSeverity = [
49 self::SEVERITY_SECURITY => LogLevel::INFO,
50 self::SEVERITY_EMERGENCY => LogLevel::EMERGENCY,
51 self::SEVERITY_ALERT => LogLevel::ALERT,
52 self::SEVERITY_CRITICAL => LogLevel::CRITICAL,
53 self::SEVERITY_ERROR => LogLevel::ERROR,
54 self::SEVERITY_WARNING => LogLevel::WARNING,
55 self::SEVERITY_NOTICE => LogLevel::NOTICE,
56 self::SEVERITY_INFO => LogLevel::INFO,
57 self::SEVERITY_DEBUG => LogLevel::DEBUG,
58 ];
59
60 $url = preg_replace("/(&?sessid=[0-9a-z]+)/", "", $_SERVER["REQUEST_URI"]);
61
62 $SITE_ID = (defined("ADMIN_SECTION") && ADMIN_SECTION == true) || !defined('SITE_ID')
63 ? false
64 : SITE_ID;
65
66 $session = \Bitrix\Main\Application::getInstance()->isInitialized()
68 : null;
69
70 if ($arFields["DESCRIPTION"] !== false && !is_string($arFields["DESCRIPTION"]))
71 {
72 $arFields["DESCRIPTION"] = json_encode($arFields["DESCRIPTION"], JSON_UNESCAPED_UNICODE);
73 }
74
75 $arFields = [
76 "SEVERITY" => isset($arSeverity[$arFields["SEVERITY"] ?? null]) ? $arFields["SEVERITY"] : "UNKNOWN",
77 "AUDIT_TYPE_ID" => $arFields["AUDIT_TYPE_ID"] == '' ? "UNKNOWN" : $arFields["AUDIT_TYPE_ID"],
78 "MODULE_ID" => $arFields["MODULE_ID"] == '' ? "UNKNOWN" : $arFields["MODULE_ID"],
79 "ITEM_ID" => empty($arFields["ITEM_ID"]) ? "UNKNOWN" : $arFields["ITEM_ID"],
80 "REMOTE_ADDR" => $_SERVER["REMOTE_ADDR"],
81 "USER_AGENT" => $_SERVER["HTTP_USER_AGENT"] ?? false,
82 "REQUEST_URI" => $url,
83 "SITE_ID" => empty($arFields["SITE_ID"]) ? $SITE_ID : $arFields["SITE_ID"],
84 "USER_ID" => is_object($USER) && ($USER->GetID() > 0) ? $USER->GetID() : false,
85 "GUEST_ID" => (isset($session) && $session->isStarted() && $session->has("SESS_GUEST_ID") && $session["SESS_GUEST_ID"] > 0 ? $session["SESS_GUEST_ID"] : false),
86 "DESCRIPTION" => $arFields["DESCRIPTION"],
87 "~TIMESTAMP_X" => $DB->GetNowFunction(),
88 ];
89
90 $level = $arSeverity[$arFields["SEVERITY"]] ?? LogLevel::INFO;
91 static::writeLogs($level, $arFields);
92
93 return $DB->Add("b_event_log", $arFields, ["DESCRIPTION"], "", false, "", ["ignore_dml" => true]);
94 }
95
96 protected static function writeLogs(string $level, array $fields)
97 {
98 $sysLogger = static::getSysLogger();
99 $fileLogger = static::getFileLogger();
100
101 if ($sysLogger || $fileLogger)
102 {
103 $logFields = [
104 "severity" => $fields["SEVERITY"],
105 "auditTypeId" => $fields["AUDIT_TYPE_ID"],
106 "moduleId" => $fields["MODULE_ID"],
107 "itemId" => $fields["ITEM_ID"],
108 "remoteAddr" => $fields["REMOTE_ADDR"],
109 "userAgent" => $fields["USER_AGENT"] !== false ? $fields["USER_AGENT"] : null,
110 "requestUri" => $fields["REQUEST_URI"],
111 "siteId" => $fields["SITE_ID"] !== false ? $fields["SITE_ID"] : null,
112 "userId" => $fields["USER_ID"] !== false ? $fields["USER_ID"] : null,
113 "guestId" => $fields["GUEST_ID"] !== false ? $fields["GUEST_ID"] : null,
114 "description" => $fields["DESCRIPTION"],
115 "timestamp" => date('Y-m-d H:i:s'),
116 "host" => $_SERVER['HTTP_HOST'] ?? null,
117 ];
118
119 $sysLogger?->log($level, '', $logFields);
120 $fileLogger?->log($level, '', $logFields);
121 }
122 }
123
124 protected static function getSysLogger(): ?LoggerInterface
125 {
126 static $logger = null;
127
128 if ($logger === null)
129 {
130 if (COption::GetOptionString('main', 'event_log_syslog') === 'Y')
131 {
132 $logger = Logger::create('main.EventLog.SysLogger');
133 if ($logger === null)
134 {
135 $logger = new SysLogger();
136 $formatter = new JsonLinesFormatter(false);
137 $logger->setFormatter($formatter);
138 }
139 }
140 else
141 {
142 $logger = new NullLogger();
143 }
144 }
145
146 return ($logger instanceof NullLogger ? null : $logger);
147 }
148
149 protected static function getFileLogger(): ?LoggerInterface
150 {
151 static $logger = null;
152
153 if ($logger === null)
154 {
155 if (COption::GetOptionString('main', 'event_log_filelog') === 'Y')
156 {
157 $path = COption::GetOptionString('main', 'event_log_filelog_path');
158 if (!empty($path))
159 {
160 $logger = Logger::create('main.EventLog.FileLogger', [$path, 0]);
161 if ($logger === null)
162 {
163 $logger = new FileLogger($path, 0);
164 $formatter = new JsonLinesFormatter();
165 $logger->setFormatter($formatter);
166 }
167 }
168 }
169 if ($logger === null)
170 {
171 $logger = new NullLogger();
172 }
173 }
174
175 return ($logger instanceof NullLogger ? null : $logger);
176 }
177
178 //Agent
179 public static function CleanUpAgent()
180 {
181 global $DB;
182
183 $cleanup_days = COption::GetOptionInt("main", "event_log_cleanup_days", 7);
184 if ($cleanup_days > 0)
185 {
186 $arDate = localtime(time());
187 $date = mktime(0, 0, 0, $arDate[4] + 1, $arDate[3] - $cleanup_days, 1900 + $arDate[5]);
188 $DB->Query("DELETE FROM b_event_log WHERE TIMESTAMP_X <= " . $DB->CharToDateFunction(ConvertTimeStamp($date, "FULL")));
189 }
190
191 return "CEventLog::CleanUpAgent();";
192 }
193
194 public static function GetList($arOrder = ["ID" => "DESC"], $arFilter = [], $arNavParams = false)
195 {
196 global $DB;
197
198 $arSqlSearch = [];
199 $arSqlOrder = [];
200
201 $arFields = ["ID", "TIMESTAMP_X", "AUDIT_TYPE_ID", "MODULE_ID", "SEVERITY", "ITEM_ID", "SITE_ID", "REMOTE_ADDR", "USER_AGENT", "REQUEST_URI", "USER_ID", "GUEST_ID"];
202 $arOFields = [
203 "ID" => "L.ID",
204 "TIMESTAMP_X" => "L.TIMESTAMP_X",
205 ];
206
207 foreach ($arFilter as $key => $val)
208 {
209 if (is_array($val))
210 {
211 if (empty($val))
212 {
213 continue;
214 }
215 }
216 elseif ((string)$val == '')
217 {
218 continue;
219 }
220 $key = mb_strtoupper($key);
221 switch ($key)
222 {
223 case "ID":
224 $arSqlSearch[] = "L.ID=" . intval($val);
225 break;
226 case "TIMESTAMP_X_1":
227 $arSqlSearch[] = "L.TIMESTAMP_X >= " . $DB->CharToDateFunction($DB->ForSql($val));
228 break;
229 case "TIMESTAMP_X_2":
230 $arSqlSearch[] = "L.TIMESTAMP_X <= " . $DB->CharToDateFunction($DB->ForSql($val));
231 break;
232 case "=AUDIT_TYPE_ID":
233 $arValues = [];
234 if (is_array($val))
235 {
236 foreach ($val as $value)
237 {
238 $value = trim($value);
239 if ($value <> '')
240 {
241 $arValues[$value] = $DB->ForSQL($value);
242 }
243 }
244 }
245 elseif (is_string($val))
246 {
247 $value = trim($val);
248 if ($value <> '')
249 {
250 $arValues[$value] = $DB->ForSQL($value);
251 }
252 }
253 if (!empty($arValues))
254 {
255 $arSqlSearch[] = "L.AUDIT_TYPE_ID in ('" . implode("', '", $arValues) . "')";
256 }
257 break;
258 case "=MODULE_ITEM":
259 if (is_array($val))
260 {
261 $arSqlSearch2 = [];
262 foreach ($val as $value)
263 {
264 $arSqlSearchTmp = [];
265 foreach ($value as $item2 => $value2)
266 {
267 if (in_array($item2, $arFields))
268 {
269 $arSqlSearchTmp[] = "L." . $item2 . " = '" . $DB->ForSQL($value2) . "'";
270 }
271 }
272 if (!empty($arSqlSearchTmp))
273 {
274 $arSqlSearch2[] = implode(" AND ", $arSqlSearchTmp);
275 }
276 }
277 if (!empty($arSqlSearch2))
278 {
279 $arSqlSearch[] = "(" . implode(" OR ", $arSqlSearch2) . ")";
280 }
281 }
282 break;
283 case "SEVERITY":
284 case "AUDIT_TYPE_ID":
285 case "MODULE_ID":
286 case "ITEM_ID":
287 case "SITE_ID":
288 case "REMOTE_ADDR":
289 case "USER_AGENT":
290 case "REQUEST_URI":
291 $arSqlSearch[] = GetFilterQuery("L." . $key, $val);
292 break;
293 case "USER_ID":
294 case "GUEST_ID":
295 $arSqlSearch[] = "L." . $key . " = " . intval($val);
296 break;
297 }
298 }
299
300 foreach ($arOrder as $by => $order)
301 {
302 $by = mb_strtoupper($by);
303 $order = mb_strtoupper($order);
304 if (array_key_exists($by, $arOFields))
305 {
306 if ($order != "ASC")
307 {
308 $order = "DESC";
309 }
310 $arSqlOrder[$by] = $arOFields[$by] . " " . $order;
311 }
312 }
313
314 $strSql = "
315 FROM
316 b_event_log L
317 ";
318
319 if (!empty($arSqlSearch))
320 {
321 $strSql .= " WHERE " . implode(" AND ", $arSqlSearch);
322 }
323
324 if (is_array($arNavParams))
325 {
326 $res_cnt = $DB->Query("SELECT count(1) C" . $strSql);
327 $res_cnt = $res_cnt->Fetch();
328 $cnt = $res_cnt["C"];
329
330 if (!empty($arSqlOrder))
331 {
332 $strSql .= " ORDER BY " . implode(", ", $arSqlOrder);
333 }
334
335 $res = new CDBResult();
336 $res->NavQuery("
337 SELECT
338 ID
339 ," . $DB->DateToCharFunction("L.TIMESTAMP_X") . " as TIMESTAMP_X
340 ,SEVERITY
341 ,AUDIT_TYPE_ID
342 ,MODULE_ID
343 ,ITEM_ID
344 ,REMOTE_ADDR
345 ,USER_AGENT
346 ,REQUEST_URI
347 ,SITE_ID
348 ,USER_ID
349 ,GUEST_ID
350 ,DESCRIPTION
351 " . $strSql, $cnt, $arNavParams);
352
353 return $res;
354 }
355 else
356 {
357 if (!empty($arSqlOrder))
358 {
359 $strSql .= " ORDER BY " . implode(", ", $arSqlOrder);
360 }
361
362 return $DB->Query("SELECT L.*, " . $DB->DateToCharFunction("L.TIMESTAMP_X") . " as TIMESTAMP_X" . $strSql);
363 }
364 }
365
366 public static function GetEventTypes()
367 {
368 $arAuditTypes = [
369 "USER_AUTHORIZE" => "[USER_AUTHORIZE] " . GetMessage("MAIN_EVENTLOG_USER_AUTHORIZE"),
370 "USER_DELETE" => "[USER_DELETE] " . GetMessage("MAIN_EVENTLOG_USER_DELETE"),
371 "USER_INFO" => "[USER_INFO] " . GetMessage("MAIN_EVENTLOG_USER_INFO"),
372 "USER_LOGIN" => "[USER_LOGIN] " . GetMessage("MAIN_EVENTLOG_USER_LOGIN"),
373 "USER_LOGIN_INCORRECT_CAPTCHA" => "[USER_LOGIN_INCORRECT_CAPTCHA] " . GetMessage("MAIN_EVENTLOG_USER_LOGIN_INCORRECT_CAPTCHA"),
374 "USER_LOGIN_BLOCKED" => "[USER_LOGIN_BLOCKED] " . GetMessage("MAIN_EVENTLOG_USER_LOGIN_BLOCKED"),
375 "USER_LOGIN_NOT_FOUND" => "[USER_LOGIN_NOT_FOUND] " . GetMessage("MAIN_EVENTLOG_USER_LOGIN_NOT_FOUND"),
376 "USER_LOGINBYHASH" => "[USER_LOGINBYHASH] " . GetMessage("MAIN_EVENTLOG_USER_LOGINBYHASH_FAILED"),
377 "USER_LOGOUT" => "[USER_LOGOUT] " . GetMessage("MAIN_EVENTLOG_USER_LOGOUT"),
378 "USER_PASSWORD_CHANGED" => "[USER_PASSWORD_CHANGED] " . GetMessage("MAIN_EVENTLOG_USER_PASSWORD_CHANGED"),
379 "USER_BLOCKED" => "[USER_BLOCKED] " . GetMessage("MAIN_EVENTLOG_USER_BLOCKED"),
380 "USER_PERMISSIONS_FAIL" => "[USER_PERMISSIONS_FAIL] " . GetMessage("MAIN_EVENTLOG_USER_PERMISSIONS_FAIL"),
381 "USER_REGISTER" => "[USER_REGISTER] " . GetMessage("MAIN_EVENTLOG_USER_REGISTER"),
382 "USER_REGISTER_FAIL" => "[USER_REGISTER_FAIL] " . GetMessage("MAIN_EVENTLOG_USER_REGISTER_FAIL"),
383 "USER_GROUP_CHANGED" => "[USER_GROUP_CHANGED] " . GetMessage("MAIN_EVENTLOG_GROUP"),
384 "GROUP_ADDED" => "[GROUP_ADDED] " . GetMessage('MAIN_EVENTLOG_GROUP_ADDED'),
385 "GROUP_UPDATED" => "[GROUP_UPDATED] " . GetMessage('MAIN_EVENTLOG_GROUP_UPDATED'),
386 "GROUP_DELETED" => "[GROUP_DELETED] " . GetMessage('MAIN_EVENTLOG_GROUP_DELETED'),
387 "GROUP_POLICY_CHANGED" => "[GROUP_POLICY_CHANGED] " . GetMessage("MAIN_EVENTLOG_GROUP_POLICY"),
388 "MODULE_RIGHTS_CHANGED" => "[MODULE_RIGHTS_CHANGED] " . GetMessage("MAIN_EVENTLOG_MODULE"),
389 "FILE_PERMISSION_CHANGED" => "[FILE_PERMISSION_CHANGED] " . GetMessage("MAIN_EVENTLOG_FILE"),
390 "TASK_CHANGED" => "[TASK_CHANGED] " . GetMessage("MAIN_EVENTLOG_TASK"),
391 "MP_MODULE_INSTALLED" => "[MP_MODULE_INSTALLED] " . GetMessage("MAIN_EVENTLOG_MP_MODULE_INSTALLED"),
392 "MP_MODULE_UNINSTALLED" => "[MP_MODULE_UNINSTALLED] " . GetMessage("MAIN_EVENTLOG_MP_MODULE_UNINSTALLED"),
393 "MP_MODULE_DELETED" => "[MP_MODULE_DELETED] " . GetMessage("MAIN_EVENTLOG_MP_MODULE_DELETED"),
394 "MP_MODULE_DOWNLOADED" => "[MP_MODULE_DOWNLOADED] " . GetMessage("MAIN_EVENTLOG_MP_MODULE_DOWNLOADED"),
395 ];
396
397 foreach (GetModuleEvents("main", "OnEventLogGetAuditTypes", true) as $arEvent)
398 {
399 $ar = ExecuteModuleEventEx($arEvent);
400 if (is_array($ar))
401 {
402 $arAuditTypes = array_merge($ar, $arAuditTypes);
403 }
404 }
405
406 ksort($arAuditTypes);
407
408 return $arAuditTypes;
409 }
410}
411
413{
414 public static function MakeMainObject()
415 {
416 $obj = new CEventMain;
417 return $obj;
418 }
419
420 public static function GetFilter()
421 {
422 $arFilter = [];
423 if (COption::GetOptionString("main", "event_log_register", "N") === "Y" || COption::GetOptionString("main", "event_log_user_delete", "N") === "Y" || COption::GetOptionString("main", "event_log_user_edit", "N") === "Y" || COption::GetOptionString("main", "event_log_user_groups", "N") === "Y")
424 {
425 $arFilter["USERS"] = GetMessage("LOG_TYPE_USERS");
426 }
427 return $arFilter;
428 }
429
430 public static function GetAuditTypes()
431 {
432 return [
433 "USER_REGISTER" => "[USER_REGISTER] " . GetMessage("LOG_TYPE_NEW_USERS"),
434 "USER_DELETE" => "[USER_DELETE] " . GetMessage("LOG_TYPE_USER_DELETE"),
435 "USER_EDIT" => "[USER_EDIT] " . GetMessage("LOG_TYPE_USER_EDIT"),
436 "USER_GROUP_CHANGED" => "[USER_GROUP_CHANGED] " . GetMessage("LOG_TYPE_USER_GROUP_CHANGED"),
437 "BACKUP_ERROR" => "[BACKUP_ERROR] " . GetMessage("LOG_TYPE_BACKUP_ERROR"),
438 "BACKUP_SUCCESS" => "[BACKUP_SUCCESS] " . GetMessage("LOG_TYPE_BACKUP_SUCCESS"),
439 "SITE_CHECKER_SUCCESS" => "[SITE_CHECKER_SUCCESS] " . GetMessage("LOG_TYPE_SITE_CHECK_SUCCESS"),
440 "SITE_CHECKER_ERROR" => "[SITE_CHECKER_ERROR] " . GetMessage("LOG_TYPE_SITE_CHECK_ERROR"),
441 ];
442 }
443
444 public static function GetEventInfo($row, $arParams)
445 {
446 $DESCRIPTION = unserialize($row["DESCRIPTION"], ['allowed_classes' => false]);
447 $userURL = $EventPrint = "";
448 $rsUser = CUser::GetByID($row['ITEM_ID']);
449 if ($rsUser->GetNext())
450 {
451 $userURL = SITE_DIR . CComponentEngine::MakePathFromTemplate($arParams['USER_PATH'], ["user_id" => $row['ITEM_ID'], "SITE_ID" => ""]);
452 }
453 $EventName = is_array($DESCRIPTION) ? $DESCRIPTION["user"] : null;
454 switch ($row['AUDIT_TYPE_ID'])
455 {
456 case "USER_REGISTER":
457 $EventPrint = GetMessage("LOG_USER_REGISTER");
458 break;
459 case "USER_DELETE":
460 $EventPrint = GetMessage("LOG_USER_DELETE");
461 break;
462 case "USER_EDIT":
463 $EventPrint = GetMessage("LOG_USER_EDIT");
464 break;
465 case "USER_GROUP_CHANGED":
466 $EventPrint = GetMessage("LOG_USER_GROUP_CHANGED");
467 break;
468 }
469
470 return [
471 "eventType" => $EventPrint,
472 "eventName" => $EventName,
473 "eventURL" => $userURL,
474 ];
475 }
476
477 public static function GetFilterSQL()
478 {
479 $ar[] = ["AUDIT_TYPE_ID" => "USER_REGISTER"];
480 $ar[] = ["AUDIT_TYPE_ID" => "USER_DELETE"];
481 $ar[] = ["AUDIT_TYPE_ID" => "USER_EDIT"];
482 $ar[] = ["AUDIT_TYPE_ID" => "USER_GROUP_CHANGED"];
483 return $ar;
484 }
485}
$arParams
Определения access_dialog.php:21
$path
Определения access_edit.php:21
static getInstance()
Определения application.php:98
Определения dbresult.php:88
Определения event_log.php:21
static getSysLogger()
Определения event_log.php:124
const SEVERITY_EMERGENCY
Определения event_log.php:23
const SEVERITY_SECURITY
Определения event_log.php:22
static GetEventTypes()
Определения event_log.php:366
const SEVERITY_ERROR
Определения event_log.php:26
static Add($arFields)
Определения event_log.php:44
const SEVERITY_INFO
Определения event_log.php:29
const SEVERITY_DEBUG
Определения event_log.php:30
const SEVERITY_NOTICE
Определения event_log.php:28
static writeLogs(string $level, array $fields)
Определения event_log.php:96
static CleanUpAgent()
Определения event_log.php:179
const SEVERITY_WARNING
Определения event_log.php:27
static getFileLogger()
Определения event_log.php:149
const SEVERITY_CRITICAL
Определения event_log.php:25
static Log($SEVERITY, $AUDIT_TYPE_ID, $MODULE_ID, $ITEM_ID, $DESCRIPTION=false, $SITE_ID=false)
Определения event_log.php:32
static GetList($arOrder=["ID"=> "DESC"], $arFilter=[], $arNavParams=false)
Определения event_log.php:194
const SEVERITY_ALERT
Определения event_log.php:24
Определения event_log.php:413
static GetAuditTypes()
Определения event_log.php:430
static GetFilter()
Определения event_log.php:420
static GetEventInfo($row, $arParams)
Определения event_log.php:444
static MakeMainObject()
Определения event_log.php:414
static GetFilterSQL()
Определения event_log.php:477
$arValues
Определения component_props.php:25
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
GetFilterQuery($field, $val, $procent="Y", $ex_sep=array(), $clob="N", $div_fields="Y", $clob_upper="N")
Определения filter_tools.php:383
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
const SITE_DIR(!defined('LANG'))
Определения include.php:72
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$DESCRIPTION
Определения menu_edit.php:224
$order
Определения payment.php:8
return false
Определения prolog_main_admin.php:185
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
const ADMIN_SECTION
Определения rss.php:2
$val
Определения options.php:1793
const SITE_ID
Определения sonet_set_content_view.php:12
$arFilter
Определения user_search.php:106
$url
Определения iframe.php:7
$SITE_ID
Определения yandex_run.php:607
$fields
Определения yandex_run.php:501