adminerevo/adminer/include/connect.inc.php

107 lines
4.3 KiB
PHP
Raw Normal View History

<?php
function connect_error() {
2012-02-24 06:54:48 +00:00
global $adminer, $connection, $token, $error, $drivers;
if (DB != "") {
header("HTTP/1.1 404 Not Found");
page_header(lang('Database') . ": " . h(DB), lang('Invalid database.'), true);
} else {
if ($_POST["db"] && !$error) {
queries_redirect(substr(ME, 0, -1), lang('Databases have been dropped.'), drop_databases($_POST["db"]));
}
2023-05-21 13:03:36 +00:00
page_header(lang('Select database'), $error, false);
2023-07-21 09:52:03 +00:00
$actions = [
'database' => lang('Create database'),
'privileges' => lang('Privileges'),
'processlist' => lang('Process list'),
'variables' => lang('Variables'),
'status' => lang('Status'),
2023-07-21 09:52:03 +00:00
];
$links = [];
foreach ($actions as $key => $val) {
if (support($key)) {
2023-07-21 09:52:03 +00:00
$links[] = "<a href='" . h(ME) . "$key='>$val</a>";
}
}
2023-07-21 09:52:03 +00:00
echo generate_linksbar($links);
2014-03-01 18:33:17 +00:00
echo "<p>" . lang('%s version: %s through PHP extension %s', $drivers[DRIVER], "<b>" . h($connection->server_info) . "</b>", "<b>$connection->extension</b>") . "\n";
echo "<p>" . lang('Logged as: %s', "<b>" . h(logged_user()) . "</b>") . "\n";
2012-02-24 06:54:48 +00:00
$databases = $adminer->databases();
if ($databases) {
2010-10-17 23:53:31 +00:00
$scheme = support("scheme");
$collations = collations();
echo "<form action='' method='post'>\n";
2018-01-12 12:54:08 +00:00
echo "<table cellspacing='0' class='checkable'>\n";
2018-01-12 14:27:44 +00:00
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
echo "<thead><tr>"
. (support("database") ? "<td>" : "")
2014-03-05 20:17:15 +00:00
. "<th>" . lang('Database') . " - <a href='" . h(ME) . "refresh=1'>" . lang('Refresh') . "</a>"
. "<td>" . lang('Collation')
. "<td>" . lang('Tables')
2018-01-12 14:27:44 +00:00
. "<td>" . lang('Size') . " - <a href='" . h(ME) . "dbsize=1'>" . lang('Compute') . "</a>" . script("qsl('a').onclick = partial(ajaxSetHtml, '" . js_escape(ME) . "script=connect');", "")
. "</thead>\n"
;
2023-05-21 13:03:36 +00:00
$databases = ($_GET["dbsize"] ? count_tables($databases) : array_flip($databases));
2023-05-21 13:03:36 +00:00
foreach ($databases as $db => $tables) {
$root = h(ME) . "db=" . urlencode($db);
$id = h("Db-" . $db);
echo "<tr" . odd() . ">" . (support("database") ? "<td>" . checkbox("db[]", $db, in_array($db, (array) $_POST["db"]), "", "", "", $id) : "");
2018-02-09 12:34:46 +00:00
echo "<th><a href='$root' id='$id'>" . h($db) . "</a>";
$collation = h(db_collation($db, $collations));
2013-07-06 17:31:21 +00:00
echo "<td>" . (support("database") ? "<a href='$root" . ($scheme ? "&amp;ns=" : "") . "&amp;database=' title='" . lang('Alter database') . "'>$collation</a>" : $collation);
echo "<td align='right'><a href='$root&amp;schema=' id='tables-" . h($db) . "' title='" . lang('Database schema') . "'>" . ($_GET["dbsize"] ? $tables : "?") . "</a>";
echo "<td align='right' id='size-" . h($db) . "'>" . ($_GET["dbsize"] ? db_size($db) : "?");
echo "\n";
}
2023-05-21 13:03:36 +00:00
echo "</table>\n";
2013-07-11 23:57:16 +00:00
echo (support("database")
? "<div class='footer'><div>\n"
2018-02-07 23:00:52 +00:00
. "<fieldset><legend>" . lang('Selected') . " <span id='selected'></span></legend><div>\n"
2018-01-12 14:27:44 +00:00
. "<input type='hidden' name='all' value=''>" . script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };") // used by trCheck()
. "<input type='submit' name='drop' value='" . lang('Drop') . "'>" . confirm() . "\n"
2013-07-11 23:57:16 +00:00
. "</div></fieldset>\n"
. "</div></div>\n"
2013-07-11 23:57:16 +00:00
: ""
);
2011-03-08 12:43:05 +00:00
echo "<input type='hidden' name='token' value='$token'>\n";
echo "</form>\n";
2018-02-06 12:53:15 +00:00
echo script("tableCheck();");
}
}
2023-05-21 13:03:36 +00:00
page_footer("db");
}
if (isset($_GET["status"])) {
$_GET["variables"] = $_GET["status"];
}
2013-08-02 18:45:55 +00:00
if (isset($_GET["import"])) {
$_GET["sql"] = $_GET["import"];
}
if (!(DB != "" ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["variables"]) || $_GET["script"] == "connect" || $_GET["script"] == "kill")) {
2012-08-20 00:12:19 +00:00
if (DB != "" || $_GET["refresh"]) {
restart_session();
set_session("dbs", null);
}
connect_error(); // separate function to catch SQLite error
exit;
}
2021-02-12 15:08:40 +00:00
if (support("scheme")) {
if (DB != "" && $_GET["ns"] !== "") {
if (!isset($_GET["ns"])) {
redirect(preg_replace('~ns=[^&]*&~', '', ME) . "ns=" . get_schema());
}
if (!set_schema($_GET["ns"])) {
header("HTTP/1.1 404 Not Found");
page_header(lang('Schema') . ": " . h($_GET["ns"]), lang('Invalid schema.'), true);
page_footer("ns");
exit;
}
2010-10-18 00:15:58 +00:00
}
}