/** * Return array with events list and users * * @param int $iblockId Info-block ID * @param int $elementId Info-block element ID * @param int $limit Limit returned rows * @return array (EVENTS => array(), USERS => array()) */ public static function getEventsLog($iblockId, $elementId, $limit = 0) { $arEvents = array(); $arUsersId = array(); $arUsers = array(); $limit = intval($limit); if ($limit > 0) { $rsEventsNav = array('nTopCount' => $limit); } else { $rsEventsNav = false; } $rsEvents = \CEventLog::GetList(array('ID' => 'DESC'), array('MODULE_ID' => 'iblock', 'ITEM_ID' => $iblockId), $rsEventsNav); while ($arEvent = $rsEvents->Fetch()) { $arEventDesc = unserialize($arEvent['DESCRIPTION']); if ($arEventDesc['ID'] === $elementId) { $arEvents[] = array_merge($arEvent, array('DESCRIPTION' => $arEventDesc)); $arUsersId[] = $arEventDesc['USER_ID']; } } if (!empty($arUsersId)) { $rsUsers = \CUser::GetList($by = 'id', $order = 'asc', array('ID' => $arUsersId), array('FIELDS' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME'))); while ($arUser = $rsUsers->Fetch()) { $arUsers[$arUser['ID']] = $arUser; } } return array('EVENTS' => $arEvents, 'USERS' => $arUsers); }
if ($arFilter["MODULE_ITEM"] != "") { $arEventFilter["=MODULE_ITEM"] = $arFilter["MODULE_ITEM"]; } if ($arParams["LOG_DATE_FROM"] != "") { $arEventFilter["TIMESTAMP_X_1"] = $arParams["LOG_DATE_FROM"] . " 00.00.00"; } if ($arParams["LOG_DATE_TO"] != "") { $arEventFilter["TIMESTAMP_X_2"] = $arParams["LOG_DATE_TO"] . " 23.59.59"; } $arEventFilter["USER_ID"] = $find != '' && $find_type == "user_id" ? $find : $find_user_id; $nameFormat = CSite::GetNameFormat(false); $dateFormat = CSite::GetDateFormat('SHORT'); $timeFormat = CSite::GetTimeFormat(); $arUsersTmp = array(); $arNavParams = array("nPageSize" => $arParams["PAGE_NUM"], "bShowAll" => false); $results = CEventLog::GetList(array('TIMESTAMP_X' => 'DESC'), $arEventFilter, $arNavParams); $results->NavStart($arNavParams); //page navigation $arResult["NAV"] = $results; while ($row = $results->NavNext()) { if (!isset($arUsersTmp[$row['USER_ID']])) { $arUserInfo = array(); $rsUser = CUser::GetList($by = "", $ord = "", array("ID_EQUAL_EXACT" => intval($row['USER_ID'])), array("FIELDS" => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'EMAIL', 'PERSONAL_PHOTO'))); if ($arUser = $rsUser->GetNext()) { $arUserInfo["ID"] = $row['USER_ID']; $arUserInfo["FULL_NAME"] = CUser::FormatName($nameFormat, $arUser, true, false); $arUserInfo['avatar'] = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array("width" => 30, "height" => 30), BX_RESIZE_IMAGE_EXACT, false); $arUsersTmp[$row['USER_ID']] = $arUserInfo; } } else { $arUserInfo = $arUsersTmp[$row['USER_ID']];
} else { $audit_type_id_op = ""; $audit_type_id_filter = $find_audit_type; } if (!is_array($audit_type_id_filter) && strlen($find_audit_type_id)) { $audit_type_id_op = ""; $audit_type_id_filter = "(" . $audit_type_id_filter . ")|(" . $find_audit_type_id . ")"; } $arFilter = array("TIMESTAMP_X_1" => $find_timestamp_x_1, "TIMESTAMP_X_2" => $find_timestamp_x_2, "SEVERITY" => is_array($find_severity) && count($find_severity) > 0 ? implode("|", $find_severity) : "", $audit_type_id_op . "AUDIT_TYPE_ID" => $audit_type_id_filter, "MODULE_ID" => $find_module_id, "ITEM_ID" => $find_item_id, "SITE_ID" => $find_site_id, "USER_ID" => $find != '' && $find_type == "user_id" ? $find : $find_user_id, "GUEST_ID" => $find_guest_id, "REMOTE_ADDR" => $find != '' && $find_type == "remote_addr" ? $find : $find_remote_addr, "REQUEST_URI" => $find_request_uri, "USER_AGENT" => $find != '' && $find_type == "user_agent" ? $find : $find_user_agent); } if (isset($_REQUEST["mode"]) && $_REQUEST["mode"] == "excel") { $arNavParams = false; } else { $arNavParams = array("nPageSize" => CAdminResult::GetNavSize($sTableID)); } $rsData = CEventLog::GetList(array($_REQUEST["by"] => $_REQUEST["order"]), $arFilter, $arNavParams); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("MAIN_EVENTLOG_LIST_PAGE"))); $arHeaders = array(array("id" => "ID", "content" => GetMessage("MAIN_EVENTLOG_ID"), "sort" => "ID", "default" => true, "align" => "right"), array("id" => "TIMESTAMP_X", "content" => GetMessage("MAIN_EVENTLOG_TIMESTAMP_X"), "sort" => "TIMESTAMP_X", "default" => true, "align" => "right"), array("id" => "SEVERITY", "content" => GetMessage("MAIN_EVENTLOG_SEVERITY")), array("id" => "AUDIT_TYPE_ID", "content" => GetMessage("MAIN_EVENTLOG_AUDIT_TYPE_ID"), "default" => true), array("id" => "MODULE_ID", "content" => GetMessage("MAIN_EVENTLOG_MODULE_ID")), array("id" => "ITEM_ID", "content" => GetMessage("MAIN_EVENTLOG_ITEM_ID"), "default" => true), array("id" => "REMOTE_ADDR", "content" => GetMessage("MAIN_EVENTLOG_REMOTE_ADDR"), "default" => true), array("id" => "USER_AGENT", "content" => GetMessage("MAIN_EVENTLOG_USER_AGENT")), array("id" => "REQUEST_URI", "content" => GetMessage("MAIN_EVENTLOG_REQUEST_URI"), "default" => true), array("id" => "SITE_ID", "content" => GetMessage("MAIN_EVENTLOG_SITE_ID")), array("id" => "USER_ID", "content" => GetMessage("MAIN_EVENTLOG_USER_ID"), "default" => true), array("id" => "DESCRIPTION", "content" => GetMessage("MAIN_EVENTLOG_DESCRIPTION"), "default" => true)); if ($bStatistic) { $arHeaders[] = array("id" => "GUEST_ID", "content" => GetMessage("MAIN_EVENTLOG_GUEST_ID")); } $lAdmin->AddHeaders($arHeaders); $arUsersCache = array(); $arGroupsCache = array(); $arForumCache = array("FORUM" => array(), "TOPIC" => array(), "MESSAGE" => array()); $a_ID = $a_AUDIT_TYPE_ID = $a_GUEST_ID = $a_USER_ID = $a_ITEM_ID = $a_REQUEST_URI = $a_DESCRIPTION = $a_REMOTE_ADDR = ''; while ($db_res = $rsData->NavNext(true, "a_")) { $row =& $lAdmin->AddRow($a_ID, $db_res); $row->AddViewField("AUDIT_TYPE_ID", array_key_exists($a_AUDIT_TYPE_ID, $arAuditTypes) ? preg_replace("/^\\[.*?\\]\\s+/", "", $arAuditTypes[$a_AUDIT_TYPE_ID]) : $a_AUDIT_TYPE_ID);
$data['very_high']['ITEMS'][] = array("IS_OK" => $bSecurityAV, "KPI_NAME" => GetMessage("SEC_PANEL_ANTIVIRUS_NAME"), "KPI_VALUE" => $bSecurityAV ? GetMessage("SEC_PANEL_ANTIVIRUS_VALUE_ON") : GetMessage("SEC_PANEL_ANTIVIRUS_VALUE_OFF"), "KPI_RECOMMENDATION" => $bSecurityAV ? ' ' : ($USER->CanDoOperation('security_antivirus_settings_write') ? '<a href="security_antivirus.php?lang=' . LANGUAGE_ID . '&return_url=' . urlencode('security_panel.php?lang=' . LANGUAGE_ID) . '">' . GetMessage("SEC_PANEL_ANTIVIRUS_RECOMMENDATION") . '</a>' : GetMessage("SEC_PANEL_ANTIVIRUS_RECOMMENDATION"))); $strSecurityAVAction = COption::GetOptionString("security", "antivirus_action"); $data['very_high']['ITEMS'][] = array("IS_OK" => $strSecurityAVAction !== "notify_only", "KPI_NAME" => GetMessage("SEC_PANEL_AV_ACTION_NAME"), "KPI_VALUE" => $strSecurityAVAction === "notify_only" ? GetMessage("SEC_PANEL_AV_ACTION_VALUE_NOTIFY") : GetMessage("SEC_PANEL_AV_ACTION_VALUE_ACT"), "KPI_RECOMMENDATION" => $strSecurityAVAction !== "notify_only" ? ' ' : ($USER->CanDoOperation('security_antivirus_settings_write') ? '<a href="security_antivirus.php?lang=' . LANGUAGE_ID . '&return_url=' . urlencode('security_panel.php?lang=' . LANGUAGE_ID) . '&tabControl_active_tab=params">' . GetMessage("SEC_PANEL_AV_ACTION_RECOMMENDATION") . '</a>' : GetMessage("SEC_PANEL_AV_ACTION_RECOMMENDATION"))); $rsSecurityWhiteList = CSecurityAntiVirus::GetWhiteList(); if ($rsSecurityWhiteList->Fetch()) { $bSecurityWhiteList = true; } else { $bSecurityWhiteList = false; } $data['very_high']['ITEMS'][] = array("IS_OK" => !$bSecurityWhiteList, "KPI_NAME" => GetMessage("SEC_PANEL_AV_WHITE_LIST_NAME"), "KPI_VALUE" => $bSecurityWhiteList ? GetMessage("SEC_PANEL_AV_WHITE_LIST_VALUE_ON") : GetMessage("SEC_PANEL_AV_WHITE_LIST_VALUE_OFF"), "KPI_RECOMMENDATION" => !$bSecurityWhiteList ? ' ' : ($USER->CanDoOperation('security_antivirus_settings_write') ? '<a href="security_antivirus.php?lang=' . LANGUAGE_ID . '&return_url=' . urlencode('security_panel.php?lang=' . LANGUAGE_ID) . '&tabControl_active_tab=exceptions">' . GetMessage("SEC_PANEL_AV_WHITE_LIST_RECOMMENDATION") . '</a>' : GetMessage("SEC_PANEL_AV_WHITE_LIST_RECOMMENDATION"))); $days = COption::GetOptionInt("main", "event_log_cleanup_days", 7); if ($days > 7) { $days = 7; } $cntLog = 0; $rsLog = CEventLog::GetList(array(), array("TIMESTAMP_X_1" => ConvertTimeStamp(time() - $days * 24 * 3600 + CTimeZone::GetOffset(), "FULL"), "AUDIT_TYPE_ID" => "SECURITY_VIRUS")); while ($rsLog->Fetch()) { $cntLog++; } $data['very_high']['ITEMS'][] = array("IS_OK" => true, "KPI_NAME" => GetMessage("SEC_PANEL_VIRUS_LOG_NAME", array("#DAYS#" => $days)), "KPI_VALUE" => $cntLog, "KPI_RECOMMENDATION" => $cntLog ? $USER->CanDoOperation('view_event_log') ? '<a href="event_log.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_type=audit_type_id&find_audit_type[]=SECURITY_VIRUS&mod=security">' . GetMessage("SEC_PANEL_VIRUS_LOG_RECOMMENDATION") . '</a>' : GetMessage("SEC_PANEL_VIRUS_LOG_RECOMMENDATION") : ' '); function CheckLevel($arItems) { $result = true; foreach ($arItems as $item) { if (!$item["IS_OK"]) { $result = false; break; } } return $result; }
$audit_type_id_filter = $find_audit_type; } if (!is_array($audit_type_id_filter) && strlen($find_audit_type_id)) { $audit_type_id_op = ""; $audit_type_id_filter = "(" . $audit_type_id_filter . ")|(" . $find_audit_type_id . ")"; } $arFilter = array("TIMESTAMP_X_1" => $find_timestamp_x_1, "TIMESTAMP_X_2" => $find_timestamp_x_2, "SEVERITY" => is_array($find_severity) && count($find_severity) > 0 ? implode("|", $find_severity) : "", $audit_type_id_op . "AUDIT_TYPE_ID" => $audit_type_id_filter, "MODULE_ID" => $find_module_id, "ITEM_ID" => $find_item_id, "SITE_ID" => $find_site_id, "USER_ID" => $find != '' && $find_type == "user_id" ? $find : $find_user_id, "GUEST_ID" => $find_guest_id, "REMOTE_ADDR" => $find != '' && $find_type == "remote_addr" ? $find : $find_remote_addr, "REQUEST_URI" => $find_request_uri, "USER_AGENT" => $find != '' && $find_type == "user_agent" ? $find : $find_user_agent); } if (isset($_REQUEST["mode"]) && $_REQUEST["mode"] == "excel") { $arNavParams = false; } else { $arNavParams = array("nPageSize" => CAdminResult::GetNavSize($sTableID)); } /** @global string $by */ /** @global string $order */ $rsData = CEventLog::GetList(array($by => $order), $arFilter, $arNavParams); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("MAIN_EVENTLOG_LIST_PAGE"))); $arHeaders = array(array("id" => "ID", "content" => GetMessage("MAIN_EVENTLOG_ID"), "sort" => "ID", "default" => true, "align" => "right"), array("id" => "TIMESTAMP_X", "content" => GetMessage("MAIN_EVENTLOG_TIMESTAMP_X"), "sort" => "TIMESTAMP_X", "default" => true, "align" => "right"), array("id" => "SEVERITY", "content" => GetMessage("MAIN_EVENTLOG_SEVERITY")), array("id" => "AUDIT_TYPE_ID", "content" => GetMessage("MAIN_EVENTLOG_AUDIT_TYPE_ID"), "default" => true), array("id" => "MODULE_ID", "content" => GetMessage("MAIN_EVENTLOG_MODULE_ID")), array("id" => "ITEM_ID", "content" => GetMessage("MAIN_EVENTLOG_ITEM_ID"), "default" => true), array("id" => "REMOTE_ADDR", "content" => GetMessage("MAIN_EVENTLOG_REMOTE_ADDR"), "default" => true), array("id" => "USER_AGENT", "content" => GetMessage("MAIN_EVENTLOG_USER_AGENT")), array("id" => "REQUEST_URI", "content" => GetMessage("MAIN_EVENTLOG_REQUEST_URI"), "default" => true), array("id" => "SITE_ID", "content" => GetMessage("MAIN_EVENTLOG_SITE_ID")), array("id" => "USER_ID", "content" => GetMessage("MAIN_EVENTLOG_USER_ID"), "default" => true), array("id" => "DESCRIPTION", "content" => GetMessage("MAIN_EVENTLOG_DESCRIPTION"), "default" => true)); if ($bStatistic) { $arHeaders[] = array("id" => "GUEST_ID", "content" => GetMessage("MAIN_EVENTLOG_GUEST_ID")); } $lAdmin->AddHeaders($arHeaders); $arUsersCache = array(); $arGroupsCache = array(); $arForumCache = array("FORUM" => array(), "TOPIC" => array(), "MESSAGE" => array()); $a_ID = $a_AUDIT_TYPE_ID = $a_GUEST_ID = $a_USER_ID = $a_ITEM_ID = $a_REQUEST_URI = $a_DESCRIPTION = $a_REMOTE_ADDR = ''; while ($db_res = $rsData->NavNext(true, "a_")) { $row =& $lAdmin->AddRow($a_ID, $db_res); $row->AddViewField("AUDIT_TYPE_ID", array_key_exists($a_AUDIT_TYPE_ID, $arAuditTypes) ? preg_replace("/^\\[.*?\\]\\s+/", "", $arAuditTypes[$a_AUDIT_TYPE_ID]) : $a_AUDIT_TYPE_ID);