Your IP : 172.28.240.42


Current Path : /var/www/html/clients/amz.e-nk.ru/bitrix/modules/perfmon/admin/
Upload File :
Current File : /var/www/html/clients/amz.e-nk.ru/bitrix/modules/perfmon/admin/perfmon_tables.php

<?
define("ADMIN_MODULE_NAME", "perfmon");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/perfmon/include.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/perfmon/prolog.php");
IncludeModuleLangFile(__FILE__);

$RIGHT = $APPLICATION->GetGroupRight("perfmon");
if($RIGHT=="D")
	$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));

$arEngines = array(
	"MYISAM" => array("NAME" => "MyISAM"),
	"INNODB" => array("NAME" => "InnoDB"),
);

$sTableID = "t_perfmon_all_tables";

$lAdmin = new CAdminList($sTableID);

if(($arTABLES = $lAdmin->GroupAction()) && $RIGHT>="W")
{
	if($_REQUEST['action_target']=='selected')
	{
		$rsData = CPerfomanceTableList::GetList();
		while($ar = $rsData->Fetch())
			$arTABLES[] = $ar["TABLE_NAME"];
	}

	foreach($arEngines as $id => $ar)
	{
		if($_REQUEST['action'] == "convert_to_".$id)
		{
			$_REQUEST["action"] = "convert";
			$_REQUEST["to"] = $id;
			break;
		}
	}

	$to = strtoupper($_REQUEST["to"]);

	foreach($arTABLES as $table_name)
	{
		if(strlen($table_name) <= 0 || !preg_match("/^[a-z0-9_]+\$/i", $table_name))
			continue;

		switch($_REQUEST['action'])
		{
		case "convert":
			$res = $DB->Query("show table status like '".$table_name."'", false);
			$arStatus = $res->Fetch();
			if($arStatus)
			{
				if($to != strtoupper($arStatus["Engine"]))
				{
					if($to == "MYISAM")
						$res = $DB->Query("alter table ".$table_name." ENGINE = MyISAM", false);
					elseif($to == "INNODB")
						$res = $DB->Query("alter table ".$table_name." ENGINE = InnoDB", false);
					else
						$res = true;

				}
				if(!$res)
				{
					$lAdmin->AddGroupError(GetMessage("PERFMON_TABLES_CONVERT_ERROR"), $table_name);
				}
			}
			break;
		}
	}
}

$lAdmin->BeginPrologContent();
echo "<h4>".GetMessage("PERFMON_TABLES_ALL")."</h4>\n";
$lAdmin->EndPrologContent();

$arHeaders = array();
$arHeaders[] = array(
	"id" => "TABLE_NAME",
	"content" => GetMessage("PERFMON_TABLES_NAME"),
	"default" => true,
);

if($DB->type == "MYSQL")
{
	$arHeaders[] = array(
		"id" => "ENGINE_TYPE",
		"content" => GetMessage("PERFMON_TABLES_ENGINE_TYPE"),
		"default" => true,
	);
}

$arHeaders[] = array(
	"id" => "NUM_ROWS",
	"content" => GetMessage("PERFMON_TABLES_NUM_ROWS"),
	"default" => true,
	"align" => "right",
);

$arHeaders[] = array(
	"id" => "BYTES",
	"content" => GetMessage("PERFMON_TABLES_BYTES"),
	"default" => true,
	"align" => "right",
);

$lAdmin->AddHeaders($arHeaders);

$arAllTables = array();
$rsData = CPerfomanceTableList::GetList();
while($ar = $rsData->Fetch())
	$arAllTables[] = $ar;

$rsData = new CDBResult;
$rsData->InitFromArray($arAllTables);
$rsData = new CAdminResult($rsData, $sTableID);

while($arRes = $rsData->NavNext(true, "f_"))
{
	$row =& $lAdmin->AddRow($f_TABLE_NAME, $arRes);
	$row->AddViewField("TABLE_NAME", '<a href="perfmon_table.php?lang='.LANGUAGE_ID.'&amp;table_name='.urlencode($f_TABLE_NAME).'">'.$f_TABLE_NAME.'</a>');
	$row->AddViewField("BYTES", CFile::FormatSize($arRes["BYTES"]));
	$arActions = array();
	if($DB->type == "MYSQL")
	{
		foreach($arEngines as $id => $ar)
		{
			if(strtoupper($f_ENGINE_TYPE) != $id)
				$arActions[] = array(
					"ICON" => "edit",
					"DEFAULT" => false,
					"TEXT" => GetMessage("PERFMON_TABLES_ACTION_CONVERT", array("#ENGINE_TYPE#" => $ar["NAME"])),
					"ACTION" => $lAdmin->ActionDoGroup($f_TABLE_NAME, "convert", "to=".$id),
				);
		}
	}
	if(count($arActions))
		$row->AddActions($arActions);
}

$lAdmin->AddFooter(
	array(
		array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsData->SelectedRowsCount()),
		array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"),
	)
);

if($DB->type == "MYSQL")
{
	$arGroupActions = array();
	foreach($arEngines as $id => $ar)
		$arGroupActions["convert_to_".$id] = GetMessage("PERFMON_TABLES_ACTION_CONVERT", array("#ENGINE_TYPE#" => $ar["NAME"]));

	$lAdmin->AddGroupActionTable($arGroupActions);
}

$lAdmin->CheckListMode();

$APPLICATION->SetTitle(GetMessage("PERFMON_TABLES_TITLE"));

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");

$strLastTables = CUserOptions::GetOption("perfmon", "last_tables");
if(strlen($strLastTables) > 0)
{
	$arLastTables = explode(",", $strLastTables);
	if(count($arLastTables) > 0)
	{
		sort($arLastTables);

		foreach($arLastTables as $i => $table_name)
			$arLastTables[$i] = array("NAME" => '<a href="perfmon_table.php?lang='.LANGUAGE_ID.'&amp;table_name='.urlencode($table_name).'">'.$table_name.'</a>');

		$sTableID = "t_perfmon_recent_tables";

		$lAdmin2 = new CAdminList($sTableID);

		$lAdmin2->BeginPrologContent();
		echo "<h4>".GetMessage("PERFMON_TABLES_RECENTLY_BROWSED")."</h4>\n";
		$lAdmin2->EndPrologContent();

		$lAdmin2->AddHeaders(array(
			array(
				"id" => "NAME",
				"content" => GetMessage("PERFMON_TABLES_NAME"),
				"default" => true,
			),
		));

		$rsData = new CDBResult;
		$rsData->InitFromArray($arLastTables);
		$rsData = new CAdminResult($rsData, $sTableID);

		$j = 0;
		while($arRes = $rsData->NavNext(true, "f_"))
		{
			$row =& $lAdmin2->AddRow($j++, $arRes);
			foreach($arRes as $key => $value)
				$row->AddViewField($key, $value);
		}

		$lAdmin2->CheckListMode();
		$lAdmin2->DisplayList();

	}
}

$lAdmin->DisplayList();

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
?>