/*.require_module 'bitrix_main_include_prolog_admin_before';.*/
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
$RIGHT = $APPLICATION->GetGroupRight("perfmon");
if ($RIGHT == "D") {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
$isAdmin = $USER->CanDoOperation('edit_php');
if (!CModule::IncludeModule('perfmon')) {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
IncludeModuleLangFile(__FILE__);
$aTabs = array(array("DIV" => "edit1", "TAB" => GetMessage("PERFMON_IDETAIL_TABLE_TAB"), "ICON" => "main_user_edit", "TITLE" => GetMessage("PERFMON_IDETAIL_TABLE_TAB_TITLE")), array("DIV" => "edit2", "TAB" => GetMessage("PERFMON_IDETAIL_QUERY_TAB"), "ICON" => "main_user_edit", "TITLE" => GetMessage("PERFMON_IDETAIL_QUERY_TAB_TITLE")), array("DIV" => "edit3", "TAB" => GetMessage("PERFMON_IDETAIL_INDEX_TAB"), "ICON" => "main_user_edit", "TITLE" => GetMessage("PERFMON_IDETAIL_INDEX_TAB_TITLE")));
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$ID = intval($_REQUEST["ID"]);
// Id of the edited record
$rsSuggest = CPerfomanceIndexSuggest::GetList(array("ID", "TABLE_NAME", "TABLE_ALIAS", "COLUMN_NAMES", "SQL_TEXT", "SQL_EXPLAIN", "SQL_TIME", "SQL_COUNT"), array("=ID" => $ID), array());
$arSuggest = $rsSuggest->Fetch();
if (!$arSuggest) {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
$sql = CPerfomanceSQL::Format($arSuggest["SQL_TEXT"]);
$sql = htmlspecialcharsEx($sql);
$sql = preg_replace("/(" . preg_quote($arSuggest["TABLE_NAME"]) . "\\s+(?i:as\\s+)*" . $arSuggest["TABLE_ALIAS"] . ")\\s+/", "<b>\\1</b> ", $sql);
foreach (explode(",", $arSuggest["COLUMN_NAMES"]) as $column_name) {
    $sql = str_replace($arSuggest["TABLE_ALIAS"] . "." . $column_name, "<b>" . $arSuggest["TABLE_ALIAS"] . "." . $column_name . "</b>", $sql);
}
$arSuggest["FORMATTED_SQL_TEXT"] = $sql;
$arColumns = explode(",", $arSuggest["COLUMN_NAMES"]);
$arTableStat = CPerfQueryStat::GatherTableStat($arSuggest["TABLE_NAME"]);
$arIndexes = CPerfomanceTable::GetIndexes($arSuggest["TABLE_NAME"]);
$arQueries = array();
        $lAdmin->EndPrologContent();
    }
}
if (!$go && CPerfomanceKeeper::IsActive()) {
    $lAdmin->BeginPrologContent();
    $message = new CAdminMessage(array("MESSAGE" => GetMessage("PERFMON_INDEX_KEEPER_NOTE_IS_ACTIVE"), "DETAILS" => GetMessage("PERFMON_INDEX_KEEPER_NOTE_ANALYZE") . "<br>", "HTML" => true, "TYPE" => "OK"));
    echo $message->Show();
    $lAdmin->EndPrologContent();
}
$lAdmin->AddHeaders(array(array("id" => "BANNED", "content" => GetMessage("PERFMON_INDEX_BANNED"), "align" => "center", "default" => true), array("id" => "TABLE_NAME", "content" => GetMessage("PERFMON_INDEX_TABLE_NAME"), "default" => true, "sort" => "TABLE_NAME"), array("id" => "COLUMN_NAMES", "content" => GetMessage("PERFMON_INDEX_COLUMN_NAMES"), "default" => true), array("id" => "SQL_COUNT", "content" => GetMessage("PERFMON_INDEX_SQL_COUNT"), "align" => "right", "default" => true, "sort" => "SQL_COUNT"), array("id" => "SQL_TIME_AVG", "content" => GetMessage("PERFMON_INDEX_SQL_TIME_AVG"), "align" => "right", "default" => true), array("id" => "SQL_TIME", "content" => GetMessage("PERFMON_INDEX_SQL_TIME"), "align" => "right", "default" => true, "sort" => "SQL_TIME"), array("id" => "SQL_TEXT", "content" => GetMessage("PERFMON_INDEX_SQL_TEXT"), "default" => true)));
$arSelectedFields = $lAdmin->GetVisibleHeaderColumns();
if (!is_array($arSelectedFields) || count($arSelectedFields) < 1) {
    $arSelectedFields = array("TABLE_NAME", "COLUMN_NAMES", "SQL_COUNT", "SQL_TIME", "SQL_TEXT");
}
$arSelectedFields[] = "ID";
$cData = new CPerfomanceIndexSuggest();
$rsData = $cData->GetList($arSelectedFields, array("!=BANNED" => "Y"), array($by => $order));
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("PERFMON_INDEX_PAGE")));
while ($arRes = $rsData->NavNext(true, "f_")) {
    $arRes["SQL_TEXT"] = CPerfomanceSQL::Format($arRes["SQL_TEXT"]);
    $row =& $lAdmin->AddRow($f_NAME, $arRes);
    $row->AddViewField("SQL_TIME", perfmon_NumberFormat($f_SQL_TIME, 6));
    if ($f_SQL_COUNT > 0) {
        $row->AddViewField("SQL_TIME_AVG", perfmon_NumberFormat($f_SQL_TIME / $f_SQL_COUNT, 6));
    }
    $row->AddViewField("SQL_COUNT", '<a href="perfmon_sql_list.php?lang=' . LANGUAGE_ID . '&amp;set_filter=Y&amp;find_suggest_id=' . $f_ID . '">' . $f_SQL_COUNT . '</a>');
    $row->AddViewField("COLUMN_NAMES", str_replace(",", "<br>", $f_COLUMN_NAMES));
    if ($f_BANNED == "N") {
        $row->AddViewField("BANNED", '<span class="adm-lamp adm-lamp-in-list adm-lamp-green" title="' . htmlspecialcharsbx(GetMessage("PERFMON_INDEX_GREEN_ALT")) . '"></span>');