%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/event_list/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/event_list/component.php |
<?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); /** * Bitrix vars * @global CUser $USER * @global CMain $APPLICATION * @var array $arParams * @var array $arResult * @var CBitrixComponent $this */ if(!$USER->CanDoOperation('view_event_log')) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); /** @var CEventMain[] $arModuleObjects */ $arModuleObjects = array(); $arAllFilter = array(); $currentTemplateName = $this->getTemplateName(); if ($currentTemplateName == "grid") { $arResult["GRID_ID"] = "event_list_grid"; $arResult["ELEMENTS_ROWS"] = array(); $grid = new CGridOptions($arResult["GRID_ID"]); $nav = $grid->GetNavParams(); $arParams["PAGE_NUM"] = $nav["nPageSize"]; } foreach(GetModuleEvents("main", "OnEventLogGetAuditHandlers", true) as $arEvent) { $ModuleEvent = ExecuteModuleEventEx($arEvent); $arModuleObjects[] = $ModuleEvent; $arAllFilter = $arAllFilter + $ModuleEvent->GetFilter(); } if (is_array($arParams["FILTER"])) { foreach($arParams["FILTER"] as $key => $val) { $arResult["ActiveFeatures"][$val] = $arAllFilter[$val]; } } if (is_array($arResult["ActiveFeatures"]) && count($arResult["ActiveFeatures"]) > 0) { $arResult["NO_ACTIVE_FEATURES"] = false; if (!isset($_REQUEST["flt_event_id"])) { $arParams["EVENT_ID"] = CUserOptions::GetOption("main", "~event_list"); $flt_event_id = (empty($arParams["EVENT_ID"])) ? $arParams["FILTER"] : $arParams["EVENT_ID"]; } else { $arResult["flt_event_id"] = $_REQUEST["flt_event_id"]; if (array_key_exists("flt_event_id_all", $_REQUEST) && $_REQUEST["flt_event_id_all"] == "Y") { $arParams["EVENT_ID"] = ""; $flt_event_id = $arParams["FILTER"]; if($USER->IsAuthorized() && check_bitrix_sessid()) CUserOptions::DeleteOption("main", "~event_list"); } else { $flt_event_id = $_REQUEST["flt_event_id"]; // checked events foreach($flt_event_id as $key => $val) $flt_event_id[$key] = htmlspecialcharsbx($val); $arParams["EVENT_ID"] = $flt_event_id; if($USER->IsAuthorized() && check_bitrix_sessid()) CUserOptions::SetOption("main", "~event_list", $arParams["EVENT_ID"]); } } $arObjectTypes = array( "USER_AUTHORIZE" => "[USER_AUTHORIZE] ".GetMessage("MAIN_EVENTLOG_USER_AUTHORIZE"), "USER_DELETE" => "[USER_DELETE] ".GetMessage("MAIN_EVENTLOG_USER_DELETE"), "USER_INFO" => "[USER_INFO] ".GetMessage("MAIN_EVENTLOG_USER_INFO"), "USER_LOGIN" => "[USER_LOGIN] ".GetMessage("MAIN_EVENTLOG_USER_LOGIN"), "USER_LOGINBYHASH" => "[USER_LOGINBYHASH] ".GetMessage("MAIN_EVENTLOG_USER_LOGINBYHASH_FAILED"), "USER_LOGOUT" => "[USER_LOGOUT] ".GetMessage("MAIN_EVENTLOG_USER_LOGOUT"), "USER_PASSWORD_CHANGED" => "[USER_PASSWORD_CHANGED] ".GetMessage("MAIN_EVENTLOG_USER_PASSWORD_CHANGED"), "USER_REGISTER" => "[USER_REGISTER] ".GetMessage("MAIN_EVENTLOG_USER_REGISTER"), "USER_REGISTER_FAIL" => "[USER_REGISTER_FAIL] ".GetMessage("MAIN_EVENTLOG_USER_REGISTER_FAIL"), "USER_GROUP_CHANGED" => "[USER_GROUP_CHANGED] ".GetMessage("MAIN_EVENTLOG_GROUP"), "GROUP_POLICY_CHANGED" => "[GROUP_POLICY_CHANGED] ".GetMessage("MAIN_EVENTLOG_GROUP_POLICY"), "MODULE_RIGHTS_CHANGED" => "[MODULE_RIGHTS_CHANGED] ".GetMessage("MAIN_EVENTLOG_MODULE"), "FILE_PERMISSION_CHANGED" => "[FILE_PERMISSION_CHANGED] ".GetMessage("MAIN_EVENTLOG_FILE"), "TASK_CHANGED" => "[TASK_CHANGED] ".GetMessage("MAIN_EVENTLOG_TASK"), "MP_MODULE_INSTALLED" => "[MP_MODULE_INSTALLED] ".GetMessage("MAIN_EVENTLOG_MP_MODULE_INSTALLED"), "MP_MODULE_UNINSTALLED" => "[MP_MODULE_UNINSTALLED] ".GetMessage("MAIN_EVENTLOG_MP_MODULE_UNINSTALLED"), "MP_MODULE_DELETED" => "[MP_MODULE_DELETED] ".GetMessage("MAIN_EVENTLOG_MP_MODULE_DELETED"), "MP_MODULE_DOWNLOADED" => "[MP_MODULE_DOWNLOADED] ".GetMessage("MAIN_EVENTLOG_MP_MODULE_DOWNLOADED"), ); $arFilter["MODULE_ITEM"] = array(); //filter for GetList if (\Bitrix\Main\ModuleManager::isModuleInstalled("bitrix24")) { $arFilter["MODULE_ITEM"][] = array( "AUDIT_TYPE_ID" => "USER_AUTHORIZE" ); } else { foreach($arModuleObjects as $key => $val) { $arObjectTypes = array_merge($arObjectTypes, $val->GetAuditTypes()); $ar = $val->GetFilter(); $filters = array_keys($ar); $var = array_intersect($filters, $flt_event_id); if ($var) { if(isset($ar["IBLOCK"])) { //iblock has more complex structure because logs are kept for individual blocks $var = $filters; } $arFilter["MODULE_ITEM"] = array_merge($arFilter["MODULE_ITEM"], $val->GetFilterSQL($var)); } } } //USER if (is_array($_REQUEST["flt_created_by_id"])) $_REQUEST["flt_created_by_id"] = $_REQUEST["flt_created_by_id"][0]; $find_user_id = ""; if (intval($_REQUEST["flt_created_by_id"]) > 0) { $find_user_id = $_REQUEST["flt_created_by_id"]; } else { if (CModule::IncludeModule("socialnetwork")) { $arFoundUsers = CSocNetUser::SearchUser($_REQUEST["flt_created_by_id"], false); if (is_array($arFoundUsers) && count($arFoundUsers) > 0) $find_user_id = key($arFoundUsers); } } // for date if ( array_key_exists("flt_date_datesel", $_REQUEST) && strlen($_REQUEST["flt_date_datesel"]) > 0 ) { $_REQUEST["flt_date_datesel"] = htmlspecialcharsbx($_REQUEST["flt_date_datesel"]); switch($_REQUEST["flt_date_datesel"]) { case "today": $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(MakeTimeStamp(date("d.m.Y 00:00:00"), "DD.MM.YYYY HH:MI:SS"), "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(time(), "FULL"); break; case "yesterday": $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(MakeTimeStamp(date("d.m.Y 00:00:00", time() - 86400), "DD.MM.YYYY HH:MI:SS"), "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(MakeTimeStamp(date("d.m.Y 23:59:59", time() - 86400), "DD.MM.YYYY HH:MI:SS"), "FULL"); break; case "week": $day = date("w"); if($day == 0) $day = 7; $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(time()-($day-1)*86400, "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(time()+(7-$day)*86400, "FULL"); break; case "week_ago": $day = date("w"); if($day == 0) $day = 7; $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(time()-($day-1+7)*86400, "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(time()-($day)*86400, "FULL"); break; case "month": $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(mktime(0, 0, 0, date("n"), 1), "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(mktime(0, 0, 0, date("n")+1, 0), "FULL"); break; case "month_ago": $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(mktime(0, 0, 0, date("n")-1, 1), "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(mktime(0, 0, 0, date("n"), 0), "FULL"); break; case "days": $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(time() - intval($_REQUEST["flt_date_days"])*86400, "FULL"); $arParams["LOG_DATE_TO"] = ""; break; case "exact": $day = ConvertDateTime($_REQUEST["flt_date_from"], "DD.MM.YYYY"); $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(MakeTimeStamp($day." 00:00:00", "DD.MM.YYYY HH:MI:SS"), "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(MakeTimeStamp($day." 23:59:59", "DD.MM.YYYY HH:MI:SS"), "FULL"); break; case "after": $arParams["LOG_DATE_FROM"] = $_REQUEST["flt_date_from"]; $arParams["LOG_DATE_TO"] = ""; break; case "before": $arParams["LOG_DATE_FROM"] = ""; $arParams["LOG_DATE_TO"] = $_REQUEST["flt_date_to"]; break; case "interval": $dayFrom = ConvertDateTime($_REQUEST["flt_date_from"], "DD.MM.YYYY"); $dayTo = ConvertDateTime($_REQUEST["flt_date_to"], "DD.MM.YYYY"); $arParams["LOG_DATE_FROM"] = ConvertTimeStamp(MakeTimeStamp($dayFrom." 00:00:00", "DD.MM.YYYY HH:MI:SS"), "FULL"); $arParams["LOG_DATE_TO"] = ConvertTimeStamp(MakeTimeStamp($dayTo." 23:59:59", "DD.MM.YYYY HH:MI:SS"), "FULL"); break; } } elseif (array_key_exists("flt_date_datesel", $_REQUEST)) { $arParams["LOG_DATE_FROM"] = ""; $arParams["LOG_DATE_TO"] = ""; } else { if (array_key_exists("flt_date_from", $_REQUEST)) { $_REQUEST["flt_date_from"] = htmlspecialcharsbx($_REQUEST["flt_date_from"]); $arParams["LOG_DATE_FROM"] = trim($_REQUEST["flt_date_from"]); } if (array_key_exists("flt_date_to", $_REQUEST)) { $_REQUEST["flt_date_to"] = htmlspecialcharsbx($_REQUEST["flt_date_to"]); $arParams["LOG_DATE_TO"] = trim($_REQUEST["flt_date_to"]); } } //=============End date if ( array_key_exists("flt_ip", $_REQUEST) && strlen($_REQUEST["flt_ip"]) > 0 ) { $ip = htmlspecialcharsbx($_REQUEST["flt_ip"]); $arParams["IP"] = trim($ip); } function CheckFilter() { if(strlen($_REQUEST["flt_date_from"])>0) { if(!CheckDateTime($_REQUEST["flt_date_from"], CSite::GetDateFormat("FULL"))) return false; } if(strlen($_REQUEST["flt_date_to"])>0) { if(!CheckDateTime($_REQUEST["flt_date_to"], CSite::GetDateFormat("FULL"))) return false; } return true; } if(CheckFilter()) { if ($arFilter["MODULE_ITEM"] != "") $arEventFilter["=MODULE_ITEM"] = $arFilter["MODULE_ITEM"]; if ($arParams["LOG_DATE_FROM"] != "") $arEventFilter["TIMESTAMP_X_1"] = $arParams["LOG_DATE_FROM"]; if ($arParams["LOG_DATE_TO"] != "") $arEventFilter["TIMESTAMP_X_2"] = $arParams["LOG_DATE_TO"]; if ($arParams["IP"] != "") $arEventFilter["REMOTE_ADDR"] = $arParams["IP"]; $arEventFilter["USER_ID"] = ($find != '' && $find_type == "user_id" ? $find : $find_user_id); $nameFormat = CSite::GetNameFormat(false); $arUsersTmp = array(); $arNavParams = array("nPageSize"=>$arParams["PAGE_NUM"], "bShowAll"=>false); $arSort = array('TIMESTAMP_X' => 'DESC'); if ($currentTemplateName == "grid") { $arSort = $grid->GetSorting(array('sort' => array('TIMESTAMP_X' => 'DESC'))); $arSort = $arSort['sort']; } $arResult['SORT'] = $arSort; $results = CEventLog::GetList($arResult['SORT'], $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', 'EXTERNAL_AUTH_ID')) ); if($arUser = $rsUser->GetNext()) { if (in_array($arUser["EXTERNAL_AUTH_ID"], array("bot", "email", "controller", "replica", "imconnector"))) { continue; } $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']]; } $dateFormated = FormatDateFromDB($row["TIMESTAMP_X"], CSite::GetDateFormat('SHORT')); $time = FormatDateFromDB($row["TIMESTAMP_X"], CSite::GetTimeFormat()); foreach($arModuleObjects as $key => $val) { if (isset($arObjectTypes[$row['AUDIT_TYPE_ID']])) { $res = $val->GetEventInfo($row, $arParams, $arUserInfo, $arResult["ActiveFeatures"]); $eventName = preg_replace("/^\\[.*?\\]\\s+/", "", $arObjectTypes[$row['AUDIT_TYPE_ID']]); if (in_array($row['AUDIT_TYPE_ID'], array("PAGE_EDIT", "PAGE_ADD", "PAGE_DELETE"))) { $path = unserialize($row["DESCRIPTION"]); $path = $path["path"]; if ($path) { $eventName.= ": ".$path; } } //for grid template if ($currentTemplateName == "grid") { $userPath = CComponentEngine::MakePathFromTemplate($arParams["USER_PATH"], array("user_id" => $arUserInfo["ID"], "SITE_ID" => SITE_DIR)); $userVal = "<a href=\"".$userPath."\">".$arUserInfo["FULL_NAME"]."</a>"; $arResult["ELEMENTS_ROWS"][] = array("data" => array( "ID" => $row["ID"], "IP" => $row["REMOTE_ADDR"], "DATE_TIME" => FormatDateFromDB($row["TIMESTAMP_X"], CSite::GetDateFormat()), "USER_NAME" => $userVal, "EVENT_NAME" => $eventName )); } else //for default template { $res['user'] = array( "name" => $arUserInfo["FULL_NAME"], "id" => $arUserInfo["ID"], "avatar" => $arUserInfo["avatar"]["src"] ); if (empty($res["eventType"])) { $res["eventType"] = $eventName; } $arResult['EVENT'][$dateFormated][] = $res; } break; } } } } } else { $arResult["NO_ACTIVE_FEATURES"] = true; } $this->IncludeComponentTemplate();