From: jakubvrana
Date: Sat, 13 Jun 2009 20:55:19 +0000 (+0000)
Subject: Change directory structure
X-Git-Tag: v3.0.0~843
X-Git-Url: https://git.joonet.de/?a=commitdiff_plain;h=e1bc7af8f3f145e40067f1a04ae2a832e5d4da6e;p=adminer.git
Change directory structure
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@682 7c3ca157-0c34-0410-bff1-cbf682f78f5c
---
diff --git a/_compile.php b/_compile.php
deleted file mode 100644
index ad77f440..00000000
--- a/_compile.php
+++ /dev/null
@@ -1,208 +0,0 @@
- "'", "\\\\" => "\\"));
- $s = ($translations[$idf] ? $translations[$idf] : $idf);
- if ($match[3] == ",") {
- return "$match[1]" . (is_array($s) ? "lang(array('" . implode("', '", array_map('add_apo_slashes', $s)) . "')," : "sprintf('" . add_apo_slashes($s) . "',");
- }
- return ($match[1] && $match[4] ? $s : "$match[1]'" . add_apo_slashes($s) . "'$match[4]");
-}
-
-$lang_ids = array();
-function lang_ids($match) {
- global $lang_ids;
- return 'lang(' . $lang_ids[stripslashes($match[1])] . $match[2];
-}
-
-function put_file($match) {
- global $lang_ids;
- if ($match[2] == './lang/$LANG.inc.php') {
- if ($_COOKIE["lang"]) {
- return "";
- }
- $return = "";
- foreach (glob(dirname(__FILE__) . "/lang/*.inc.php") as $filename) {
- include $filename;
- foreach ($translations as $key => $val) {
- if (!isset($lang_ids[$key])) {
- $lang_ids[$key] = count($lang_ids);
- }
- }
- }
- foreach (glob(dirname(__FILE__) . "/lang/*.inc.php") as $filename) {
- include $filename;
- $translation_ids = array_flip($lang_ids);
- foreach ($translations as $key => $val) {
- $translation_ids[$lang_ids[$key]] = $val;
- }
- $return .= 'case "' . basename($filename, '.inc.php') . '": $translations = array(';
- foreach ($translation_ids as $val) {
- $return .= (is_array($val) ? "array('" . implode("', '", array_map('add_apo_slashes', $val)) . "')" : "'" . add_apo_slashes($val) . "'") . ", ";
- }
- $return = substr($return, 0, -2) . "); break;\n";
- }
- return "switch (\$LANG) {\n$return}\n";
- }
- $return = file_get_contents(dirname(__FILE__) . "/$match[2]");
- if ($match[2] != "./include/lang.inc.php" || !$_COOKIE["lang"]) {
- $tokens = token_get_all($return);
- return "?>\n$return" . (in_array($tokens[count($tokens) - 1][0], array(T_CLOSE_TAG, T_INLINE_HTML), true) ? "= 0) {
- $return .= $chars{$number % strlen($chars)};
- $number = floor($number / strlen($chars)) - 1;
- }
- return $return;
-}
-
-// based on Dgx's PHP shrinker
-function php_shrink($input) {
- $special_variables = array_flip(array('$this', '$GLOBALS', '$_GET', '$_POST', '$_FILES', '$_COOKIE', '$_SESSION', '$_SERVER'));
- static $short_variables = array();
- $shortening = true;
- $special_functions = array_flip(array('Min_DB', 'Min_Result', '__construct'));
- $defined_functions = array();
- static $short_functions = array();
- $tokens = token_get_all($input);
-
- foreach ($tokens as $i => $token) {
- if ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
- $short_variables[$token[1]]++;
- } elseif ($token[0] === T_STRING && $tokens[$i+1] === '(' && !isset($special_functions[$token[1]])) {
- $short_functions[$token[1]]++;
- if ($tokens[$i-2][0] === T_FUNCTION) {
- $defined_functions[$token[1]] = true;
- }
- }
- }
-
- arsort($short_variables);
- foreach (array_keys($short_variables) as $number => $key) {
- $short_variables[$key] = short_identifier($number, implode("", range('a', 'z')) . '_' . implode("", range('A', 'Z'))); // could use also numbers and \x7f-\xff
- }
- arsort($short_functions);
- $number = 0;
- foreach ($short_functions as $key => $val) {
- if (isset($defined_functions[$key])) {
- do {
- $short_functions[$key] = short_identifier($number, implode("", range('a', 'z')));
- $number++;
- } while (isset($short_functions[$short_functions[$key]]));
- }
- }
-
- $set = array_flip(preg_split('//', '!"#$&\'()*+,-./:;<=>?@[\]^`{|}'));
- $space = '';
- $output = '';
- $in_echo = false;
- for (reset($tokens); list($i, $token) = each($tokens); ) {
- if (!is_array($token)) {
- $token = array(0, $token);
- }
- if ($token[0] == T_COMMENT || $token[0] == T_WHITESPACE) {
- $space = "\n";
- } else {
- if ($token[0] == T_VAR) {
- $shortening = false;
- } elseif (!$shortening) {
- if ($token[1] == ';') {
- $shortening = true;
- }
- } elseif ($token[0] == T_ECHO) {
- $in_echo = true;
- } elseif ($token[1] == ';' && $in_echo) {
- $in_echo = false;
- if ($tokens[$i+1][0] === T_WHITESPACE && $tokens[$i+2][0] === T_ECHO) {
- next($tokens);
- next($tokens);
- $token[1] = '.'; //! join ''.'' and "".""
- }
- } elseif ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
- $token[1] = '$' . $short_variables[$token[1]];
- } elseif ($token[0] === T_STRING && $tokens[$i+1] === '(' && isset($defined_functions[$token[1]])
- && $tokens[$i-1][0] !== T_DOUBLE_COLON && $tokens[$i-2][0] !== T_NEW && $tokens[$i-2][1] !== '_result'
- ) {
- $token[1] = $short_functions[$token[1]];
- } elseif ($token[0] == T_CONSTANT_ENCAPSED_STRING && (($tokens[$i-1] === '(' && in_array($tokens[$i-2][1], array('array_map', 'set_exception_handler'), true)) || $token[1] == "'normalize_enum'") && isset($defined_functions[substr($token[1], 1, -1)])) {
- $token[1] = "'" . $short_functions[substr($token[1], 1, -1)] . "'";
- }
- if (isset($set[substr($output, -1)]) || isset($set[$token[1]{0}])) {
- $space = '';
- }
- $output .= $space . $token[1];
- $space = '';
- }
- }
- return $output;
-}
-
-error_reporting(E_ALL & ~E_NOTICE);
-if ($_SERVER["argc"] > 1) {
- $_COOKIE["lang"] = $_SERVER["argv"][1];
- include dirname(__FILE__) . "/include/lang.inc.php";
- if ($_SERVER["argc"] != 2 || !isset($langs[$_COOKIE["lang"]])) {
- echo "Usage: php _compile.php [lang]\nPurpose: Compile adminer[-lang].php from index.php.\n";
- exit(1);
- }
- include dirname(__FILE__) . "/lang/$_COOKIE[lang].inc.php";
-}
-
-$filename = "adminer" . ($_COOKIE["lang"] ? "-$_COOKIE[lang]" : "") . ".php";
-$file = file_get_contents(dirname(__FILE__) . "/index.php");
-$file = preg_replace_callback('~\\b(include|require) "([^"]*)";~', 'put_file', $file);
-$file = preg_replace("~if \\(isset\\(\\\$_SESSION\\[\"coverage.*\n}\n| && !isset\\(\\\$_SESSION\\[\"coverage\"\\]\\)~sU", '', $file);
-if ($_COOKIE["lang"]) {
- $file = preg_replace_callback("~(<\\?php\\s*echo )?lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])(;\\s*\\?>)?~s", 'remove_lang', $file);
- $file = str_replace("\n", "", $file);
- $file = str_replace('', $_COOKIE["lang"], $file);
-} else {
- $file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
-}
-$replace = 'htmlspecialchars(preg_replace("~\\\\\\\\?.*~", "", $_SERVER["REQUEST_URI"])) . "?file=\\0&version=' . $VERSION;
-$file = preg_replace('~default\\.css|functions\\.js|favicon\\.ico~', '', $file);
-$file = preg_replace('~(plus|cross|up|down|arrow)\\.gif~', '" . ' . $replace, $file);
-$file = str_replace('error_reporting(E_ALL & ~E_NOTICE);', 'error_reporting(E_ALL & ~E_NOTICE);
-if (isset($_GET["file"])) {
- header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365*24*60*60) . " GMT");
- if ($_GET["file"] == "favicon.ico") {
- header("Content-Type: image/x-icon");
- echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/favicon.ico")) . '");
- } elseif ($_GET["file"] == "default.css") {
- header("Content-Type: text/css");
- ?>' . preg_replace('~\\s*([:;{},])\\s*~', '\\1', file_get_contents(dirname(__FILE__) . "/default.css")) . '' . JSMin::minify(file_get_contents(dirname(__FILE__) . "/functions.js")) . '\n?|\\?>\n?<\\?php~", '', $file);
-$file = php_shrink($file);
-fwrite(fopen($filename, "w"), $file);
-echo "$filename created.\n";
diff --git a/_coverage.php b/_coverage.php
deleted file mode 100644
index 8363ca46..00000000
--- a/_coverage.php
+++ /dev/null
@@ -1,77 +0,0 @@
-]+)~', $s, $matches);
- foreach ($matches[1] as $val) {
- if ($val{0} == "/") {
- array_pop($return);
- } elseif (substr($val, -1) != "/") {
- $return[] = $val;
- }
- }
- return $return;
-}
-
-if (!extension_loaded("xdebug")) {
- echo "Xdebug has to be enabled.
\n";
-}
-
-if ($_GET["start"]) {
- xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
- $_SESSION["coverage"] = array();
- include "./index.php";
- header("Location: .");
- exit;
-}
-if ($_GET["filename"]) {
- $filename = basename($_GET["filename"]);
- $cov = $_SESSION["coverage"][realpath($filename)];
- $file = explode(" ", highlight_file($filename, true));
- unset($prev_color);
- $s = "";
- for ($l=0; $l <= count($file); $l++) {
- $line = $file[$l];
- $color = "#C0FFC0"; // tested
- switch ($cov[$l+1]) {
- case -1: $color = "#FFC0C0"; break; // untested
- case -2: $color = "Silver"; break; // dead code
- case null: $color = ""; break; // not executable
- }
- if (!isset($prev_color)) {
- $prev_color = $color;
- }
- if ($prev_color != $color || !isset($line)) {
- echo "" . $s;
- $open_tags = xhtml_open_tags($s);
- foreach (array_reverse($open_tags) as $tag) {
- echo "" . preg_replace('~ .*~', '', $tag) . ">";
- }
- echo "
\n";
- $s = ($open_tags ? "<" . implode("><", $open_tags) . ">" : "");
- $prev_color = $color;
- }
- $s .= "$line \n";
- }
-} else {
- echo "\n";
- foreach (glob("*.php") as $filename) {
- if ($filename{0} != "_") {
- $cov = $_SESSION["coverage"][realpath($filename)];
- $ratio = 0;
- if (isset($cov)) {
- $values = array_count_values($cov);
- $ratio = round(100 - 100 * $values[-1] / count($cov));
- }
- echo "$ratio% $filename \n";
- }
- }
- echo "
\n";
- echo "Start new coverage (requires Xdebug )
\n";
-}
diff --git a/_lang.php b/_lang.php
deleted file mode 100644
index 4be0f33d..00000000
--- a/_lang.php
+++ /dev/null
@@ -1,41 +0,0 @@
- 1) {
- $_COOKIE["lang"] = $_SERVER["argv"][1];
- include dirname(__FILE__) . "/include/lang.inc.php";
- if ($_SERVER["argc"] != 2 || !isset($langs[$_COOKIE["lang"]])) {
- echo "Usage: php _lang.php [lang]\nPurpose: Update lang/*.inc.php from source code messages.\n";
- exit(1);
- }
-}
-
-$messages_all = array();
-foreach (array_merge(glob(dirname(__FILE__) . "/*.php"), glob(dirname(__FILE__) . "/include/*.php")) as $filename) {
- $file = file_get_contents($filename);
- if (preg_match_all("~lang\\(('(?:[^\\\\']+|\\\\.)*')([),])~", $file, $matches)) {
- $messages_all += array_combine($matches[1], $matches[2]);
- }
-}
-
-foreach (glob(dirname(__FILE__) . "/lang/" . ($_COOKIE["lang"] ? $_COOKIE["lang"] : "*") . ".inc.php") as $filename) {
- $messages = $messages_all;
- preg_match_all("~^(\\s*)(?:// )?(('(?:[^\\\\']+|\\\\.)*') => .*[^,\n]),?~m", file_get_contents($filename), $matches, PREG_SET_ORDER);
- $s = "";
- foreach ($matches as $match) {
- if (isset($messages[$match[3]])) {
- $s .= "$match[1]$match[2],\n";
- unset($messages[$match[3]]);
- } else {
- $s .= "$match[1]// $match[2],\n";
- }
- }
- foreach($messages as $idf => $val) {
- if ($val == "," && strpos($idf, "%d")) {
- $s .= "\t$idf => array(),\n";
- } elseif (basename($filename) != "en.inc.php") {
- $s .= "\t$idf => null,\n";
- }
- }
- fwrite(fopen($filename, "w"), " $field) {
+ if (substr($field["inout"], -3) == "OUT") {
+ $out[$i] = "@" . idf_escape($field["field"]) . " AS " . idf_escape($field["field"]);
+ }
+ if (!$field["inout"] || substr($field["inout"], 0, 2) == "IN") {
+ $in[] = $i;
+ }
+}
+
+if (!$error && $_POST) {
+ $call = array();
+ foreach ($routine["fields"] as $key => $field) {
+ if (in_array($key, $in)) {
+ $val = process_input($key, $field);
+ if ($val === false) {
+ $val = "''";
+ }
+ if (isset($out[$key])) {
+ $dbh->query("SET @" . idf_escape($field["field"]) . " = " . $val);
+ }
+ }
+ $call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val);
+ }
+ $result = $dbh->multi_query((isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($_GET["call"]) . "(" . implode(", ", $call) . ")");
+ if (!$result) {
+ echo "" . htmlspecialchars($dbh->error) . "
\n";
+ } else {
+ do {
+ $result = $dbh->store_result();
+ if (is_object($result)) {
+ select($result);
+ } else {
+ echo "" . lang('Routine has been called, %d row(s) affected.', $dbh->affected_rows) . "
\n";
+ }
+ } while ($dbh->next_result());
+ if ($out) {
+ select($dbh->query("SELECT " . implode(", ", $out)));
+ }
+ }
+}
+?>
+
+
diff --git a/adminer/create.inc.php b/adminer/create.inc.php
new file mode 100644
index 00000000..cd638f65
--- /dev/null
+++ b/adminer/create.inc.php
@@ -0,0 +1,162 @@
+ $field) {
+ if (strlen($field["field"]) && isset($types[$field["type"]])) {
+ $fields[] = (!strlen($_GET["create"]) ? "\n" : (strlen($field["orig"]) ? "\nCHANGE " . idf_escape($field["orig"]) . " " : "\nADD "))
+ . idf_escape($field["field"]) . process_type($field)
+ . ($field["null"] ? " NULL" : " NOT NULL") // NULL for timestamp
+ . (strlen($_GET["create"]) && strlen($field["orig"]) && isset($orig_fields[$field["orig"]]["default"]) && $field["type"] != "timestamp" ? " DEFAULT '" . $dbh->escape_string($orig_fields[$field["orig"]]["default"]) . "'" : "") //! timestamp
+ . ($key == $_POST["auto_increment_col"] ? " AUTO_INCREMENT$auto_increment_index" : "")
+ . " COMMENT '" . $dbh->escape_string($field["comment"]) . "'"
+ . (strlen($_GET["create"]) ? " $after" : "")
+ ;
+ $after = "AFTER " . idf_escape($field["field"]);
+ } elseif (strlen($field["orig"])) {
+ $fields[] = "\nDROP " . idf_escape($field["orig"]);
+ }
+ }
+ $status = ($_POST["Engine"] ? "ENGINE='" . $dbh->escape_string($_POST["Engine"]) . "'" : "")
+ . ($_POST["Collation"] ? " COLLATE '" . $dbh->escape_string($_POST["Collation"]) . "'" : "")
+ . (strlen($_POST["Auto_increment"]) ? " AUTO_INCREMENT=" . intval($_POST["Auto_increment"]) : "")
+ . " COMMENT='" . $dbh->escape_string($_POST["Comment"]) . "'"
+ ;
+ if (in_array($_POST["partition_by"], $partition_by)) {
+ $partitions = array();
+ if ($_POST["partition_by"] == 'RANGE' || $_POST["partition_by"] == 'LIST') {
+ foreach (array_filter($_POST["partition_names"]) as $key => $val) {
+ $value = $_POST["partition_values"][$key];
+ $partitions[] = "\nPARTITION $val VALUES " . ($_POST["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . (strlen($value) ? " ($value)" : " MAXVALUE"); //! SQL injection
+ }
+ }
+ $status .= "\nPARTITION BY $_POST[partition_by]($_POST[partition])" . ($partitions ? " (" . implode(",", $partitions) . "\n)" : ($_POST["partitions"] ? " PARTITIONS " . intval($_POST["partitions"]) : ""));
+ } elseif ($dbh->server_info >= 5.1 && strlen($_GET["create"])) {
+ $status .= "\nREMOVE PARTITIONING";
+ }
+ $location = $SELF . "table=" . urlencode($_POST["name"]);
+ if (strlen($_GET["create"])) {
+ query_redirect("ALTER TABLE " . idf_escape($_GET["create"]) . implode(",", $fields) . ",\nRENAME TO " . idf_escape($_POST["name"]) . ",\n$status", $location, lang('Table has been altered.'));
+ } else {
+ query_redirect("CREATE TABLE " . idf_escape($_POST["name"]) . " (" . implode(",", $fields) . "\n) $status", $location, lang('Table has been created.'));
+ }
+ }
+}
+page_header((strlen($_GET["create"]) ? lang('Alter table') : lang('Create table')), $error, array("table" => $_GET["create"]), $_GET["create"]);
+
+$engines = array();
+$result = $dbh->query("SHOW ENGINES");
+while ($row = $result->fetch_assoc()) {
+ if ($row["Support"] == "YES" || $row["Support"] == "DEFAULT") {
+ $engines[] = $row["Engine"];
+ }
+}
+$result->free();
+
+if ($_POST) {
+ $row = $_POST;
+ if ($row["auto_increment_col"]) {
+ $row["fields"][$row["auto_increment_col"]]["auto_increment"] = true;
+ }
+ process_fields($row["fields"]);
+} elseif (strlen($_GET["create"])) {
+ $row = table_status($_GET["create"]);
+ table_comment($row);
+ $row["name"] = $_GET["create"];
+ $row["fields"] = array_values($orig_fields);
+ if ($dbh->server_info >= 5.1) {
+ $from = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "' AND TABLE_NAME = '" . $dbh->escape_string($_GET["create"]) . "'";
+ $result = $dbh->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $from ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");
+ list($row["partition_by"], $row["partitions"], $row["partition"]) = $result->fetch_row();
+ $result->free();
+ $row["partition_names"] = array();
+ $row["partition_values"] = array();
+ $result = $dbh->query("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $from AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");
+ while ($row1 = $result->fetch_assoc()) {
+ $row["partition_names"][] = $row1["PARTITION_NAME"];
+ $row["partition_values"][] = $row1["PARTITION_DESCRIPTION"];
+ }
+ $result->free();
+ $row["partition_names"][] = "";
+ }
+} else {
+ $row = array("fields" => array(array("field" => "")), "partition_names" => array(""));
+}
+$collations = collations();
+
+$suhosin = floor(extension_loaded("suhosin") ? (min(ini_get("suhosin.request.max_vars"), ini_get("suhosin.post.max_vars")) - 13) / 8 : 0);
+if ($suhosin && count($row["fields"]) > $suhosin) {
+ echo "" . htmlspecialchars(lang('Maximum number of allowed fields exceeded. Please increase %s and %s.', 'suhosin.post.max_vars', 'suhosin.request.max_vars')) . "
\n";
+}
+?>
+
+
diff --git a/adminer/createv.inc.php b/adminer/createv.inc.php
new file mode 100644
index 00000000..4113df84
--- /dev/null
+++ b/adminer/createv.inc.php
@@ -0,0 +1,32 @@
+ $_GET["createv"]), $_GET["createv"]);
+
+$row = array();
+if ($_POST) {
+ $row = $_POST;
+} elseif (strlen($_GET["createv"])) {
+ $row = view($_GET["createv"]);
+ $row["name"] = $_GET["createv"];
+}
+?>
+
+
diff --git a/adminer/cross.gif b/adminer/cross.gif
new file mode 100644
index 00000000..05b5061c
Binary files /dev/null and b/adminer/cross.gif differ
diff --git a/adminer/database.inc.php b/adminer/database.inc.php
new file mode 100644
index 00000000..0e901fa1
--- /dev/null
+++ b/adminer/database.inc.php
@@ -0,0 +1,76 @@
+escape_string($_POST["collation"]) . "'" : ""))) {
+ $failed = true;
+ }
+ $last = $db;
+ }
+ }
+ if (query_redirect(queries(), $SELF . "db=" . urlencode($last), lang('Database has been created.'), !strlen($_GET["db"]), false, $failed)) {
+ $result = $dbh->query("SHOW TABLES");
+ while ($row = $result->fetch_row()) {
+ if (!queries("RENAME TABLE " . idf_escape($row[0]) . " TO " . idf_escape($_POST["name"]) . "." . idf_escape($row[0]))) {
+ break;
+ }
+ }
+ $result->free();
+ if (!$row) {
+ queries("DROP DATABASE " . idf_escape($_GET["db"]));
+ }
+ query_redirect(queries(), preg_replace('~db=[^&]*&~', '', $SELF) . "db=" . urlencode($_POST["name"]), lang('Database has been renamed.'), !$row, false, $row);
+ }
+ } else {
+ if (!$_POST["collation"]) {
+ redirect(substr($SELF, 0, -1));
+ }
+ query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE '" . $dbh->escape_string($_POST["collation"]) . "'", substr($SELF, 0, -1), lang('Database has been altered.'));
+ }
+}
+page_header(strlen($_GET["db"]) ? lang('Alter database') : lang('Create database'), $error, array(), $_GET["db"]);
+
+$collations = collations();
+$name = $_GET["db"];
+$collate = array();
+if ($_POST) {
+ $name = $_POST["name"];
+ $collate = $_POST["collation"];
+} else {
+ if (!strlen($_GET["db"])) {
+ $result = $dbh->query("SHOW GRANTS");
+ while ($row = $result->fetch_row()) {
+ if (preg_match('~ ON (`(([^\\\\`]+|``|\\\\.)*)%`\\.\\*)?~', $row[0], $match) && $match[1]) {
+ $name = stripcslashes(idf_unescape($match[2]));
+ break;
+ }
+ }
+ $result->free();
+ } elseif (($result = $dbh->query("SHOW CREATE DATABASE " . idf_escape($_GET["db"])))) {
+ $create = $dbh->result($result, 1);
+ if (preg_match('~ COLLATE ([^ ]+)~', $create, $match)) {
+ $collate = $match[1];
+ } elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $create, $match)) {
+ $collate = $collations[$match[1]][0];
+ }
+ $result->free();
+ }
+}
+?>
+
+
+
+
+()
+
+
+ />
+
+
diff --git a/adminer/db.inc.php b/adminer/db.inc.php
new file mode 100644
index 00000000..818b6ff4
--- /dev/null
+++ b/adminer/db.inc.php
@@ -0,0 +1,113 @@
+query("SET foreign_key_checks = 0");
+ if (isset($_POST["truncate"])) {
+ if ($_POST["tables"]) {
+ foreach ($_POST["tables"] as $table) {
+ if (!queries("TRUNCATE " . idf_escape($table))) {
+ $result = false;
+ break;
+ }
+ }
+ $message = lang('Tables have been truncated.');
+ }
+ } elseif (isset($_POST["move"])) {
+ $rename = array();
+ foreach ($tables_views as $table) {
+ $rename[] = idf_escape($table) . " TO " . idf_escape($_POST["target"]) . "." . idf_escape($table);
+ }
+ $result = queries("RENAME TABLE " . implode(", ", $rename));
+ $message = lang('Tables have been moved.');
+ } elseif ((!isset($_POST["drop"]) || !$_POST["views"] || queries("DROP VIEW " . implode(", ", array_map('idf_escape', $_POST["views"]))))
+ && (!$_POST["tables"] || ($result = queries((isset($_POST["optimize"]) ? "OPTIMIZE" : (isset($_POST["check"]) ? "CHECK" : (isset($_POST["repair"]) ? "REPAIR" : (isset($_POST["drop"]) ? "DROP" : "ANALYZE")))) . " TABLE " . implode(", ", array_map('idf_escape', $_POST["tables"])))))
+ ) {
+ if (isset($_POST["drop"])) {
+ $message = lang('Tables have been dropped.');
+ } else {
+ while ($row = $result->fetch_assoc()) {
+ $message .= htmlspecialchars("$row[Table]: $row[Msg_text]") . " ";
+ }
+ }
+ }
+ query_redirect(queries(), substr($SELF, 0, -1), $message, $result, false, !$result);
+}
+
+page_header(lang('Database') . ": " . htmlspecialchars($_GET["db"]), $error, false);
+echo '' . lang('Alter database') . "
\n";
+echo '' . lang('Database schema') . "
\n";
+
+echo "" . lang('Tables and views') . " \n";
+$result = $dbh->query("SHOW TABLE STATUS");
+if (!$result->num_rows) {
+ echo "" . lang('No tables.') . "
\n";
+} else {
+ echo "\n";
+ echo "\n";
+ echo '' . lang('Table') . ' ' . lang('Engine') . ' ' . lang('Collation') . ' ' . lang('Data Length') . ' ' . lang('Index Length') . ' ' . lang('Data Free') . ' ' . lang('Auto Increment') . ' ' . lang('Rows') . ' ' . lang('Comment') . " \n";
+ while ($row = $result->fetch_assoc()) {
+ $name = $row["Name"];
+ table_comment($row);
+ echo ' ';
+ if (isset($row["Rows"])) {
+ echo '' . htmlspecialchars($name) . " $row[Engine] $row[Collation] ";
+ foreach (array("Data_length" => "create", "Index_length" => "indexes", "Data_free" => "edit", "Auto_increment" => "create", "Rows" => "select") as $key => $link) {
+ $val = number_format($row[$key], 0, '.', lang(','));
+ echo '' . (strlen($row[$key]) ? '' . str_replace(" ", " ", ($key == "Rows" && $row["Engine"] == "InnoDB" && $val ? lang('~ %s', $val) : $val)) . ' ' : ' ') . ' ';
+ }
+ echo "" . (strlen(trim($row["Comment"])) ? htmlspecialchars($row["Comment"]) : " ") . " ";
+ } else {
+ echo '' . htmlspecialchars($name) . ' ' . lang('View') . ' ';
+ }
+ echo " \n";
+ }
+ echo "
\n";
+ echo "
\n";
+ $dbs = get_databases();
+ if (count($dbs) != 1) {
+ $db = (isset($_POST["target"]) ? $_POST["target"] : $_GET["db"]);
+ echo "" . lang('Move to other database') . ($dbs ? ": " . optionlist($dbs, $db) . " " : ': ') . "
\n";
+ }
+ echo " \n";
+}
+$result->free();
+
+if ($dbh->server_info >= 5) {
+ echo '' . lang('Create view') . "
\n";
+ echo "" . lang('Routines') . " \n";
+ $result = $dbh->query("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "'");
+ if ($result->num_rows) {
+ echo "\n";
+ }
+ $result->free();
+ echo '' . lang('Create procedure') . ' ' . lang('Create function') . "
\n";
+}
+
+if ($dbh->server_info >= 5.1 && ($result = $dbh->query("SHOW EVENTS"))) {
+ echo "" . lang('Events') . " \n";
+ if ($result->num_rows) {
+ echo "\n";
+ echo "" . lang('Name') . " " . lang('Schedule') . " " . lang('Start') . " " . lang('End') . " \n";
+ while ($row = $result->fetch_assoc()) {
+ echo "";
+ echo '' . htmlspecialchars($row["Name"]) . " ";
+ echo "" . ($row["Execute at"] ? lang('At given time') . " " . $row["Execute at"] : lang('Every') . " " . $row["Interval value"] . " " . $row["Interval field"] . " $row[Starts]") . " ";
+ echo "$row[Ends] ";
+ echo " \n";
+ }
+ echo "
\n";
+ }
+ $result->free();
+ echo '' . lang('Create event') . "
\n";
+}
diff --git a/adminer/default.css b/adminer/default.css
new file mode 100644
index 00000000..5ea95936
--- /dev/null
+++ b/adminer/default.css
@@ -0,0 +1,39 @@
+body { color: #000; background: #fff; line-height: 1.25em; font-family: Verdana, Arial, Helvetica, sans-serif; margin: 0; font-size: 90%; }
+a { color: blue; }
+a:visited { color: navy; }
+a:hover { color: red; }
+h1 { font-size: 100%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; }
+h1 a:link, h1 a:visited { font-size: 150%; color: #777; text-decoration: none; font-style: italic; margin-right: 1ex; }
+h2 { font-size: 150%; margin: 0 0 20px -18px; padding: .8em 1em; border-bottom: 1px solid #000; color: #000; font-weight: normal; background: #ddf; }
+h3 { font-weight: normal; font-size: 130%; margin: .8em 0; }
+table { margin: 0 20px .8em 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; }
+td, th { margin-bottom: 1em; border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; }
+th { background: #eee; }
+fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: 0 .5em .5em 0; border: 1px solid #999; }
+p { margin: 0 20px 1em 0; }
+img { vertical-align: middle; border: 0; }
+code { background: #eee; }
+.js .hidden { display: none; }
+.popup { position: absolute; }
+.nowrap { white-space: nowrap; }
+.wrap { white-space: normal; }
+.error { color: red; background: #fee; padding: .5em .8em; }
+.message { color: green; background: #efe; padding: .5em .8em; }
+.char { color: #007F00; }
+.date { color: #7F007F; }
+.enum { color: #007F7F; }
+.binary { color: red; }
+.odd td { background: #F5F5F5; }
+.time { color: Silver; font-size: 70%; float: right; margin-top: -3em; }
+.function { text-align: right; }
+tr:hover td { background: #ddf; }
+thead tr:hover td { background: transparent; }
+#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; overflow: auto; overflow-y: hidden; white-space: nowrap; }
+#menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
+#menu form { margin: 0; }
+#content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; }
+#lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; }
+#breadcrumb { white-space: nowrap; position: absolute; top: 0; left: 21em; background: #eee; height: 2em; line-height: 1.8em; padding: 0 1em; margin: 0 0 0 -18px; }
+#schema { margin-left: 60px; position: relative; }
+#schema .table { border: 1px solid Silver; padding: 0 2px; cursor: move; position: absolute; }
+#schema .references { position: absolute; }
diff --git a/adminer/down.gif b/adminer/down.gif
new file mode 100644
index 00000000..630fc359
Binary files /dev/null and b/adminer/down.gif differ
diff --git a/adminer/download.inc.php b/adminer/download.inc.php
new file mode 100644
index 00000000..ff1f7862
--- /dev/null
+++ b/adminer/download.inc.php
@@ -0,0 +1,4 @@
+result($dbh->query("SELECT " . idf_escape($_GET["field"]) . " FROM " . idf_escape($_GET["download"]) . " WHERE " . implode(" AND ", where($_GET)) . " LIMIT 1"));
diff --git a/adminer/dump.inc.php b/adminer/dump.inc.php
new file mode 100644
index 00000000..fcf319ed
--- /dev/null
+++ b/adminer/dump.inc.php
@@ -0,0 +1,188 @@
+ 1));
+ if ($_POST["format"] != "csv") {
+ $max_packet = 1048576; // default, minimum is 1024
+ echo "SET NAMES utf8;\n";
+ echo "SET foreign_key_checks = 0;\n";
+ echo "SET time_zone = '" . $dbh->escape_string($dbh->result($dbh->query("SELECT @@time_zone"))) . "';\n";
+ echo "\n";
+ }
+
+ $style = $_POST["db_style"];
+ foreach ((strlen($_GET["db"]) ? array($_GET["db"]) : (array) $_POST["databases"]) as $db) {
+ if ($dbh->select_db($db)) {
+ if ($_POST["format"] != "csv" && ereg('CREATE', $style) && ($result = $dbh->query("SHOW CREATE DATABASE " . idf_escape($db)))) {
+ if ($style == "DROP+CREATE") {
+ echo "DROP DATABASE IF EXISTS " . idf_escape($db) . ";\n";
+ }
+ $create = $dbh->result($result, 1);
+ echo ($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n";
+ $result->free();
+ }
+ if ($style && $_POST["format"] != "csv") {
+ echo "USE " . idf_escape($db) . ";\n\n";
+ $out = "";
+ if ($dbh->server_info >= 5) {
+ foreach (array("FUNCTION", "PROCEDURE") as $routine) {
+ $result = $dbh->query("SHOW $routine STATUS WHERE Db = '" . $dbh->escape_string($db) . "'");
+ while ($row = $result->fetch_assoc()) {
+ $out .= $dbh->result($dbh->query("SHOW CREATE $routine " . idf_escape($row["Name"])), 2) . ";;\n\n";
+ }
+ $result->free();
+ }
+ }
+ if ($dbh->server_info >= 5.1) {
+ $result = $dbh->query("SHOW EVENTS");
+ while ($row = $result->fetch_assoc()) {
+ $out .= $dbh->result($dbh->query("SHOW CREATE EVENT " . idf_escape($row["Name"])), 3) . ";;\n\n";
+ }
+ $result->free();
+ }
+ echo ($out ? "DELIMITER ;;\n\n$out" . "DELIMITER ;\n\n" : "");
+ }
+
+ if ($_POST["table_style"] || $_POST["data_style"]) {
+ $views = array();
+ $result = $dbh->query("SHOW TABLE STATUS");
+ while ($row = $result->fetch_assoc()) {
+ $table = (!strlen($_GET["db"]) || in_array($row["Name"], (array) $_POST["tables"]));
+ $data = (!strlen($_GET["db"]) || in_array($row["Name"], (array) $_POST["data"]));
+ if ($table || $data) {
+ if (isset($row["Engine"])) {
+ if ($ext == "tar") {
+ ob_start();
+ }
+ dump_table($row["Name"], ($table ? $_POST["table_style"] : ""));
+ if ($data) {
+ dump_data($row["Name"], $_POST["data_style"]);
+ }
+ if ($ext == "tar") {
+ echo tar_file((strlen($_GET["db"]) ? "" : "$db/") . "$row[Name].csv", ob_get_clean());
+ } elseif ($_POST["format"] != "csv") {
+ echo "\n";
+ }
+ } elseif ($_POST["format"] != "csv") {
+ $views[] = $row["Name"];
+ }
+ }
+ }
+ $result->free();
+ foreach ($views as $view) {
+ dump_table($view, $_POST["table_style"], true);
+ }
+ }
+
+ if ($style == "CREATE+ALTER" && $_POST["format"] != "csv") {
+ $query = "SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";
+?>
+DELIMITER ;;
+CREATE PROCEDURE adminer_drop () BEGIN
+ DECLARE _table_name, _engine, _table_collation varchar(64);
+ DECLARE _table_comment varchar(64);
+ DECLARE done bool DEFAULT 0;
+ DECLARE tables CURSOR FOR ;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
+ OPEN tables;
+ REPEAT
+ FETCH tables INTO _table_name, _engine, _table_collation, _table_comment;
+ IF NOT done THEN
+ CASE _table_namequery($query);
+while ($row = $result->fetch_assoc()) {
+ $comment = $dbh->escape_string($row["ENGINE"] == "InnoDB" ? preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["TABLE_COMMENT"]) : $row["TABLE_COMMENT"]);
+ echo "
+ WHEN '" . $dbh->escape_string($row["TABLE_NAME"]) . "' THEN
+ " . (isset($row["ENGINE"]) ? "IF _engine != '$row[ENGINE]' OR _table_collation != '$row[TABLE_COLLATION]' OR _table_comment != '$comment' THEN
+ ALTER TABLE " . idf_escape($row["TABLE_NAME"]) . " ENGINE=$row[ENGINE] COLLATE=$row[TABLE_COLLATION] COMMENT='$comment';
+ END IF" : "BEGIN END") . ";";
+}
+$result->free();
+?>
+
+ ELSE
+ SET @alter_table = CONCAT('DROP TABLE `', REPLACE(_table_name, '`', '``'), '`');
+ PREPARE alter_command FROM @alter_table;
+ EXECUTE alter_command; -- returns "can't return a result set in the given context" with MySQL extension
+ DROP PREPARE alter_command;
+ END CASE;
+ END IF;
+ UNTIL done END REPEAT;
+ CLOSE tables;
+END;;
+DELIMITER ;
+CALL adminer_drop;
+DROP PROCEDURE adminer_drop;
+ $_GET["export"]) : array()), $_GET["db"]);
+?>
+
+
+
+server_info >= 5) {
+ $db_style[] = 'CREATE+ALTER';
+ $table_style[] = 'CREATE+ALTER';
+}
+echo "" . lang('Output') . " $dump_output \n";
+echo "" . lang('Format') . " $dump_format \n";
+echo "" . lang('Database') . " " . optionlist($db_style, (strlen($_GET["db"]) ? '' : 'CREATE')) . " \n";
+echo "" . lang('Tables') . " " . optionlist($table_style, 'DROP+CREATE') . " \n";
+echo "" . lang('Data') . " " . optionlist($data_style, 'INSERT') . " \n";
+?>
+
+
+
+\n";
+ echo " " . lang('Database') . " \n";
+ foreach (get_databases() as $db) {
+ if ($db != "information_schema" || $dbh->server_info < 5) {
+ echo ' ' . htmlspecialchars($db) . " \n";
+ }
+ }
+ echo "\n";
+}
+
+if (strlen($_GET["db"])) {
+ $checked = (strlen($_GET["dump"]) ? "" : " checked='checked'");
+ echo "\n";
+}
+?>
+
diff --git a/adminer/edit.inc.php b/adminer/edit.inc.php
new file mode 100644
index 00000000..43040bf9
--- /dev/null
+++ b/adminer/edit.inc.php
@@ -0,0 +1,105 @@
+ $field) {
+ if (isset($_GET["default"]) ? $field["auto_increment"] || preg_match('~text|blob~', $field["type"]) : !isset($field["privileges"][$update ? "update" : "insert"])) {
+ unset($fields[$name]);
+ }
+}
+if ($_POST && !$error && !isset($_GET["select"])) {
+ $location = ($_POST["insert"] ? $_SERVER["REQUEST_URI"] : $SELF . (isset($_GET["default"]) ? "table=" : "select=") . urlencode($_GET["edit"]));
+ if (isset($_POST["delete"])) {
+ query_redirect("DELETE FROM " . idf_escape($_GET["edit"]) . " WHERE " . implode(" AND ", $where) . " LIMIT 1", $location, lang('Item has been deleted.'));
+ } else {
+ $set = array();
+ foreach ($fields as $name => $field) {
+ $val = process_input($name, $field);
+ if (!isset($_GET["default"])) {
+ if ($val !== false || !$update) {
+ $set[] = "\n" . idf_escape($name) . " = " . ($val !== false ? $val : "''");
+ }
+ } elseif ($val !== false) {
+ if ($field["type"] == "timestamp" && $val != "NULL") { //! doesn't allow DEFAULT NULL and no ON UPDATE
+ $set[] = "\nMODIFY " . idf_escape($name) . " timestamp" . ($field["null"] ? " NULL" : "") . " DEFAULT $val" . ($_POST["on_update"][bracket_escape($name)] ? " ON UPDATE CURRENT_TIMESTAMP" : "");
+ } else {
+ $set[] = "\nALTER " . idf_escape($name) . ($val == "NULL" ? " DROP DEFAULT" : " SET DEFAULT $val");
+ }
+ }
+ }
+ if (!$set) {
+ redirect($location);
+ }
+ if (isset($_GET["default"])) {
+ query_redirect("ALTER TABLE " . idf_escape($_GET["edit"]) . implode(",", $set), $location, lang('Default values has been set.'));
+ } elseif ($update) {
+ query_redirect("UPDATE " . idf_escape($_GET["edit"]) . " SET" . implode(",", $set) . "\nWHERE " . implode(" AND ", $where) . " LIMIT 1", $location, lang('Item has been updated.'));
+ } else {
+ query_redirect("INSERT INTO " . idf_escape($_GET["edit"]) . " SET" . implode(",", $set), $location, lang('Item has been inserted.'));
+ }
+ }
+}
+page_header((isset($_GET["default"]) ? lang('Default values') : ($_GET["where"] || (isset($_GET["select"]) && !$_POST["clone"]) ? lang('Edit') : lang('Insert'))), $error, array((isset($_GET["default"]) ? "table" : "select") => $_GET["edit"]), $_GET["edit"]);
+
+unset($row);
+if ($_POST["save"]) {
+ $row = (array) $_POST["fields"];
+} elseif ($where) {
+ $select = array();
+ foreach ($fields as $name => $field) {
+ if (isset($field["privileges"]["select"])) {
+ $select[] = ($_POST["clone"] && $field["auto_increment"] ? "'' AS " : ($field["type"] == "enum" || $field["type"] == "set" ? "1*" . idf_escape($name) . " AS " : "")) . idf_escape($name);
+ }
+ }
+ $row = array();
+ if ($select) {
+ $result = $dbh->query("SELECT " . implode(", ", $select) . " FROM " . idf_escape($_GET["edit"]) . " WHERE " . implode(" AND ", $where) . " LIMIT 1");
+ $row = $result->fetch_assoc();
+ $result->free();
+ }
+}
+?>
+
+
+\n";
+ foreach ($fields as $name => $field) {
+ echo "" . htmlspecialchars($name) . " ";
+ $value = (!isset($row) ? ($_POST["clone"] && $field["auto_increment"] ? "" : ($where ? $field["default"] : null))
+ : (strlen($row[$name]) && ($field["type"] == "enum" || $field["type"] == "set") ? intval($row[$name]) : $row[$name])
+ );
+ input($name, $field, $value);
+ if (isset($_GET["default"]) && $field["type"] == "timestamp") {
+ if (!isset($create) && !$_POST) {
+ //! disable sql_mode NO_FIELD_OPTIONS
+ $create = $dbh->result($dbh->query("SHOW CREATE TABLE " . idf_escape($_GET["edit"])), 1);
+ }
+ $checked = ($_POST ? $_POST["on_update"][bracket_escape($name)] : preg_match("~\n\\s*" . preg_quote(idf_escape($name), '~') . " timestamp.* on update CURRENT_TIMESTAMP~i", $create));
+ echo ' ' . lang('ON UPDATE CURRENT_TIMESTAMP') . ' ';
+ }
+ echo " \n";
+ }
+ echo "\n";
+}
+?>
+
+
+
+ (array) $_POST["check"], "clone" => $_POST["clone"], "all" => $_POST["all"]));
+}
+if ($fields) {
+ echo ' ';
+ if (!isset($_GET["default"]) && !isset($_GET["select"])) {
+ echo ' ';
+ }
+}
+if ($update) {
+ echo ' ';
+}
+?>
+
+
diff --git a/adminer/event.inc.php b/adminer/event.inc.php
new file mode 100644
index 00000000..4eb53b42
--- /dev/null
+++ b/adminer/event.inc.php
@@ -0,0 +1,54 @@
+ "ENABLE", "DISABLED" => "DISABLE", "SLAVESIDE_DISABLED" => "DISABLE ON SLAVE");
+
+if ($_POST && !$error) {
+ if ($_POST["drop"]) {
+ query_redirect("DROP EVENT " . idf_escape($_GET["event"]), substr($SELF, 0, -1), lang('Event has been dropped.'));
+ } elseif (in_array($_POST["INTERVAL_FIELD"], $intervals) && in_array($_POST["STATUS"], $statuses)) {
+ $schedule = "\nON SCHEDULE " . ($_POST["INTERVAL_VALUE"]
+ ? "EVERY '" . $dbh->escape_string($_POST["INTERVAL_VALUE"]) . "' $_POST[INTERVAL_FIELD]"
+ . ($_POST["STARTS"] ? " STARTS '" . $dbh->escape_string($_POST["STARTS"]) . "'" : "")
+ . ($_POST["ENDS"] ? " ENDS '" . $dbh->escape_string($_POST["ENDS"]) . "'" : "") //! ALTER EVENT doesn't drop ENDS - MySQL bug #39173
+ : "AT '" . $dbh->escape_string($_POST["STARTS"]) . "'"
+ ) . " ON COMPLETION" . ($_POST["ON_COMPLETION"] ? "" : " NOT") . " PRESERVE"
+ ;
+ query_redirect((strlen($_GET["event"])
+ ? "ALTER EVENT " . idf_escape($_GET["event"]) . $schedule
+ . ($_GET["event"] != $_POST["EVENT_NAME"] ? "\nRENAME TO " . idf_escape($_POST["EVENT_NAME"]) : "")
+ : "CREATE EVENT " . idf_escape($_POST["EVENT_NAME"]) . $schedule
+ ) . "\n$_POST[STATUS] COMMENT '" . $dbh->escape_string($_POST["EVENT_COMMENT"])
+ . "' DO\n$_POST[EVENT_DEFINITION]"
+ , substr($SELF, 0, -1), (strlen($_GET["event"]) ? lang('Event has been altered.') : lang('Event has been created.')));
+ }
+}
+page_header((strlen($_GET["event"]) ? lang('Alter event') . ": " . htmlspecialchars($_GET["event"]) : lang('Create event')), $error);
+
+$row = array();
+if ($_POST) {
+ $row = $_POST;
+} elseif (strlen($_GET["event"])) {
+ $result = $dbh->query("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "' AND EVENT_NAME = '" . $dbh->escape_string($_GET["event"]) . "'");
+ $row = $result->fetch_assoc();
+ $row["STATUS"] = $statuses[$row["STATUS"]];
+ $result->free();
+}
+?>
+
+
+
+
+
+
+
+ />
+
+
diff --git a/adminer/favicon.ico b/adminer/favicon.ico
new file mode 100644
index 00000000..ef958a09
Binary files /dev/null and b/adminer/favicon.ico differ
diff --git a/adminer/foreign.inc.php b/adminer/foreign.inc.php
new file mode 100644
index 00000000..7d15c64e
--- /dev/null
+++ b/adminer/foreign.inc.php
@@ -0,0 +1,81 @@
+ $val) {
+ $target[$key] = $_POST["target"][$key];
+ }
+ query_redirect("ALTER TABLE " . idf_escape($_GET["foreign"])
+ . (strlen($_GET["name"]) ? "\nDROP FOREIGN KEY " . idf_escape($_GET["name"]) . "," : "")
+ . "\nADD FOREIGN KEY (" . implode(", ", array_map('idf_escape', $source)) . ") REFERENCES " . idf_escape($_POST["table"]) . " (" . implode(", ", array_map('idf_escape', $target)) . ")"
+ . (in_array($_POST["on_delete"], $on_actions) ? " ON DELETE $_POST[on_delete]" : "")
+ . (in_array($_POST["on_update"], $on_actions) ? " ON UPDATE $_POST[on_update]" : "")
+ , $SELF . "table=" . urlencode($_GET["foreign"]), (strlen($_GET["name"]) ? lang('Foreign key has been altered.') : lang('Foreign key has been created.')));
+ }
+}
+page_header(lang('Foreign key'), $error, array("table" => $_GET["foreign"]), $_GET["foreign"]);
+
+$tables = array();
+$result = $dbh->query("SHOW TABLE STATUS");
+while ($row = $result->fetch_assoc()) {
+ if ($row["Engine"] == "InnoDB") {
+ $tables[] = $row["Name"];
+ }
+}
+$result->free();
+
+if ($_POST) {
+ $row = $_POST;
+ ksort($row["source"]);
+ if ($_POST["add"]) {
+ $row["source"][] = "";
+ } elseif ($_POST["change"] || $_POST["change-js"]) {
+ $row["target"] = array();
+ }
+} elseif (strlen($_GET["name"])) {
+ $foreign_keys = foreign_keys($_GET["foreign"]);
+ $row = $foreign_keys[$_GET["name"]];
+ $row["source"][] = "";
+} else {
+ $row = array("table" => $_GET["foreign"], "source" => array(""));
+}
+
+$source = get_vals("SHOW COLUMNS FROM " . idf_escape($_GET["foreign"])); //! no text and blob
+$target = ($_GET["foreign"] === $row["table"] ? $source : get_vals("SHOW COLUMNS FROM " . idf_escape($row["table"])));
+?>
+
+
+
+:
+
+
+
+
+
+
+ $val) {
+ echo "";
+ echo " " . optionlist($source, $val) . " ";
+ echo "" . optionlist($target, $row["target"][$key]) . " ";
+ echo " \n";
+ $j++;
+}
+?>
+
+
+:
+:
+
+
+
+
+ />
+
+
+
diff --git a/adminer/functions.js b/adminer/functions.js
new file mode 100644
index 00000000..825c938b
--- /dev/null
+++ b/adminer/functions.js
@@ -0,0 +1,268 @@
+document.body.className = 'js';
+
+function toggle(id) {
+ var el = document.getElementById(id);
+ el.className = (el.className == 'hidden' ? '' : 'hidden');
+ return true;
+}
+
+function popup(el) {
+ el.getElementsByTagName('span')[0].className = 'popup';
+}
+
+function popdown(el) {
+ el.getElementsByTagName('span')[0].className = 'hidden';
+}
+
+function verify_version(version) {
+ document.cookie = 'adminer_version=0';
+ var script = document.createElement('script');
+ script.src = 'http://www.adminer.org/version.php?version=' + version;
+ document.body.appendChild(script);
+}
+
+function load_jush() {
+ var script = document.createElement('script');
+ script.src = '../externals/jush/jush.js';
+ script.onload = function () {
+ jush.style('../externals/jush/jush.css');
+ jush.highlight_tag('pre');
+ jush.highlight_tag('code');
+ }
+ script.onreadystatechange = function () {
+ if (script.readyState == 'loaded' || script.readyState == 'complete') {
+ script.onload();
+ }
+ }
+ document.body.appendChild(script);
+}
+
+function form_check(el, name) {
+ var elems = el.form.elements;
+ for (var i=0; i < elems.length; i++) {
+ if (name.test(elems[i].name)) {
+ elems[i].checked = el.checked;
+ }
+ }
+}
+
+function form_uncheck(id) {
+ document.getElementById(id).checked = false;
+}
+
+
+
+function where_change(op) {
+ for (var i=0; i < op.form.elements.length; i++) {
+ var el = op.form.elements[i];
+ if (el.name == op.name.substr(0, op.name.length - 4) + '[val]') {
+ el.className = (/NULL$/.test(op.options[op.selectedIndex].text) ? 'hidden' : '');
+ }
+ }
+}
+
+function select_add_row(field) {
+ var row = field.parentNode.cloneNode(true);
+ var selects = row.getElementsByTagName('select');
+ for (var i=0; i < selects.length; i++) {
+ selects[i].name = selects[i].name.replace(/[a-z]\[[0-9]+/, '$&1');
+ selects[i].selectedIndex = 0;
+ }
+ var inputs = row.getElementsByTagName('input');
+ if (inputs.length) {
+ inputs[0].name = inputs[0].name.replace(/[a-z]\[[0-9]+/, '$&1');
+ inputs[0].value = '';
+ inputs[0].className = '';
+ }
+ field.parentNode.parentNode.appendChild(row);
+ field.onchange = function () { };
+}
+
+
+
+var added = '.', row_count;
+
+function editing_add_row(button, allowed) {
+ if (allowed && row_count >= allowed) {
+ return false;
+ }
+ var match = /([0-9]+)(\.[0-9]+)?/.exec(button.name);
+ var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
+ var row = button.parentNode.parentNode;
+ var row2 = row.cloneNode(true);
+ var tags = row.getElementsByTagName('select');
+ var tags2 = row2.getElementsByTagName('select');
+ for (var i=0; i < tags.length; i++) {
+ tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
+ tags2[i].selectedIndex = tags[i].selectedIndex;
+ }
+ tags = row.getElementsByTagName('input');
+ tags2 = row2.getElementsByTagName('input');
+ for (var i=0; i < tags.length; i++) {
+ if (tags[i].name == 'auto_increment_col') {
+ tags[i].value = x;
+ tags2[i].checked = tags[i].checked;
+ tags[i].checked = false;
+ }
+ tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
+ if (/\[(orig|field|comment)/.test(tags[i].name)) {
+ tags[i].value = '';
+ }
+ }
+ row.parentNode.insertBefore(row2, row);
+ tags[0].focus();
+ added += '0';
+ row_count++;
+ return true;
+}
+
+function editing_remove_row(button) {
+ var field = button.form[button.name.replace(/drop_col(.+)/, 'fields$1[field]')];
+ field.parentNode.removeChild(field);
+ button.parentNode.parentNode.style.display = 'none';
+ return true;
+}
+
+function editing_type_change(type) {
+ var name = type.name.substr(0, type.name.length - 6);
+ for (var i=0; i < type.form.elements.length; i++) {
+ var el = type.form.elements[i];
+ if (el.name == name + '[collation]') {
+ el.className = (/char|text|enum|set/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
+ }
+ if (el.name == name + '[unsigned]') {
+ el.className = (/int|float|double|decimal/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
+ }
+ }
+}
+
+function column_comments_click(checked) {
+ var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
+ for (var i=0; i < trs.length; i++) {
+ trs[i].getElementsByTagName('td')[5].className = (checked ? '' : 'hidden');
+ }
+}
+
+function partition_by_change(el) {
+ var partition_table = /RANGE|LIST/.test(el.options[el.selectedIndex].text);
+ el.form['partitions'].className = (partition_table || !el.selectedIndex ? 'hidden' : '');
+ document.getElementById('partition-table').className = (partition_table ? '' : 'hidden');
+}
+
+function partition_name_change(el) {
+ var row = el.parentNode.parentNode.cloneNode(true);
+ row.firstChild.firstChild.value = '';
+ el.parentNode.parentNode.parentNode.appendChild(row);
+ el.onchange = function () {};
+}
+
+
+
+function foreign_add_row(field) {
+ var row = field.parentNode.parentNode.cloneNode(true);
+ var selects = row.getElementsByTagName('select');
+ for (var i=0; i < selects.length; i++) {
+ selects[i].name = selects[i].name.replace(/\]/, '1$&');
+ selects[i].selectedIndex = 0;
+ }
+ field.parentNode.parentNode.parentNode.appendChild(row);
+ field.onchange = function () { };
+}
+
+
+
+function indexes_add_row(field) {
+ var row = field.parentNode.parentNode.cloneNode(true);
+ var spans = row.getElementsByTagName('span');
+ row.getElementsByTagName('td')[1].innerHTML = '' + spans[spans.length - 1].innerHTML + ' ';
+ var selects = row.getElementsByTagName('select');
+ for (var i=0; i < selects.length; i++) {
+ selects[i].name = selects[i].name.replace(/indexes\[[0-9]+/, '$&1');
+ selects[i].selectedIndex = 0;
+ }
+ var input = row.getElementsByTagName('input')[0];
+ input.name = input.name.replace(/indexes\[[0-9]+/, '$&1');
+ input.value = '';
+ field.parentNode.parentNode.parentNode.appendChild(row);
+ field.onchange = function () { };
+}
+
+function indexes_add_column(field) {
+ var column = field.parentNode.cloneNode(true);
+ var select = column.getElementsByTagName('select')[0];
+ select.name = select.name.replace(/\]\[[0-9]+/, '$&1');
+ select.selectedIndex = 0;
+ var input = column.getElementsByTagName('input')[0];
+ input.name = input.name.replace(/\]\[[0-9]+/, '$&1');
+ input.value = '';
+ field.parentNode.parentNode.appendChild(column);
+ field.onchange = function () { };
+}
+
+
+
+var that, x, y, em, table_pos;
+
+function schema_mousedown(el, event) {
+ that = el;
+ x = event.clientX - el.offsetLeft;
+ y = event.clientY - el.offsetTop;
+}
+
+function schema_mousemove(ev) {
+ if (that !== undefined) {
+ ev = ev || event;
+ var left = (ev.clientX - x) / em;
+ var top = (ev.clientY - y) / em;
+ var divs = that.getElementsByTagName('div');
+ var line_set = { };
+ for (var i=0; i < divs.length; i++) {
+ if (divs[i].className == 'references') {
+ var div2 = document.getElementById((divs[i].id.substr(0, 4) == 'refs' ? 'refd' : 'refs') + divs[i].id.substr(4));
+ var ref = (table_pos[divs[i].title] ? table_pos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]);
+ var left1 = -1;
+ var is_top = true;
+ var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1');
+ if (divs[i].parentNode != div2.parentNode) {
+ left1 = Math.min(0, ref[1] - left) - 1;
+ divs[i].style.left = left1 + 'em';
+ divs[i].getElementsByTagName('div')[0].style.width = -left1 + 'em';
+ var left2 = Math.min(0, left - ref[1]) - 1;
+ div2.style.left = left2 + 'em';
+ div2.getElementsByTagName('div')[0].style.width = -left2 + 'em';
+ is_top = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em);
+ }
+ if (!line_set[id]) {
+ var line = document.getElementById(divs[i].id.replace(/^....(.+)-[0-9]+$/, 'refl$1'));
+ var shift = ev.clientY - y - that.offsetTop;
+ line.style.left = (left + left1) + 'em';
+ if (is_top) {
+ line.style.top = (line.offsetTop + shift) / em + 'em';
+ }
+ if (divs[i].parentNode != div2.parentNode) {
+ line = line.getElementsByTagName('div')[0];
+ line.style.height = (line.offsetHeight + (is_top ? -1 : 1) * shift) / em + 'em';
+ }
+ line_set[id] = true;
+ }
+ }
+ }
+ that.style.left = left + 'em';
+ that.style.top = top + 'em';
+ }
+}
+
+function schema_mouseup(ev) {
+ if (that !== undefined) {
+ ev = ev || event;
+ table_pos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ];
+ that = undefined;
+ var date = new Date();
+ date.setMonth(date.getMonth() + 1);
+ var s = '';
+ for (var key in table_pos) {
+ s += '_' + key + ':' + Math.round(table_pos[key][0] * 10000) / 10000 + 'x' + Math.round(table_pos[key][1] * 10000) / 10000;
+ }
+ document.cookie = 'schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search;
+ }
+}
diff --git a/adminer/include/auth.inc.php b/adminer/include/auth.inc.php
new file mode 100644
index 00000000..85f70d5b
--- /dev/null
+++ b/adminer/include/auth.inc.php
@@ -0,0 +1,76 @@
+getMessage() : ($dbh ? $dbh : lang('Invalid credentials.'))) : (isset($_POST["server"]) ? lang('Sessions must be enabled.') : ($_POST ? lang('Session expired, please login again.') : ""))), null);
+ ?>
+
+
+
+ $val) {
+ echo ' ';
+ }
+ ?>
+
+
+
+' . lang('Create new database') . "
\n";
+ echo '' . lang('Privileges') . "
\n";
+ echo '' . lang('Process list') . "
\n";
+ echo "" . lang('MySQL version: %s through PHP extension %s', "server_info < 4.1 ? " class='binary'" : "") . ">$dbh->server_info ", "$dbh->extension ") . "
\n";
+ echo "" . lang('Logged as: %s', "" . htmlspecialchars($dbh->result($dbh->query("SELECT USER()"))) . " ") . "
\n";
+ }
+ page_footer("db");
+}
+
+$dbh->query("SET SQL_QUOTE_SHOW_CREATE=1");
+if (!(strlen($_GET["db"]) ? $dbh->select_db($_GET["db"]) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]))) {
+ if (strlen($_GET["db"])) {
+ unset($_SESSION["databases"][$_GET["server"]]);
+ }
+ connect_error();
+ exit;
+}
+$dbh->query("SET CHARACTER SET utf8");
diff --git a/adminer/include/design.inc.php b/adminer/include/design.inc.php
new file mode 100644
index 00000000..f3046352
--- /dev/null
+++ b/adminer/include/design.inc.php
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+">
+
+
+
+
' . (isset($_GET["server"]) ? htmlspecialchars($_GET["server"]) : lang('Server')) . ' » ';
+ if (is_array($breadcrumb)) {
+ if (strlen($_GET["db"])) {
+ echo '
' . htmlspecialchars($_GET["db"]) . ' » ';
+ }
+ foreach ($breadcrumb as $key => $val) {
+ if (strlen($val)) {
+ echo '
' . htmlspecialchars($val) . ' » ';
+ }
+ }
+ }
+ echo "$title\n";
+ }
+ echo "
$title" . (strlen($title2) ? ": " . htmlspecialchars($title2) : "") . " \n";
+ if ($_SESSION["messages"]) {
+ echo "
" . implode("
\n
", $_SESSION["messages"]) . "
\n";
+ $_SESSION["messages"] = array();
+ }
+ $databases = &$_SESSION["databases"][$_GET["server"]];
+ if (strlen($_GET["db"]) && $databases && !in_array($_GET["db"], $databases, true)) {
+ $databases = null;
+ }
+ if (isset($databases) && !isset($_GET["sql"]) && !isset($_SESSION["coverage"])) {
+ session_write_close();
+ }
+ if ($error) {
+ echo "
$error
\n";
+ }
+}
+
+function page_footer($missing = false) {
+ global $SELF, $dbh, $VERSION;
+ ?>
+
+
+
+
+
+
+
+") { //! pass empty separator if there are no functions in the whole table
+ global $types;
+ $name = htmlspecialchars(bracket_escape($name));
+ echo " ";
+ if ($field["type"] == "enum") {
+ echo ($separator ? " $separator" : "") . (isset($_GET["select"]) ? ' ' . lang('original') . ' ' : "");
+ if ($field["null"] || isset($_GET["default"])) {
+ echo ' ' . ($field["null"] ? 'NULL ' : '') . ' ';
+ }
+ if (!isset($_GET["default"])) {
+ echo ' ';
+ }
+ preg_match_all("~'((?:[^']+|'')*)'~", $field["length"], $matches);
+ foreach ($matches[1] as $i => $val) {
+ $val = stripcslashes(str_replace("''", "'", $val));
+ $checked = (is_int($value) ? $value == $i+1 : $value === $val);
+ echo ' ' . htmlspecialchars($val) . ' ';
+ }
+ } else {
+ $first = ($field["null"] || isset($_GET["default"])) + isset($_GET["select"]);
+ $onchange = ($first ? ' onchange="var f = this.form[\'function[' . addcslashes($name, "\r\n'\\") . ']\']; if (' . $first . ' > f.selectedIndex) f.selectedIndex = ' . $first . ';"' : '');
+ $options = array("");
+ if (!isset($_GET["default"])) {
+ if (preg_match('~char|date|time~', $field["type"])) {
+ $options = (preg_match('~char~', $field["type"]) ? array("", "md5", "sha1", "password", "uuid") : array("", "now"));
+ }
+ if (!isset($_GET["call"]) && (isset($_GET["select"]) || where($_GET))) {
+ if (preg_match('~int|float|double|decimal~', $field["type"])) {
+ $options = array("", "+", "-");
+ }
+ if (preg_match('~date~', $field["type"])) {
+ $options[] = "+ interval";
+ $options[] = "- interval";
+ }
+ if (preg_match('~time~', $field["type"])) {
+ $options[] = "addtime";
+ $options[] = "subtime";
+ }
+ }
+ }
+ if ($field["null"] || isset($_GET["default"])) {
+ array_unshift($options, "NULL");
+ }
+ echo (count($options) > 1 || isset($_GET["select"]) ? '' . (isset($_GET["select"]) ? '' . lang('original') . ' ' : '') . optionlist($options, (isset($value) ? (string) $_POST["function"][$name] : null)) . ' ' : ($separator ? " " : "")) . $separator;
+ if ($field["type"] == "set") { //! 64 bits
+ preg_match_all("~'((?:[^']+|'')*)'~", $field["length"], $matches);
+ foreach ($matches[1] as $i => $val) {
+ $val = stripcslashes(str_replace("''", "'", $val));
+ $checked = (is_int($value) ? ($value >> $i) & 1 : in_array($val, explode(",", $value), true));
+ echo ' ' . htmlspecialchars($val) . ' ';
+ }
+ } elseif (strpos($field["type"], "text") !== false) {
+ echo '' . htmlspecialchars($value) . ' ';
+ } elseif (preg_match('~binary|blob~', $field["type"])) {
+ echo (ini_get("file_uploads") ? ' ' : lang('File uploads are disabled.') . ' ');
+ } else {
+ $maxlength = (!ereg('int', $field["type"]) && preg_match('~^([0-9]+)(,([0-9]+))?$~', $field["length"], $match) ? ($match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0));
+ echo ' ';
+ }
+ }
+}
+
+function process_input($name, $field) {
+ global $dbh;
+ $idf = bracket_escape($name);
+ $function = $_POST["function"][$idf];
+ $value = $_POST["fields"][$idf];
+ if ($field["type"] == "enum" ? $value == -1 : $function == "orig") {
+ return false;
+ } elseif ($field["type"] == "enum" || $field["auto_increment"] ? !strlen($value) : $function == "NULL") {
+ return "NULL";
+ } elseif ($field["type"] == "enum") {
+ return (isset($_GET["default"]) ? "'" . $dbh->escape_string($value) . "'" : intval($value));
+ } elseif ($field["type"] == "set") {
+ return (isset($_GET["default"]) ? "'" . implode(",", array_map(array($dbh, 'escape_string'), (array) $value)) . "'" : array_sum((array) $value));
+ } elseif (preg_match('~binary|blob~', $field["type"])) {
+ $file = get_file($idf);
+ if (!is_string($file)) {
+ return false; //! report errors
+ }
+ return "_binary'" . (is_string($file) ? $dbh->escape_string($file) : "") . "'";
+ } elseif ($field["type"] == "timestamp" && $value == "CURRENT_TIMESTAMP") {
+ return $value;
+ } elseif (preg_match('~^(now|uuid)$~', $function)) {
+ return "$function()";
+ } elseif (preg_match('~^[+-]$~', $function)) {
+ return idf_escape($name) . " $function '" . $dbh->escape_string($value) . "'";
+ } elseif (preg_match('~^[+-] interval$~', $function)) {
+ return idf_escape($name) . " $function " . (preg_match("~^([0-9]+|'[0-9.: -]') [A-Z_]+$~i", $value) ? $value : "'" . $dbh->escape_string($value) . "'") . "";
+ } elseif (preg_match('~^(addtime|subtime)$~', $function)) {
+ return "$function(" . idf_escape($name) . ", '" . $dbh->escape_string($value) . "')";
+ } elseif (preg_match('~^(md5|sha1|password)$~', $function)) {
+ return "$function('" . $dbh->escape_string($value) . "')";
+ } else {
+ return "'" . $dbh->escape_string($value) . "'";
+ }
+}
+
+function edit_type($key, $field, $collations) {
+ global $types, $unsigned, $inout;
+ ?>
+
+ " size="3" />
+(' . lang('collation') . ') ' . optionlist($collations, $field["collation"]) . '' . ($unsigned ? " ' . optionlist($unsigned, $field["unsigned"]) . ' ' : ''); ?>
+escape_string($field["collation"]) . "'" : "")
+ ;
+}
+
+function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0) {
+ global $inout;
+ $column_comments = false;
+ foreach ($fields as $field) {
+ if (strlen($field["comment"])) {
+ $column_comments = true;
+ }
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+>
+
+
+
+ $field) {
+ $i++;
+ $display = (isset($_POST["add"][$i-1]) || (isset($field["field"]) && !$_POST["drop_col"][$i]));
+ ?>
+>
+
+ " maxlength="64" /> " />
+
+
+ checked="checked" />
+ checked="checked" />
+> " maxlength="255" />
+
+ ";
+ echo " ";
+ echo " ";
+ echo " ";
+ echo "\n \n";
+ }
+ return $column_comments;
+}
+
+function process_fields(&$fields) {
+ ksort($fields);
+ $offset = 0;
+ if ($_POST["up"]) {
+ $last = 0;
+ foreach ($fields as $key => $field) {
+ if (key($_POST["up"]) == $key) {
+ unset($fields[$key]);
+ array_splice($fields, $last, 0, array($field));
+ break;
+ }
+ if (isset($field["field"])) {
+ $last = $offset;
+ }
+ $offset++;
+ }
+ }
+ if ($_POST["down"]) {
+ $found = false;
+ foreach ($fields as $key => $field) {
+ if (isset($field["field"]) && $found) {
+ unset($fields[key($_POST["down"])]);
+ array_splice($fields, $offset, 0, array($found));
+ break;
+ }
+ if (key($_POST["down"]) == $key) {
+ $found = $field;
+ }
+ $offset++;
+ }
+ }
+ $fields = array_values($fields);
+ if ($_POST["add"]) {
+ array_splice($fields, key($_POST["add"]), 0, array(array()));
+ }
+}
+
+function normalize_enum($match) {
+ return "'" . str_replace("'", "''", addcslashes(stripcslashes(str_replace($match[0]{0} . $match[0]{0}, $match[0]{0}, substr($match[0], 1, -1))), '\\')) . "'";
+}
+
+function routine($name, $type) {
+ global $dbh, $enum_length, $inout;
+ $aliases = array("bit" => "tinyint", "bool" => "tinyint", "boolean" => "tinyint", "integer" => "int", "double precision" => "float", "real" => "float", "dec" => "decimal", "numeric" => "decimal", "fixed" => "decimal", "national char" => "char", "national varchar" => "varchar");
+ $type_pattern = "([a-z]+)(?:\\s*\\(((?:[^'\")]*|$enum_length)+)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?";
+ $pattern = "\\s*(" . ($type == "FUNCTION" ? "" : implode("|", $inout)) . ")?\\s*(?:`((?:[^`]+|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern";
+ $create = $dbh->result($dbh->query("SHOW CREATE $type " . idf_escape($name)), 2);
+ preg_match("~\\(((?:$pattern\\s*,?)*)\\)" . ($type == "FUNCTION" ? "\\s*RETURNS\\s+$type_pattern" : "") . "\\s*(.*)~is", $create, $match);
+ $fields = array();
+ preg_match_all("~$pattern\\s*,?~is", $match[1], $matches, PREG_SET_ORDER);
+ foreach ($matches as $i => $param) {
+ $data_type = strtolower($param[4]);
+ $fields[$i] = array(
+ "field" => str_replace("``", "`", $param[2]) . $param[3],
+ "type" => (isset($aliases[$data_type]) ? $aliases[$data_type] : $data_type),
+ "length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $param[5]),
+ "unsigned" => strtolower(preg_replace('~\\s+~', ' ', trim("$param[7] $param[6]"))),
+ "inout" => strtoupper($param[1]),
+ "collation" => strtolower($param[8]),
+ );
+ }
+ if ($type != "FUNCTION") {
+ return array("fields" => $fields, "definition" => $match[10]);
+ }
+ $returns = array("type" => $match[10], "length" => $match[11], "unsigned" => $match[13], "collation" => $match[14]);
+ return array("fields" => $fields, "returns" => $returns, "definition" => $match[15]);
+}
diff --git a/adminer/include/export.inc.php b/adminer/include/export.inc.php
new file mode 100644
index 00000000..02b16165
--- /dev/null
+++ b/adminer/include/export.inc.php
@@ -0,0 +1,178 @@
+ $val) {
+ if (preg_match("~[\"\n,]~", $val) || (isset($val) && !strlen($val))) {
+ $row[$key] = '"' . str_replace('"', '""', $val) . '"';
+ }
+ }
+ echo implode(",", $row) . "\n";
+}
+
+function dump_table($table, $style, $is_view = false) {
+ global $dbh;
+ if ($_POST["format"] == "csv") {
+ echo "\xef\xbb\xbf";
+ if ($style) {
+ dump_csv(array_keys(fields($table)));
+ }
+ } elseif ($style) {
+ $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table));
+ if ($result) {
+ if ($style == "DROP+CREATE") {
+ echo "DROP " . ($is_view ? "VIEW" : "TABLE") . " IF EXISTS " . idf_escape($table) . ";\n";
+ }
+ $create = $dbh->result($result, 1);
+ $result->free();
+ echo ($style != "CREATE+ALTER" ? $create : ($is_view ? substr_replace($create, " OR REPLACE", 6, 0) : substr_replace($create, " IF NOT EXISTS", 12, 0))) . ";\n\n";
+ }
+ if ($style == "CREATE+ALTER" && !$is_view) {
+ $query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '" . $dbh->escape_string($table) . "' ORDER BY ORDINAL_POSITION";
+?>
+DELIMITER ;;
+CREATE PROCEDURE adminer_alter () BEGIN
+ DECLARE _column_name, _collation_name, _column_type, after varchar(64) DEFAULT '';
+ DECLARE _column_default longtext;
+ DECLARE _is_nullable char(3);
+ DECLARE _extra varchar(20);
+ DECLARE _column_comment varchar(255);
+ DECLARE done, set_after bool DEFAULT 0;
+ DECLARE add_columns text DEFAULT 'query($query);
+$after = "";
+while ($row = $result->fetch_assoc()) {
+ $row["default"] = (isset($row["COLUMN_DEFAULT"]) ? "'" . $dbh->escape_string($row["COLUMN_DEFAULT"]) . "'" : "NULL");
+ $row["after"] = $dbh->escape_string($after); //! rgt AFTER lft, lft AFTER id doesn't work
+ $row["alter"] = $dbh->escape_string(idf_escape($row["COLUMN_NAME"])
+ . " $row[COLUMN_TYPE]"
+ . ($row["COLLATION_NAME"] ? " COLLATE $row[COLLATION_NAME]" : "")
+ . (isset($row["COLUMN_DEFAULT"]) ? " DEFAULT $row[default]" : "")
+ . ($row["IS_NULLABLE"] == "YES" ? "" : " NOT NULL")
+ . ($row["EXTRA"] ? " $row[EXTRA]" : "")
+ . ($row["COLUMN_COMMENT"] ? " COMMENT '" . $dbh->escape_string($row["COLUMN_COMMENT"]) . "'" : "")
+ . ($after ? " AFTER " . idf_escape($after) : " FIRST")
+ );
+ echo ", ADD $row[alter]";
+ $fields[] = $row;
+ $after = $row["COLUMN_NAME"];
+}
+$result->free();
+?>';
+ DECLARE columns CURSOR FOR ;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
+ SET @alter_table = '';
+ OPEN columns;
+ REPEAT
+ FETCH columns INTO _column_name, _column_default, _is_nullable, _collation_name, _column_type, _extra, _column_comment;
+ IF NOT done THEN
+ SET set_after = 1;
+ CASE _column_nameescape_string($row["COLUMN_NAME"]) . "' THEN
+ SET add_columns = REPLACE(add_columns, ', ADD $row[alter]', '');
+ IF NOT (_column_default <=> $row[default]) OR _is_nullable != '$row[IS_NULLABLE]' OR _collation_name != '$row[COLLATION_NAME]' OR _column_type != '$row[COLUMN_TYPE]' OR _extra != '$row[EXTRA]' OR _column_comment != '" . $dbh->escape_string($row["COLUMN_COMMENT"]) . "' OR after != '$row[after]' THEN
+ SET @alter_table = CONCAT(@alter_table, ', MODIFY $row[alter]');
+ END IF;"; //! don't replace in comment
+}
+?>
+
+ ELSE
+ SET @alter_table = CONCAT(@alter_table, ', DROP ', _column_name);
+ SET set_after = 0;
+ END CASE;
+ IF set_after THEN
+ SET after = _column_name;
+ END IF;
+ END IF;
+ UNTIL done END REPEAT;
+ CLOSE columns;
+ IF @alter_table != '' OR add_columns != '' THEN
+ SET @alter_table = CONCAT('ALTER TABLE ', SUBSTR(CONCAT(add_columns, @alter_table), 2));
+ PREPARE alter_command FROM @alter_table;
+ EXECUTE alter_command;
+ DROP PREPARE alter_command;
+ END IF;
+END;;
+DELIMITER ;
+CALL adminer_alter;
+DROP PROCEDURE adminer_alter;
+
+server_info >= 5) {
+ $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($table, "%_")) . "'");
+ if ($result->num_rows) {
+ echo "DELIMITER ;;\n\n";
+ while ($row = $result->fetch_assoc()) {
+ echo "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . idf_escape($row["Table"]) . " FOR EACH ROW $row[Statement];;\n\n";
+ }
+ echo "DELIMITER ;\n\n";
+ }
+ $result->free();
+ }
+ }
+}
+
+function dump_data($table, $style, $select = "") {
+ global $dbh, $max_packet;
+ if ($style) {
+ if ($_POST["format"] != "csv" && $style == "TRUNCATE+INSERT") {
+ echo "TRUNCATE " . idf_escape($table) . ";\n";
+ }
+ $result = $dbh->query(($select ? $select : "SELECT * FROM " . idf_escape($table))); //! enum and set as numbers, binary as _binary, microtime
+ if ($result) {
+ $length = 0;
+ while ($row = $result->fetch_assoc()) {
+ if ($_POST["format"] == "csv") {
+ dump_csv($row);
+ } else {
+ $insert = "INSERT INTO " . idf_escape($table) . ($select ? " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ")" : "") . " VALUES ";
+ $row2 = array();
+ foreach ($row as $key => $val) {
+ $row2[$key] = (isset($val) ? "'" . $dbh->escape_string($val) . "'" : "NULL");
+ }
+ if ($style == "INSERT+UPDATE") {
+ $set = array();
+ foreach ($row as $key => $val) {
+ $set[] = idf_escape($key) . " = " . (isset($val) ? "'" . $dbh->escape_string($val) . "'" : "NULL");
+ }
+ echo "$insert (" . implode(", ", $row2) . ") ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n";
+ } else {
+ $s = "(" . implode(", ", $row2) . ")";
+ if (!$length) {
+ echo $insert, $s;
+ $length = strlen($insert) + strlen($s);
+ } else {
+ $length += 2 + strlen($s);
+ if ($length < $max_packet) {
+ echo ", ", $s;
+ } else {
+ echo ";\n", $insert, $s;
+ $length = strlen($insert) + strlen($s);
+ }
+ }
+ }
+ }
+ }
+ if ($_POST["format"] != "csv" && $style != "INSERT+UPDATE" && $result->num_rows) {
+ echo ";\n";
+ }
+ $result->free();
+ }
+ }
+}
+
+function dump_headers($identifier, $multi_table = false) {
+ $filename = (strlen($identifier) ? friendly_url($identifier) : "dump");
+ $ext = ($_POST["format"] == "sql" ? "sql" : ($multi_table ? "tar" : "csv"));
+ header("Content-Type: " . ($ext == "tar" ? "application/x-tar" : ($ext == "sql" || $_POST["output"] != "file" ? "text/plain" : "text/csv")) . "; charset=utf-8");
+ header("Content-Disposition: " . ($_POST["output"] == "file" ? "attachment" : "inline") . "; filename=$filename.$ext");
+ return $ext;
+}
+
+$dump_output = "" . lang('open') . " " . lang('save') . " ";
+$dump_format = "" . lang('SQL') . " " . lang('CSV') . " ";
+$max_packet = 0;
diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php
new file mode 100644
index 00000000..9ef2b787
--- /dev/null
+++ b/adminer/include/functions.inc.php
@@ -0,0 +1,252 @@
+ ':1', ']' => ':2', '[' => ':3');
+ return strtr($idf, ($back ? array_flip($trans) : $trans));
+}
+
+function optionlist($options, $selected = null) {
+ $return = "";
+ foreach ($options as $k => $v) {
+ if (is_array($v)) {
+ $return .= '';
+ }
+ foreach ((is_array($v) ? $v : array($v)) as $val) {
+ $return .= '' . htmlspecialchars($val) . ' ';
+ }
+ if (is_array($v)) {
+ $return .= ' ';
+ }
+ }
+ return $return;
+}
+
+function get_vals($query, $column = 0) {
+ global $dbh;
+ $return = array();
+ $result = $dbh->query($query);
+ if ($result) {
+ while ($row = $result->fetch_row()) {
+ $return[] = $row[$column];
+ }
+ $result->free();
+ }
+ return $return;
+}
+
+function unique_idf($row, $indexes) {
+ foreach ($indexes as $index) {
+ if ($index["type"] == "PRIMARY" || $index["type"] == "UNIQUE") {
+ $return = array();
+ foreach ($index["columns"] as $key) {
+ if (!isset($row[$key])) {
+ continue 2;
+ }
+ $return[] = urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($row[$key]);
+ }
+ return $return;
+ }
+ }
+ $return = array();
+ foreach ($row as $key => $val) {
+ $return[] = (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key));
+ }
+ return $return;
+}
+
+function where($where) {
+ global $dbh;
+ $return = array();
+ foreach ((array) $where["where"] as $key => $val) {
+ $key = bracket_escape($key, "back");
+ $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]+|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " = BINARY '" . $dbh->escape_string($val) . "'"; //! enum and set, columns looking like functions
+ }
+ foreach ((array) $where["null"] as $key) {
+ $key = bracket_escape($key, "back");
+ $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]+|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " IS NULL";
+ }
+ return $return;
+}
+
+function where_check($val) {
+ parse_str($val, $check);
+ return where($check);
+}
+
+function process_length($length) {
+ global $enum_length;
+ return (preg_match("~^\\s*(?:$enum_length)(?:\\s*,\\s*(?:$enum_length))*\\s*\$~", $length) && preg_match_all("~$enum_length~", $length, $matches) ? implode(",", $matches[0]) : preg_replace('~[^0-9,+-]~', '', $length));
+}
+
+function redirect($location, $message = null) {
+ if (isset($message)) {
+ $_SESSION["messages"][] = $message;
+ }
+ if (strlen(SID)) {
+ $location .= (strpos($location, "?") === false ? "?" : "&") . SID;
+ }
+ header("Location: " . (strlen($location) ? $location : "."));
+ exit;
+}
+
+function query_redirect($query, $location, $message, $redirect = true, $execute = true, $failed = false) {
+ global $dbh, $error, $SELF;
+ $id = "sql-" . count($_SESSION["messages"]);
+ $sql = "";
+ if ($query) {
+ $sql = " " . lang('SQL command') . " " . htmlspecialchars($query) . '' . lang('Edit') . ' ';
+ $_SESSION["history"][$_GET["server"]][$_GET["db"]][] = $query;
+ }
+ if ($execute) {
+ $failed = !$dbh->query($query);
+ }
+ if ($failed) {
+ $error = htmlspecialchars($dbh->error) . $sql;
+ return false;
+ }
+ if ($redirect) {
+ redirect($location, $message . $sql);
+ }
+ return true;
+}
+
+function queries($query = null) {
+ global $dbh;
+ static $queries = array();
+ if (!isset($query)) {
+ return implode(";\n", $queries);
+ }
+ $queries[] = $query;
+ return $dbh->query($query);
+}
+
+function remove_from_uri($param = "") {
+ $param = "($param|" . session_name() . ")";
+ return preg_replace("~\\?$param=[^&]*&~", '?', preg_replace("~\\?$param=[^&]*\$|&$param=[^&]*~", '', $_SERVER["REQUEST_URI"]));
+}
+
+function print_page($page) {
+ echo " " . ($page == $_GET["page"] ? $page + 1 : '' . ($page + 1) . " ");
+}
+
+function get_file($key) {
+ if (isset($_POST["files"][$key])) {
+ $length = strlen($_POST["files"][$key]);
+ return ($length && $length < 4 ? intval($_POST["files"][$key]) : base64_decode($_POST["files"][$key]));
+ }
+ return (!$_FILES[$key] || $_FILES[$key]["error"] ? $_FILES[$key]["error"] : file_get_contents($_FILES[$key]["tmp_name"]));
+}
+
+function odd($s = ' class="odd"') {
+ static $i = 0;
+ if (!$s) { // reset counter
+ $i = -1;
+ }
+ return ($i++ % 2 ? $s : '');
+}
+
+function select($result, $dbh2 = null) {
+ global $SELF;
+ if (!$result->num_rows) {
+ echo "" . lang('No rows.') . "
\n";
+ } else {
+ echo "\n";
+ $links = array();
+ $indexes = array();
+ $columns = array();
+ $blobs = array();
+ $types = array();
+ odd('');
+ for ($i=0; $row = $result->fetch_row(); $i++) {
+ if (!$i) {
+ echo "";
+ for ($j=0; $j < count($row); $j++) {
+ $field = $result->fetch_field();
+ if (strlen($field->orgtable)) {
+ if (!isset($indexes[$field->orgtable])) {
+ $indexes[$field->orgtable] = array();
+ foreach (indexes($field->orgtable, $dbh2) as $index) {
+ if ($index["type"] == "PRIMARY") {
+ $indexes[$field->orgtable] = array_flip($index["columns"]);
+ break;
+ }
+ }
+ $columns[$field->orgtable] = $indexes[$field->orgtable];
+ }
+ if (isset($columns[$field->orgtable][$field->orgname])) {
+ unset($columns[$field->orgtable][$field->orgname]);
+ $indexes[$field->orgtable][$field->orgname] = $j;
+ $links[$j] = $field->orgtable;
+ }
+ }
+ if ($field->charsetnr == 63) {
+ $blobs[$j] = true;
+ }
+ $types[$j] = $field->type;
+ echo "" . htmlspecialchars($field->name) . " ";
+ }
+ echo " \n";
+ }
+ echo "";
+ foreach ($row as $key => $val) {
+ if (!isset($val)) {
+ $val = "NULL ";
+ } else {
+ if ($blobs[$key] && !is_utf8($val)) {
+ $val = "" . lang('%d byte(s)', strlen($val)) . " "; //! link to download
+ } elseif (!strlen(trim($val))) {
+ $val = " ";
+ } else {
+ $val = nl2br(htmlspecialchars($val));
+ if ($types[$key] == 254) {
+ $val = "$val";
+ }
+ }
+ if (isset($links[$key]) && !$columns[$links[$key]]) {
+ $link = "edit=" . urlencode($links[$key]);
+ foreach ($indexes[$links[$key]] as $col => $j) {
+ $link .= "&where" . urlencode("[" . bracket_escape($col) . "]") . "=" . urlencode($row[$j]);
+ }
+ $val = '' . $val . ' ';
+ }
+ }
+ echo "$val ";
+ }
+ echo " \n";
+ }
+ echo "
\n";
+ }
+ $result->free();
+}
+
+function is_utf8($val) {
+ return (preg_match('~~u', $val) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $val));
+}
+
+function shorten_utf8($string, $length) {
+ preg_match("~^(.{0,$length})(.?)~su", $string, $match);
+ return nl2br(htmlspecialchars($match[1])) . ($match[2] ? "... " : "");
+}
+
+function friendly_url($val) {
+ return preg_replace('~[^a-z0-9_]~i', '-', $val);
+}
+
+function hidden_fields($process, $ignore = array()) {
+ while (list($key, $val) = each($process)) {
+ if (is_array($val)) {
+ foreach ($val as $k => $v) {
+ $process[$key . "[$k]"] = $v;
+ }
+ } elseif (!in_array($key, $ignore)) {
+ echo ' ';
+ }
+ }
+}
diff --git a/adminer/include/lang.inc.php b/adminer/include/lang.inc.php
new file mode 100644
index 00000000..36a58277
--- /dev/null
+++ b/adminer/include/lang.inc.php
@@ -0,0 +1,68 @@
+ 'English', // Jakub Vrána - http://php.vrana.cz
+ 'cs' => 'ÄeÅ¡tina', // Jakub Vrána - http://php.vrana.cz
+ 'sk' => 'SlovenÄina', // Ivan Suchy - http://www.ivansuchy.com
+ 'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be
+ 'es' => 'Español', // Klemens Häckel - http://clickdimension.wordpress.com
+ 'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com
+ 'zh' => 'ç®ä½ä¸æ', // Mr. Lodar
+ 'fr' => 'Français', // Francis Gagné
+ 'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
+ 'et' => 'Eesti', // Priit Kallas
+ 'ru' => 'Ð ÑÑÑкий ÑзÑк', // Juraj Hajdúch
+);
+
+function lang($idf, $number = null) {
+ global $LANG, $translations;
+ $translation = $translations[$idf];
+ if (is_array($translation) && $translation) {
+ $pos = ($number == 1 ? 0 : ((!$number || $number >= 5) && ereg('cs|sk|ru', $LANG) ? 2 : 1));
+ $translation = $translation[$pos];
+ }
+ $args = func_get_args();
+ array_shift($args);
+ return vsprintf((isset($translation) ? $translation : $idf), $args);
+}
+
+function switch_lang() {
+ global $LANG, $langs;
+ echo "\n";
+ hidden_fields($_GET, array('lang'));
+ echo lang('Language') . ":
";
+ foreach ($langs as $lang => $val) {
+ echo "$val ";
+ }
+ echo " \n
\n
\n \n";
+}
+
+if (isset($_GET["lang"])) {
+ $_COOKIE["lang"] = $_GET["lang"];
+ $_SESSION["lang"] = $_GET["lang"];
+}
+
+$LANG = "en";
+if (isset($langs[$_COOKIE["lang"]])) {
+ setcookie("lang", $_GET["lang"], strtotime("+1 month"), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]));
+ $LANG = $_COOKIE["lang"];
+} elseif (isset($langs[$_SESSION["lang"]])) {
+ $LANG = $_SESSION["lang"];
+} else {
+ $accept_language = array();
+ preg_match_all('~([-a-z_]+)(;q=([0-9.]+))?~', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches, PREG_SET_ORDER);
+ foreach ($matches as $match) {
+ $accept_language[str_replace("_", "-", $match[1])] = (isset($match[3]) ? $match[3] : 1);
+ }
+ arsort($accept_language);
+ foreach ($accept_language as $key => $q) {
+ if (isset($langs[$key])) {
+ $LANG = $key;
+ break;
+ }
+ $key = preg_replace('~-.*~', '', $key);
+ if (!isset($accept_language[$key]) && isset($langs[$key])) {
+ $LANG = $key;
+ break;
+ }
+ }
+}
diff --git a/adminer/include/mysql.inc.php b/adminer/include/mysql.inc.php
new file mode 100644
index 00000000..7b9fbb1f
--- /dev/null
+++ b/adminer/include/mysql.inc.php
@@ -0,0 +1,317 @@
+real_connect(
+ (strlen($server) ? $host : ini_get("mysqli.default_host")),
+ (strlen("$server$username") ? $username : ini_get("mysqli.default_user")),
+ (strlen("$server$username$password") ? $password : ini_get("mysqli.default_pw")),
+ null,
+ (is_numeric($port) ? $port : ini_get("mysqli.default_port")),
+ (!is_numeric($port) ? $port : null)
+ );
+ }
+
+ function result($result, $field = 0) {
+ if (!$result) {
+ return false;
+ }
+ $row = $result->_result->fetch_array();
+ return $row[$field];
+ }
+
+ // minification compatibility start
+ function select_db($database) {
+ return parent::select_db($database);
+ }
+
+ function query($query) {
+ $result = parent::query($query);
+ return (is_object($result) ? new Min_Result($result) : $result);
+ }
+
+ function multi_query($query) {
+ return parent::multi_query($query);
+ }
+
+ function store_result() {
+ $result = parent::store_result();
+ return (is_object($result) ? new Min_Result($result) : $result);
+ }
+
+ function next_result() {
+ return parent::next_result();
+ }
+
+ function escape_string($string) {
+ return parent::escape_string($string);
+ }
+ }
+
+ class Min_Result {
+ var $_result, $num_rows;
+
+ function __construct($result) {
+ $this->_result = $result;
+ $this->num_rows = $result->num_rows;
+ }
+
+ function fetch_assoc() {
+ return $this->_result->fetch_assoc();
+ }
+
+ function fetch_row() {
+ return $this->_result->fetch_row();
+ }
+
+ function fetch_field() {
+ return $this->_result->fetch_field();
+ }
+
+ function free() {
+ return $this->_result->free();
+ }
+ // minification compatibility end
+ }
+
+} elseif (extension_loaded("mysql")) {
+ class Min_DB {
+ var $extension = "MySQL", $_link, $_result, $server_info, $affected_rows, $error;
+
+ function connect($server, $username, $password) {
+ $this->_link = @mysql_connect(
+ (strlen($server) ? $server : ini_get("mysql.default_host")),
+ (strlen("$server$username") ? $username : ini_get("mysql.default_user")),
+ (strlen("$server$username$password") ? $password : ini_get("mysql.default_password")),
+ true,
+ 131072 // CLIENT_MULTI_RESULTS for CALL
+ );
+ if ($this->_link) {
+ $this->server_info = mysql_get_server_info($this->_link);
+ } else {
+ $this->error = mysql_error();
+ }
+ return (bool) $this->_link;
+ }
+
+ function select_db($database) {
+ return mysql_select_db($database, $this->_link);
+ }
+
+ function query($query) {
+ $result = @mysql_query($query, $this->_link); // mute mysql.trace_mode
+ if (!$result) {
+ $this->error = mysql_error($this->_link);
+ return false;
+ } elseif ($result === true) {
+ $this->affected_rows = mysql_affected_rows($this->_link);
+ return true;
+ }
+ return new Min_Result($result);
+ }
+
+ function multi_query($query) {
+ return $this->_result = $this->query($query);
+ }
+
+ function store_result() {
+ return $this->_result;
+ }
+
+ function next_result() {
+ return false;
+ }
+
+ function result($result, $field = 0) {
+ if (!$result) {
+ return false;
+ }
+ return mysql_result($result->_result, 0, $field);
+ }
+
+ function escape_string($string) {
+ return mysql_real_escape_string($string, $this->_link);
+ }
+ }
+
+ class Min_Result {
+ var $_result, $_offset = 0, $num_rows;
+
+ function Min_Result($result) {
+ $this->_result = $result;
+ $this->num_rows = mysql_num_rows($result);
+ }
+
+ function fetch_assoc() {
+ return mysql_fetch_assoc($this->_result);
+ }
+
+ function fetch_row() {
+ return mysql_fetch_row($this->_result);
+ }
+
+ function fetch_field() {
+ $row = mysql_fetch_field($this->_result, $this->_offset++);
+ $row->orgtable = $row->table;
+ $row->orgname = $row->name;
+ $row->charsetnr = ($row->blob ? 63 : 0);
+ return $row;
+ }
+
+ function free() {
+ return mysql_free_result($this->_result);
+ }
+ }
+
+} elseif (extension_loaded("pdo_mysql")) {
+ class Min_DB extends Min_PDO {
+ var $extension = "PDO_MySQL";
+
+ function connect($server, $username, $password) {
+ $this->dsn("mysql:host=" . str_replace(":", ";unix_socket=", preg_replace('~:([0-9])~', ';port=\\1', $server)), $username, $password);
+ $this->server_info = $this->result($this->query("SELECT VERSION()"));
+ return true;
+ }
+ }
+
+} else {
+ page_header(lang('No MySQL extension'), lang('None of supported PHP extensions (%s) are available.', 'MySQLi, MySQL, PDO_MySQL'), null);
+ page_footer("auth");
+ exit;
+}
+
+$types = array(
+ "tinyint" => 3, "smallint" => 5, "mediumint" => 8, "int" => 10, "bigint" => 20,
+ "float" => 12, "double" => 21, "decimal" => 66,
+ "date" => 10, "datetime" => 19, "timestamp" => 19, "time" => 10, "year" => 4,
+ "char" => 255, "varchar" => 65535,
+ "binary" => 255, "varbinary" => 65535,
+ "tinytext" => 255, "text" => 65535, "mediumtext" => 16777215, "longtext" => 4294967295,
+ "tinyblob" => 255, "blob" => 65535, "mediumblob" => 16777215, "longblob" => 4294967295,
+ "enum" => 65535, "set" => 64,
+);
+$unsigned = array("", "unsigned", "zerofill", "unsigned zerofill");
+
+function connect() {
+ $dbh = new Min_DB;
+ return ($dbh->connect($_GET["server"], $_SESSION["usernames"][$_GET["server"]], $_SESSION["passwords"][$_GET["server"]]) ? $dbh : $dbh->error);
+}
+
+function get_databases() {
+ $return = &$_SESSION["databases"][$_GET["server"]];
+ if (!isset($return)) {
+ flush();
+ $return = get_vals("SHOW DATABASES");
+ }
+ return $return;
+}
+
+function table_status($table) {
+ global $dbh;
+ $result = $dbh->query("SHOW TABLE STATUS LIKE '" . $dbh->escape_string(addcslashes($table, "%_")) . "'");
+ $return = $result->fetch_assoc();
+ $result->free();
+ return $return;
+}
+
+function fields($table) {
+ global $dbh;
+ $return = array();
+ $result = $dbh->query("SHOW FULL COLUMNS FROM " . idf_escape($table));
+ if ($result) {
+ while ($row = $result->fetch_assoc()) {
+ preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $row["Type"], $match);
+ $return[$row["Field"]] = array(
+ "field" => $row["Field"],
+ "type" => $match[1],
+ "length" => $match[2],
+ "unsigned" => ltrim($match[3] . $match[4]),
+ "default" => (strlen($row["Default"]) || ereg("char", $match[1]) ? $row["Default"] : null),
+ "null" => ($row["Null"] == "YES"),
+ "auto_increment" => ($row["Extra"] == "auto_increment"),
+ "collation" => $row["Collation"],
+ "privileges" => array_flip(explode(",", $row["Privileges"])),
+ "comment" => $row["Comment"],
+ "primary" => ($row["Key"] == "PRI"),
+ );
+ }
+ $result->free();
+ }
+ return $return;
+}
+
+function indexes($table, $dbh2 = null) {
+ global $dbh;
+ if (!is_object($dbh2)) {
+ $dbh2 = $dbh;
+ }
+ $return = array();
+ $result = $dbh2->query("SHOW INDEX FROM " . idf_escape($table));
+ if ($result) {
+ while ($row = $result->fetch_assoc()) {
+ $return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE")));
+ $return[$row["Key_name"]]["columns"][$row["Seq_in_index"]] = $row["Column_name"];
+ $return[$row["Key_name"]]["lengths"][$row["Seq_in_index"]] = $row["Sub_part"];
+ }
+ $result->free();
+ }
+ return $return;
+}
+
+function foreign_keys($table) {
+ global $dbh, $on_actions;
+ static $pattern = '(?:[^`]+|``)+';
+ $return = array();
+ $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table));
+ if ($result) {
+ $create_table = $dbh->result($result, 1);
+ $result->free();
+ preg_match_all("~CONSTRAINT `($pattern)` FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)(?: ON DELETE (" . implode("|", $on_actions) . "))?(?: ON UPDATE (" . implode("|", $on_actions) . "))?~", $create_table, $matches, PREG_SET_ORDER);
+ foreach ($matches as $match) {
+ preg_match_all("~`($pattern)`~", $match[2], $source);
+ preg_match_all("~`($pattern)`~", $match[5], $target);
+ $return[$match[1]] = array(
+ "db" => idf_unescape(strlen($match[4]) ? $match[3] : $match[4]),
+ "table" => idf_unescape(strlen($match[4]) ? $match[4] : $match[3]),
+ "source" => array_map('idf_unescape', $source[1]),
+ "target" => array_map('idf_unescape', $target[1]),
+ "on_delete" => $match[6],
+ "on_update" => $match[7],
+ );
+ }
+ }
+ return $return;
+}
+
+function view($name) {
+ global $dbh;
+ return array("select" => preg_replace('~^(?:[^`]+|`[^`]*`)* AS ~U', '', $dbh->result($dbh->query("SHOW CREATE VIEW " . idf_escape($name)), 1)));
+}
+
+function collations() {
+ global $dbh;
+ $return = array();
+ $result = $dbh->query("SHOW COLLATION");
+ while ($row = $result->fetch_assoc()) {
+ if ($row["Default"] && $return[$row["Charset"]]) {
+ array_unshift($return[$row["Charset"]], $row["Collation"]);
+ } else {
+ $return[$row["Charset"]][] = $row["Collation"];
+ }
+ }
+ $result->free();
+ return $return;
+}
+
+function table_comment(&$row) {
+ if ($row["Engine"] == "InnoDB") {
+ $row["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["Comment"]);
+ }
+}
diff --git a/adminer/include/pdo.inc.php b/adminer/include/pdo.inc.php
new file mode 100644
index 00000000..e7962d22
--- /dev/null
+++ b/adminer/include/pdo.inc.php
@@ -0,0 +1,84 @@
+setAttribute(13, array('Min_PDOStatement')); // PDO::ATTR_STATEMENT_CLASS
+ }
+
+ function select_db($database) {
+ return $this->query("USE " . idf_escape($database));
+ }
+
+ function query($query) {
+ $result = parent::query($query);
+ if (!$result) {
+ $errorInfo = $this->errorInfo();
+ $this->error = $errorInfo[2];
+ return false;
+ }
+ $this->_result = $result;
+ if (!$result->columnCount()) {
+ $this->affected_rows = $result->rowCount();
+ return true;
+ }
+ $result->num_rows = $result->rowCount();
+ return $result;
+ }
+
+ function multi_query($query) {
+ return $this->query($query);
+ }
+
+ function store_result() {
+ return ($this->_result->columnCount() ? $this->_result : true);
+ }
+
+ function next_result() {
+ return $this->_result->nextRowset();
+ }
+
+ function result($result, $field = 0) {
+ if (!$result) {
+ return false;
+ }
+ $row = $result->fetch();
+ return $row[$field];
+ }
+
+ function escape_string($string) {
+ return substr($this->quote($string), 1, -1);
+ }
+ }
+
+ class Min_PDOStatement extends PDOStatement {
+ var $_offset = 0, $num_rows;
+
+ function fetch_assoc() {
+ return $this->fetch(2); // PDO::FETCH_ASSOC
+ }
+
+ function fetch_row() {
+ return $this->fetch(3); // PDO::FETCH_NUM
+ }
+
+ function fetch_field() {
+ $row = (object) $this->getColumnMeta($this->_offset++);
+ $row->orgtable = $row->table;
+ $row->orgname = $row->name;
+ $row->charsetnr = (in_array("blob", $row->flags) ? 63 : 0);
+ return $row;
+ }
+
+ function free() {
+ // $this->__destruct() is not callable
+ }
+ }
+}
diff --git a/adminer/include/sqlite.inc.php b/adminer/include/sqlite.inc.php
new file mode 100644
index 00000000..156d3198
--- /dev/null
+++ b/adminer/include/sqlite.inc.php
@@ -0,0 +1,264 @@
+error = $error;
+ return false;
+ } elseif ($result === true) {
+ $this->affected_rows = parent::changes();
+ return true;
+ }
+ return new Min_Result($result);
+ }
+
+ function escape_string($string) {
+ return sqlite_escape_string($string);
+ }
+
+ function result($result, $field = 0) {
+ if (!$result) {
+ return false;
+ }
+ $row = $result->_result->fetch();
+ return $row[$field];
+ }
+ }
+
+ class Min_Result {
+ var $_result, $num_rows;
+
+ function __construct($result) {
+ $this->_result = $result;
+ $this->num_rows = $result->numRows();
+ }
+
+ function fetch_assoc() {
+ return $this->_result->fetch(SQLITE_ASSOC);
+ }
+
+ function fetch_row() {
+ return $this->_result->fetch(SQLITE_NUM);
+ }
+
+ function fetch_field() {
+ static $column = -1;
+ $column++;
+ return (object) array(
+ "name" => parent::fieldName($column),
+ //! type, orgtable, charsetnr
+ );
+ }
+
+ function free() {
+ }
+ }
+
+ } else {
+
+ class Min_SQLite extends SQLite3 {
+ var $extension = "SQLite3";
+
+ function open($filename) {
+ parent::__construct($filename);
+ }
+
+ function query($query) {
+ $result = @parent::query($query);
+ if (!$result) {
+ $this->error = parent::lastErrorMsg();
+ return false;
+ } elseif ($result === true) {
+ $this->affected_rows = parent::changes();
+ return true;
+ }
+ return new Min_Result($result);
+ }
+
+ function escape_string($string) {
+ return parent::escapeString($string);
+ }
+
+ function result($result, $field = 0) {
+ if (!$result) {
+ return false;
+ }
+ $row = $result->_result->fetchArray();
+ return $row[$field];
+ }
+ }
+
+ class Min_Result {
+ var $_result, $num_rows;
+
+ function __construct($result) {
+ $this->_result = $result;
+ //! $this->num_rows = ;
+ }
+
+ function fetch_assoc() {
+ return $this->_result->fetchArray(SQLITE3_ASSOC);
+ }
+
+ function fetch_row() {
+ return $this->_result->fetchArray(SQLITE3_NUM);
+ }
+
+ function fetch_field() {
+ static $column = -1;
+ $column++;
+ return (object) array(
+ "name" => parent::columnName($column),
+ "type" => parent::columnType($column),
+ //! orgtable, charsetnr
+ );
+ }
+
+ function free() {
+ return $this->_result->finalize();
+ }
+ }
+
+ }
+
+ class Min_DB extends Min_SQLite {
+
+ function __construct() {
+ }
+
+ function select_db($filename) {
+ set_exception_handler('connect_error'); // try/catch is not compatible with PHP 4
+ $this->open($filename);
+ restore_exception_handler();
+ $this->server_info = $this->result($this->query("SELECT sqlite_version()"));
+ return true;
+ }
+
+ function multi_query($query) {
+ return $this->_result = $this->query($query);
+ }
+
+ function store_result() {
+ return $this->_result;
+ }
+
+ function next_result() {
+ return false;
+ }
+ }
+
+} elseif (extension_loaded("pdo_sqlite")) {
+ class Min_DB extends Min_PDO {
+ var $extension = "PDO_SQLite";
+
+ function select_db($filename) {
+ set_exception_handler('connect_error'); // try/catch is not compatible with PHP 4
+ parent::__construct(($_GET["sqlite_version"] == 2 ? "sqlite2" : "sqlite") . ":$filename");
+ restore_exception_handler();
+ $this->setAttribute(13, array('Min_PDOStatement')); // PDO::ATTR_STATEMENT_CLASS
+ $this->server_info = $this->result($this->query("SELECT sqlite_version()"));
+ return true;
+ }
+ }
+
+}
+
+$types = array("text" => 0, "numeric" => 0, "integer" => 0, "real" => 0, "blob" => 0);
+$unsigned = array();
+
+function connect() {
+ return new Min_DB;
+}
+
+function get_databases() {
+ return array();
+}
+
+function table_status($table) {
+ return array();
+}
+
+function fields($table) {
+ global $dbh;
+ $return = array();
+ $result = $dbh->query("PRAGMA table_info(" . idf_escape($table) . ")");
+ while ($row = $result->fetch_assoc()) {
+ preg_match('~^([^( ]+)(?:\\((.+)\\))?$~', $row["Type"], $match);
+ $return[$row["Field"]] = array(
+ "field" => $row["name"],
+ "type" => $match[1],
+ "length" => $match[2],
+ "default" => $row["dflt_value"],
+ "null" => !$row["notnull"],
+ "auto_increment" => false, //!
+ "collation" => $row["Collation"], //!
+ "comment" => "", //!
+ "primary" => $row["pk"],
+ );
+ }
+ $result->free();
+ return $return;
+}
+
+function indexes($table, $dbh2 = null) {
+ global $dbh;
+ $return = array();
+ $result = $dbh->query("PRAGMA index_list(" . idf_escape($table) . ")");
+ while ($row = $result->fetch_assoc()) {
+ $return[$row["name"]]["type"] = ($row["unique"] ? "UNIQUE" : "INDEX");
+ $result1 = $dbh->query("PRAGMA index_info(" . idf_escape($row["name"]) . ")");
+ while ($row1 = $result1->fetch_assoc()) {
+ $return[$row["name"]]["columns"][$row1["seqno"]] = $row1["name"];
+ }
+ $result1->free();
+ }
+ $result->free();
+ //! detect primary key from table definition
+ return $return;
+}
+
+function foreign_keys($table) {
+ global $dbh, $on_actions;
+ static $pattern = '(?:[^`]+|``)+';
+ $return = array();
+ $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table));
+ if ($result) {
+ $create_table = $dbh->result($result, 1);
+ $result->free();
+ preg_match_all("~CONSTRAINT `($pattern)` FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)(?: ON DELETE (" . implode("|", $on_actions) . "))?(?: ON UPDATE (" . implode("|", $on_actions) . "))?~", $create_table, $matches, PREG_SET_ORDER);
+ foreach ($matches as $match) {
+ preg_match_all("~`($pattern)`~", $match[2], $source);
+ preg_match_all("~`($pattern)`~", $match[5], $target);
+ $return[$match[1]] = array(
+ "db" => idf_unescape(strlen($match[4]) ? $match[3] : $match[4]),
+ "table" => idf_unescape(strlen($match[4]) ? $match[4] : $match[3]),
+ "source" => array_map('idf_unescape', $source[1]),
+ "target" => array_map('idf_unescape', $target[1]),
+ "on_delete" => $match[6],
+ "on_update" => $match[7],
+ );
+ }
+ }
+ return $return;
+}
+
+function view($name) {
+ global $dbh;
+ return array("select" => preg_replace('~^(?:[^`]+|`[^`]*`)* AS ~iU', '', $dbh->result($dbh->query("SELECT sql FROM sqlite_master WHERE name = '" . $dbh->escape_string($name) . "'"), 0)));
+}
+
+function collations() {
+ return get_vals("PRAGMA collation_list", 1);
+}
+
+function table_comment(&$row) {
+}
diff --git a/adminer/include/version.inc.php b/adminer/include/version.inc.php
new file mode 100644
index 00000000..5d1cd816
--- /dev/null
+++ b/adminer/include/version.inc.php
@@ -0,0 +1,2 @@
+ $lines) {
+ foreach ($lines as $l => $val) {
+ if (!$_SESSION["coverage"][$filename][$l] || $val > 0) {
+ $_SESSION["coverage"][$filename][$l] = $val;
+ }
+ }
+ }
+ }
+ xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+ register_shutdown_function('save_coverage');
+ if ($_GET["start"]) {
+ return;
+ }
+}
+if (get_magic_quotes_gpc()) {
+ $process = array(&$_GET, &$_POST);
+ while (list($key, $val) = each($process)) {
+ foreach ($val as $k => $v) {
+ unset($process[$key][$k]);
+ if (is_array($v)) {
+ $process[$key][stripslashes($k)] = $v;
+ $process[] = &$process[$key][stripslashes($k)];
+ } else {
+ $process[$key][stripslashes($k)] = stripslashes($v);
+ }
+ }
+ }
+ unset($process);
+}
+set_magic_quotes_runtime(false);
+$SELF = preg_replace('~^[^?]*/([^?]*).*~', '\\1?', $_SERVER["REQUEST_URI"]) . (strlen($_GET["server"]) ? 'server=' . urlencode($_GET["server"]) . '&' : '') . (strlen($_GET["db"]) ? 'db=' . urlencode($_GET["db"]) . '&' : '');
+
+include "./include/version.inc.php";
+include "./include/functions.inc.php";
+include "./include/lang.inc.php";
+include "./lang/$LANG.inc.php";
+include "./include/design.inc.php";
+include "./include/pdo.inc.php";
+include "./include/mysql.inc.php";
+include "./include/auth.inc.php";
+include "./include/connect.inc.php";
+include "./include/editing.inc.php";
+include "./include/export.inc.php";
+
+if (isset($_GET["download"])) {
+ include "./download.inc.php";
+} else { // outputs footer
+ $on_actions = array("RESTRICT", "CASCADE", "SET NULL", "NO ACTION");
+ $enum_length = '\'(?:\'\'|[^\'\\\\]+|\\\\.)*\'|"(?:""|[^"\\\\]+|\\\\.)*"';
+ $inout = array("IN", "OUT", "INOUT");
+ $confirm = " onclick=\"return confirm('" . lang('Are you sure?') . "');\"";
+
+ $error = "";
+ if (isset($_GET["table"])) {
+ include "./table.inc.php";
+ } elseif (isset($_GET["view"])) {
+ include "./view.inc.php";
+ } elseif (isset($_GET["schema"])) {
+ include "./schema.inc.php";
+ } elseif (isset($_GET["dump"])) {
+ include "./dump.inc.php";
+ } elseif (isset($_GET["privileges"])) {
+ include "./privileges.inc.php";
+ } else { // uses CSRF token
+ $token = $_SESSION["tokens"][$_GET["server"]];
+ if ($_POST) {
+ if ($_POST["token"] != $token) {
+ $error = lang('Invalid CSRF token. Send the form again.');
+ }
+ } elseif ($_SERVER["REQUEST_METHOD"] == "POST") {
+ $error = lang('Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.');
+ }
+ if (isset($_GET["default"])) {
+ $_GET["edit"] = $_GET["default"];
+ }
+ if (isset($_GET["select"]) && $_POST && (!$_POST["delete"] && !$_POST["export"] && !$_POST["import"] && !$_POST["save"])) {
+ $_GET["edit"] = $_GET["select"];
+ }
+ if (isset($_GET["callf"])) {
+ $_GET["call"] = $_GET["callf"];
+ }
+ if (isset($_GET["function"])) {
+ $_GET["procedure"] = $_GET["function"];
+ }
+ if (isset($_GET["sql"])) {
+ include "./sql.inc.php";
+ } elseif (isset($_GET["edit"])) {
+ include "./edit.inc.php";
+ } elseif (isset($_GET["create"])) {
+ include "./create.inc.php";
+ } elseif (isset($_GET["indexes"])) {
+ include "./indexes.inc.php";
+ } elseif (isset($_GET["database"])) {
+ include "./database.inc.php";
+ } elseif (isset($_GET["call"])) {
+ include "./call.inc.php";
+ } elseif (isset($_GET["foreign"])) {
+ include "./foreign.inc.php";
+ } elseif (isset($_GET["createv"])) {
+ include "./createv.inc.php";
+ } elseif (isset($_GET["event"])) {
+ include "./event.inc.php";
+ } elseif (isset($_GET["procedure"])) {
+ include "./procedure.inc.php";
+ } elseif (isset($_GET["trigger"])) {
+ include "./trigger.inc.php";
+ } elseif (isset($_GET["user"])) {
+ include "./user.inc.php";
+ } elseif (isset($_GET["processlist"])) {
+ include "./processlist.inc.php";
+ } elseif (isset($_GET["select"])) {
+ include "./select.inc.php";
+ } else {
+ include "./db.inc.php";
+ }
+ }
+ page_footer();
+}
diff --git a/adminer/indexes.inc.php b/adminer/indexes.inc.php
new file mode 100644
index 00000000..c8c3f3b8
--- /dev/null
+++ b/adminer/indexes.inc.php
@@ -0,0 +1,88 @@
+ $column) {
+ if (strlen($column)) {
+ $length = $index["lengths"][$key];
+ $set[] = idf_escape($column) . ($length ? "(" . intval($length) . ")" : "");
+ $columns[count($columns) + 1] = $column;
+ $lengths[count($lengths) + 1] = ($length ? $length : null);
+ }
+ }
+ if ($columns) {
+ foreach ($indexes as $name => $existing) {
+ ksort($existing["columns"]);
+ ksort($existing["lengths"]);
+ if ($index["type"] == $existing["type"] && $existing["columns"] === $columns && $existing["lengths"] === $lengths) {
+ unset($indexes[$name]);
+ continue 2;
+ }
+ }
+ $alter[] = "\nADD $index[type]" . ($index["type"] == "PRIMARY" ? " KEY" : "") . " (" . implode(", ", $set) . ")";
+ }
+ }
+ }
+ foreach ($indexes as $name => $existing) {
+ $alter[] = "\nDROP INDEX " . idf_escape($name);
+ }
+ if (!$alter) {
+ redirect($SELF . "table=" . urlencode($_GET["indexes"]));
+ }
+ query_redirect("ALTER TABLE " . idf_escape($_GET["indexes"]) . implode(",", $alter), $SELF . "table=" . urlencode($_GET["indexes"]), lang('Indexes has been altered.'));
+}
+page_header(lang('Indexes'), $error, array("table" => $_GET["indexes"]), $_GET["indexes"]);
+
+$fields = array_keys(fields($_GET["indexes"]));
+$row = array("indexes" => $indexes);
+if ($_POST) {
+ $row = $_POST;
+ if ($_POST["add"]) {
+ foreach ($row["indexes"] as $key => $index) {
+ if (strlen($index["columns"][count($index["columns"])])) {
+ $row["indexes"][$key]["columns"][] = "";
+ }
+ }
+ $index = end($row["indexes"]);
+ if ($index["type"] || array_filter($index["columns"], 'strlen') || array_filter($index["lengths"], 'strlen')) {
+ $row["indexes"][] = array("columns" => array(1 => ""));
+ }
+ }
+} else {
+ foreach ($row["indexes"] as $key => $index) {
+ $row["indexes"][$key]["columns"][] = "";
+ }
+ $row["indexes"][] = array("columns" => array(1 => ""));
+}
+?>
+
+
+
+
+
+
+
+
+
diff --git a/adminer/lang/cs.inc.php b/adminer/lang/cs.inc.php
new file mode 100644
index 00000000..6155aee0
--- /dev/null
+++ b/adminer/lang/cs.inc.php
@@ -0,0 +1,218 @@
+ 'PÅihlásit se',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'Odhlášenà probÄhlo v poÅádku.',
+ 'Invalid credentials.' => 'Neplatné pÅihlaÅ¡ovacà údaje.',
+ 'Server' => 'Server',
+ 'Username' => 'Uživatel',
+ 'Password' => 'Heslo',
+ 'Select database' => 'Vybrat databázi',
+ 'Invalid database.' => 'Nesprávná databáze.',
+ 'Create new database' => 'VytvoÅit novou databázi',
+ 'Table has been dropped.' => 'Tabulka byla odstranÄna.',
+ 'Table has been altered.' => 'Tabulka byla zmÄnÄna.',
+ 'Table has been created.' => 'Tabulka byla vytvoÅena.',
+ 'Alter table' => 'PozmÄnit tabulku',
+ 'Create table' => 'VytvoÅit tabulku',
+ 'Table name' => 'Název tabulky',
+ 'engine' => 'úložiÅ¡tÄ',
+ 'collation' => 'porovnávánÃ',
+ 'Column name' => 'Název sloupce',
+ 'Type' => 'Typ',
+ 'Length' => 'Délka',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto Increment',
+ 'Options' => 'Volby',
+ 'Save' => 'Uložit',
+ 'Drop' => 'Odstranit',
+ 'Database has been dropped.' => 'Databáze byla odstranÄna.',
+ 'Database has been created.' => 'Databáze byla vytvoÅena.',
+ 'Database has been renamed.' => 'Databáze byla pÅejmenována.',
+ 'Database has been altered.' => 'Databáze byla zmÄnÄna.',
+ 'Alter database' => 'PozmÄnit databázi',
+ 'Create database' => 'VytvoÅit databázi',
+ 'SQL command' => 'SQL pÅÃkaz',
+ 'Dump' => 'Export',
+ 'Logout' => 'Odhlásit',
+ 'database' => 'databáze',
+ 'Use' => 'Vybrat',
+ 'No tables.' => 'Žádné tabulky.',
+ 'select' => 'vypsat',
+ 'Create new table' => 'VytvoÅit novou tabulku',
+ 'Item has been deleted.' => 'Položka byla smazána.',
+ 'Item has been updated.' => 'Položka byla aktualizována.',
+ 'Item has been inserted.' => 'Položka byla vložena.',
+ 'Edit' => 'Upravit',
+ 'Insert' => 'Vložit',
+ 'Save and insert next' => 'Uložit a vložit dalÅ¡Ã',
+ 'Delete' => 'Smazat',
+ 'Database' => 'Databáze',
+ 'Routines' => 'Procedury a funkce',
+ 'Indexes has been altered.' => 'Indexy byly zmÄnÄny.',
+ 'Indexes' => 'Indexy',
+ 'Alter indexes' => 'PozmÄnit indexy',
+ 'Add next' => 'PÅidat dalÅ¡Ã',
+ 'Language' => 'Jazyk',
+ 'Select' => 'Vypsat',
+ 'New item' => 'Nová položka',
+ 'Search' => 'Vyhledat',
+ 'Sort' => 'SetÅÃdit',
+ 'ASC' => 'vzestupnÄ',
+ 'DESC' => 'sestupnÄ',
+ 'Limit' => 'Limit',
+ 'No rows.' => 'Žádné Åádky.',
+ 'Action' => 'Akce',
+ 'edit' => 'upravit',
+ 'Page' => 'Stránka',
+ 'Query executed OK, %d row(s) affected.' => array('PÅÃkaz probÄhl v poÅádku, byl zmÄnÄn %d záznam.', 'PÅÃkaz probÄhl v poÅádku, byly zmÄnÄny %d záznamy.', 'PÅÃkaz probÄhl v poÅádku, bylo zmÄnÄno %d záznamů.'),
+ 'Error in query' => 'Chyba v dotazu',
+ 'Execute' => 'Provést',
+ 'Table' => 'Tabulka',
+ 'Foreign keys' => 'Cizà klÃÄe',
+ 'Triggers' => 'Triggery',
+ 'View' => 'Pohled',
+ 'Unable to select the table' => 'NepodaÅilo se vypsat tabulku',
+ 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formuláŠznovu.',
+ 'Comment' => 'KomentáÅ',
+ 'Default values has been set.' => 'Výchozà hodnoty byly nastaveny.',
+ 'Default values' => 'Výchozà hodnoty',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'Zobrazit komentáÅe sloupců',
+ '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtů'),
+ 'No commands to execute.' => 'Žádné pÅÃkazy k vykonánÃ.',
+ 'Unable to upload a file.' => 'NepodaÅilo se nahrát soubor.',
+ 'File upload' => 'Nahránà souboru',
+ 'File uploads are disabled.' => 'Nahrávánà souborů nenà povoleno.',
+ 'Routine has been called, %d row(s) affected.' => array('Procedura byla zavolána, byl zmÄnÄn %d záznam.', 'Procedura byla zavolána, byly zmÄnÄny %d záznamy.', 'Procedura byla zavolána, bylo zmÄnÄno %d záznamů.'),
+ 'Call' => 'Zavolat',
+ 'No MySQL extension' => 'Žádná MySQL extenze',
+ 'None of supported PHP extensions (%s) are available.' => 'Nenà dostupná žádná z podporovaných PHP extenzà (%s).',
+ 'Sessions must be enabled.' => 'Session promÄnné musà být povolené.',
+ 'Session expired, please login again.' => 'Session vyprÅ¡ela, pÅihlaÅ¡te se prosÃm znovu.',
+ 'Text length' => 'Délka textů',
+ 'Foreign key has been dropped.' => 'Cizà klÃÄ byl odstranÄn.',
+ 'Foreign key has been altered.' => 'Cizà klÃÄ byl zmÄnÄn.',
+ 'Foreign key has been created.' => 'Cizà klÃÄ byl vytvoÅen.',
+ 'Foreign key' => 'Cizà klÃÄ',
+ 'Target table' => 'CÃlová tabulka',
+ 'Change' => 'ZmÄnit',
+ 'Source' => 'Zdroj',
+ 'Target' => 'CÃl',
+ 'Add column' => 'PÅidat sloupec',
+ 'Alter' => 'ZmÄnit',
+ 'Add foreign key' => 'PÅidat cizà klÃÄ',
+ 'ON DELETE' => 'PÅi smazánÃ',
+ 'ON UPDATE' => 'PÅi zmÄnÄ',
+ 'Index Type' => 'Typ indexu',
+ 'Column (length)' => 'Sloupec (délka)',
+ 'View has been dropped.' => 'Pohled byl odstranÄn.',
+ 'View has been altered.' => 'Pohled byl zmÄnÄn.',
+ 'View has been created.' => 'Pohled byl vytvoÅen.',
+ 'Alter view' => 'PozmÄnit pohled',
+ 'Create view' => 'VytvoÅit pohled',
+ 'Name' => 'Název',
+ 'Process list' => 'Seznam procesů',
+ '%d process(es) has been killed.' => array('Byl ukonÄen %d proces.', 'Byly ukonÄeny %d procesy.', 'Bylo ukonÄeno %d procesů.'),
+ 'Kill' => 'UkonÄit',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Název parametru',
+ 'Database schema' => 'Schéma databáze',
+ 'Create procedure' => 'VytvoÅit proceduru',
+ 'Create function' => 'VytvoÅit funkci',
+ 'Routine has been dropped.' => 'Procedura byla odstranÄna.',
+ 'Routine has been altered.' => 'Procedura byla zmÄnÄna.',
+ 'Routine has been created.' => 'Procedura byla vytvoÅena.',
+ 'Alter function' => 'ZmÄnit funkci',
+ 'Alter procedure' => 'ZmÄnit proceduru',
+ 'Return type' => 'Návratový typ',
+ 'Add trigger' => 'PÅidat trigger',
+ 'Trigger has been dropped.' => 'Trigger byl odstranÄn.',
+ 'Trigger has been altered.' => 'Trigger byl zmÄnÄn.',
+ 'Trigger has been created.' => 'Trigger byl vytvoÅen.',
+ 'Alter trigger' => 'ZmÄnit trigger',
+ 'Create trigger' => 'VytvoÅit trigger',
+ 'Time' => 'Äas',
+ 'Event' => 'Událost',
+ 'MySQL version: %s through PHP extension %s' => 'Verze MySQL: %s pÅes PHP extenzi %s',
+ '%d row(s)' => array('%d Åádek', '%d Åádky', '%d Åádků'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'PÅi zmÄnÄ aktuálnà Äas',
+ 'Remove' => 'Odebrat',
+ 'Are you sure?' => 'Opravdu?',
+ 'Privileges' => 'OprávnÄnÃ',
+ 'Create user' => 'VytvoÅit uživatele',
+ 'User has been dropped.' => 'Uživatel byl odstranÄn.',
+ 'User has been altered.' => 'Uživatel byl zmÄnÄn.',
+ 'User has been created.' => 'Uživatel byl vytvoÅen.',
+ 'Hashed' => 'Zahašované',
+ 'Column' => 'Sloupec',
+ 'Routine' => 'Procedura',
+ 'Grant' => 'Povolit',
+ 'Revoke' => 'Zakázat',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'PÅÃliÅ¡ velká POST data. ZmenÅ¡ete data nebo zvyÅ¡te hodnotu konfiguraÄnà direktivy "post_max_size".',
+ 'Logged as: %s' => 'PÅihlášen jako: %s',
+ 'Move up' => 'PÅesunout nahoru',
+ 'Move down' => 'PÅesunout dolů',
+ 'Functions' => 'Funkce',
+ 'Aggregation' => 'Agregace',
+ 'Export' => 'Export',
+ 'Output' => 'Výstup',
+ 'open' => 'otevÅÃt',
+ 'save' => 'uložit',
+ 'Format' => 'Formát',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Tables' => 'Tabulky',
+ 'Data' => 'Data',
+ 'Event has been dropped.' => 'Událost byla odstranÄna.',
+ 'Event has been altered.' => 'Událost byla zmÄnÄna.',
+ 'Event has been created.' => 'Událost byla vytvoÅena.',
+ 'Alter event' => 'PozmÄnit událost',
+ 'Create event' => 'VytvoÅit událost',
+ 'At given time' => 'V daný Äas',
+ 'Every' => 'Každých',
+ 'Events' => 'Události',
+ 'Schedule' => 'Plán',
+ 'Start' => 'ZaÄátek',
+ 'End' => 'Konec',
+ 'Status' => 'Stav',
+ 'On completion preserve' => 'Po dokonÄenà zachovat',
+ 'Tables and views' => 'Tabulky a pohledy',
+ 'Data Length' => 'Velikost dat',
+ 'Index Length' => 'Velikost indexů',
+ 'Data Free' => 'Volné mÃsto',
+ 'Collation' => 'PorovnávánÃ',
+ 'Analyze' => 'Analyzovat',
+ 'Optimize' => 'Optimalizovat',
+ 'Check' => 'Zkontrolovat',
+ 'Repair' => 'Opravit',
+ 'Truncate' => 'Promazat',
+ 'Tables have been truncated.' => 'Tabulky byly promazány.',
+ 'Rows' => 'Åádků',
+ ',' => ' ',
+ 'Tables have been moved.' => 'Tabulky byly pÅesunuty',
+ 'Move to other database' => 'PÅesunout do jiné databáze',
+ 'Move' => 'PÅesunout',
+ 'Engine' => 'ÃložiÅ¡tÄ',
+ 'Save and continue edit' => 'Uložit a pokraÄovat v editaci',
+ 'clone' => 'klonovat',
+ 'original' => 'původnÃ',
+ '%d item(s) have been affected.' => array('Byl ovlivnÄn %d záznam.', 'Byly ovlivnÄny %d záznamy.', 'Bylo ovlivnÄno %d záznamů.'),
+ 'whole result' => 'celý výsledek',
+ 'Tables have been dropped.' => 'Tabulky byly odstranÄny.',
+ 'Clone' => 'Klonovat',
+ 'Partition by' => 'RozdÄlit podle',
+ 'Partitions' => 'OddÃly',
+ 'Partition name' => 'Název oddÃlu',
+ 'Values' => 'Hodnoty',
+ '%d row(s) has been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'),
+ 'CSV Import' => 'Import CSV',
+ 'Import' => 'Import',
+ 'Table structure' => 'Struktura tabulky',
+ 'Select table' => 'Vypsat tabulku',
+ 'Stop on error' => 'Zastavit pÅi chybÄ',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Byl pÅekroÄen maximálnà povolený poÄet polÃ. ZvyÅ¡te prosÃm %s a %s.',
+ '(anywhere)' => '(kdekoliv)',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/de.inc.php b/adminer/lang/de.inc.php
new file mode 100644
index 00000000..3a724772
--- /dev/null
+++ b/adminer/lang/de.inc.php
@@ -0,0 +1,217 @@
+ 'Login',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'Abmeldung erfolgreich.',
+ 'Invalid credentials.' => 'Ungültige Anmelde-Informationen.',
+ 'Server' => 'Server',
+ 'Username' => 'Benutzer',
+ 'Password' => 'Passwort',
+ 'Select database' => 'Datenbank auswählen',
+ 'Invalid database.' => 'Datenbank ungültig.',
+ 'Create new database' => 'Neue Datenbank',
+ 'Table has been dropped.' => 'Tabelle entfernt.',
+ 'Table has been altered.' => 'Tabelle geändert.',
+ 'Table has been created.' => 'Tabelle erstellt.',
+ 'Alter table' => 'Tabelle ändern',
+ 'Create table' => 'Neue Tabelle erstellen',
+ 'Table name' => 'Name der Tabelle',
+ 'engine' => 'Motor',
+ 'collation' => 'Kollation',
+ 'Column name' => 'Spaltenname',
+ 'Type' => 'Typ',
+ 'Length' => 'Länge',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto-Inkrement',
+ 'Options' => 'Optionen',
+ 'Save' => 'Speichern',
+ 'Drop' => 'Entfernen',
+ 'Database has been dropped.' => 'Datenbank entfernt.',
+ 'Database has been created.' => 'Datenbank erstellt.',
+ 'Database has been renamed.' => 'Datenbank umbenannt.',
+ 'Database has been altered.' => 'Datenbank geändert.',
+ 'Alter database' => 'Datenbank ändern',
+ 'Create database' => 'Neue Datenbank',
+ 'SQL command' => 'SQL-Query',
+ 'Dump' => 'Export',
+ 'Logout' => 'Abmelden',
+ 'database' => 'Datenbank',
+ 'Use' => 'Benutzung',
+ 'No tables.' => 'Keine Tabellen.',
+ 'select' => 'zeigen',
+ 'Create new table' => 'Neue Tabelle',
+ 'Item has been deleted.' => 'Datensatz gelöscht.',
+ 'Item has been updated.' => 'Datensatz geändert.',
+ 'Item has been inserted.' => 'Datensatz hinzugefügt.',
+ 'Edit' => 'Ãndern',
+ 'Insert' => 'Hinzufügen',
+ 'Save and insert next' => 'Speichern und nächsten hinzufügen',
+ 'Delete' => 'Entfernen',
+ 'Database' => 'Datenbank',
+ 'Routines' => 'Prozeduren',
+ 'Indexes has been altered.' => 'Indizes geändert.',
+ 'Indexes' => 'Indizes',
+ 'Alter indexes' => 'Indizes ändern',
+ 'Add next' => 'Hinzufügen',
+ 'Language' => 'Sprache',
+ 'Select' => 'Daten zeigen von',
+ 'New item' => 'Neuer Datensatz',
+ 'Search' => 'Suchen',
+ 'Sort' => 'Ordnen',
+ 'DESC' => 'absteigend',
+ 'Limit' => 'Begrenzung',
+ 'No rows.' => 'Keine Daten.',
+ 'Action' => 'Aktion',
+ 'edit' => 'ändern',
+ 'Page' => 'Seite',
+ 'Query executed OK, %d row(s) affected.' => array('Abfrage ausgeführt, %d Datensatz betroffen.', 'Abfrage ausgeführt, %d Datensätze betroffen.'),
+ 'Error in query' => 'Fehler in der SQL-Abfrage',
+ 'Execute' => 'Ausführen',
+ 'Table' => 'Tabelle',
+ 'Foreign keys' => 'Fremdschlüssel',
+ 'Triggers' => 'Trigger',
+ 'View' => 'View',
+ 'Unable to select the table' => 'Tabelle kann nicht ausgewählt werden',
+ 'Invalid CSRF token. Send the form again.' => 'CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.',
+ 'Comment' => 'Kommentar',
+ 'Default values has been set.' => 'Standard Vorgabewerte sind erstellt worden.',
+ 'Default values' => 'Vorgabewerte festlegen',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'Spaltenkomentare zeigen',
+ '%d byte(s)' => array('%d Byte', '%d Bytes'),
+ 'No commands to execute.' => 'Kein Kommando vorhanden.',
+ 'Unable to upload a file.' => 'Unmöglich Dateien hochzuladen.',
+ 'File upload' => 'Datei importieren',
+ 'File uploads are disabled.' => 'Importieren von Dateien abgeschaltet.',
+ 'Routine has been called, %d row(s) affected.' => array('Kommando SQL ausgeführt, %d Datensatz betroffen.', 'Kommando SQL ausgeführt, %d Datensätze betroffen.'),
+ 'Call' => 'Aufrufen',
+ 'No MySQL extension' => 'Keine MySQL-Erweiterungen installiert',
+ 'None of supported PHP extensions (%s) are available.' => 'Keine der unterstützten PHP-Erweiterungen (%s) ist vorhanden.',
+ 'Sessions must be enabled.' => 'Sitzungen müssen aktiviert sein.',
+ 'Session expired, please login again.' => 'Sitzungsdauer abgelaufen, bitte erneut anmelden.',
+ 'Text length' => 'Textlänge',
+ 'Foreign key has been dropped.' => 'Fremdschlüssel entfernt.',
+ 'Foreign key has been altered.' => 'Fremdschlüssel geändert.',
+ 'Foreign key has been created.' => 'Fremdschlüssel erstellt.',
+ 'Foreign key' => 'Fremdschlüssel',
+ 'Target table' => 'Zieltabelle',
+ 'Change' => 'Ãndern',
+ 'Source' => 'Ursprung',
+ 'Target' => 'Ziel',
+ 'Add column' => 'Spalte hinzufügen',
+ 'Alter' => 'Ãndern',
+ 'Add foreign key' => 'Fremdschlüssel hinzufügen',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'Index-Typ',
+ 'Column (length)' => 'Spalte (Länge)',
+ 'View has been dropped.' => 'View entfernt.',
+ 'View has been altered.' => 'View geändert.',
+ 'View has been created.' => 'View erstellt.',
+ 'Alter view' => 'View ändern',
+ 'Create view' => 'Neue View erstellen',
+ 'Name' => 'Name',
+ 'Process list' => 'Prozessliste',
+ '%d process(es) has been killed.' => array('%d Prozess gestoppt.', '%d Prozesse gestoppt.'),
+ 'Kill' => 'Anhalten',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Name des Parameters',
+ 'Database schema' => 'Datenbankschema',
+ 'Create procedure' => 'Neue Prozedur',
+ 'Create function' => 'Neue Funktion',
+ 'Routine has been dropped.' => 'Prozedur entfernt.',
+ 'Routine has been altered.' => 'Prozedur geändert.',
+ 'Routine has been created.' => 'Prozedur erstellt.',
+ 'Alter function' => 'Funktion ändern',
+ 'Alter procedure' => 'Prozedur ändern',
+ 'Return type' => 'Typ des Rückgabewertes',
+ 'Add trigger' => 'Trigger hinzufügen',
+ 'Trigger has been dropped.' => 'Trigger entfernt.',
+ 'Trigger has been altered.' => 'Trigger geändert.',
+ 'Trigger has been created.' => 'Trigger erstellt.',
+ 'Alter trigger' => 'Trigger ändern',
+ 'Create trigger' => 'Trigger hinzufügen',
+ 'Time' => 'Zeitpunkt',
+ 'Event' => 'Ereignis',
+ 'MySQL version: %s through PHP extension %s' => 'Version MySQL: %s, mit PHP-Erweiterung %s',
+ '%d row(s)' => array('%d Datensatz', '%d Datensätze'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
+ 'Remove' => 'Entfernen',
+ 'Are you sure?' => 'Sind Sie sicher ?',
+ 'Privileges' => 'Rechte',
+ 'Create user' => 'Neuer Benutzer',
+ 'User has been dropped.' => 'Benutzer entfernt.',
+ 'User has been altered.' => 'Benutzer geändert.',
+ 'User has been created.' => 'Benutzer erstellt.',
+ 'Hashed' => 'Gehashed',
+ 'Column' => 'Spalte',
+ 'Routine' => 'Routine',
+ 'Grant' => 'Erlauben',
+ 'Revoke' => 'Verbieten',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST data zu gross. Reduzieren Sie die Grösse oder vergrössern Sie den Wert "post_max_size" in der Konfiguration.',
+ 'Logged as: %s' => 'Angemeldet als: %s',
+ 'Move up' => 'Nach oben',
+ 'Move down' => 'Nach unten',
+ 'Functions' => 'Funktionen',
+ 'Aggregation' => 'Aggregationen',
+ 'Export' => 'Exportieren',
+ 'Output' => 'Ergebnis',
+ 'open' => 'zeigen',
+ 'save' => 'Datei',
+ 'Format' => 'Format',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Tables' => 'Tabellen',
+ 'Data' => 'Daten',
+ 'Event has been dropped.' => 'Ereignis entfernt.',
+ 'Event has been altered.' => 'Ereignis geändert.',
+ 'Event has been created.' => 'Ereignis erstellt.',
+ 'Alter event' => 'Ereignis ändern',
+ 'Create event' => 'Ereignis erstellen',
+ 'At given time' => 'Zur angegebenen Zeit',
+ 'Every' => 'Jede',
+ 'Events' => 'Ereignisse',
+ 'Schedule' => 'Zeitplan',
+ 'Start' => 'Start',
+ 'End' => 'Ende',
+ 'Status' => 'Status',
+ 'On completion preserve' => 'Nach der Ausführung erhalten',
+ 'Tables and views' => 'Tabellen und Views',
+ 'Data Length' => 'Datengrösse',
+ 'Index Length' => 'Indexgrösse',
+ 'Data Free' => 'Freier Bereich',
+ 'Collation' => 'Collation',
+ 'Analyze' => 'Analysieren',
+ 'Optimize' => 'Optimisieren',
+ 'Check' => 'Prüfen',
+ 'Repair' => 'Reparieren',
+ 'Truncate' => 'Entleeren (truncate)',
+ 'Tables have been truncated.' => 'Tabellen sind entleert worden (truncate).',
+ 'Rows' => 'Datensätze',
+ ',' => ' ',
+ 'Tables have been moved.' => 'Tabellen verschoben.',
+ 'Move to other database' => 'In andere Datenbank verschieben',
+ 'Move' => 'Verschieben',
+ 'Engine' => 'Motor',
+ 'Save and continue edit' => 'Speichern und weiter bearbeiten',
+ 'clone' => 'klonen',
+ 'original' => 'original',
+ 'Tables have been dropped.' => 'Tabellen wurden entfernt (drop).',
+ '%d item(s) have been affected.' => array('%d Artikel betroffen.', '%d Artikel betroffen.'),
+ 'whole result' => 'gesamtes Resultat',
+ 'Clone' => 'Klonen',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Die maximal erlaubte Anzahl der Felder ist überschritten. Bitte %s und %s erhöhen.',
+ 'Partition by' => 'Partitionieren um',
+ 'Partitions' => 'Partitionen',
+ 'Partition name' => 'Name der Partition',
+ 'Values' => 'Werte',
+ '%d row(s) has been imported.' => array('%d Datensatz importiert.', '%d Datensätze wurden importiert.'),
+ 'Table structure' => 'Tabellensruktur',
+ '(anywhere)' => '(beliebig)',
+ 'CSV Import' => 'Importiere CSV',
+ 'Import' => 'Importieren',
+ 'Stop on error' => 'Bei Fehler anhaltan',
+ 'Select table' => 'Tabelle auswählen',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/en.inc.php b/adminer/lang/en.inc.php
new file mode 100644
index 00000000..414c91a9
--- /dev/null
+++ b/adminer/lang/en.inc.php
@@ -0,0 +1,10 @@
+ array('Query executed OK, %d row affected.', 'Query executed OK, %d rows affected.'),
+ '%d byte(s)' => array('%d byte', '%d bytes'),
+ 'Routine has been called, %d row(s) affected.' => array('Routine has been called, %d row affected.', 'Routine has been called, %d rows affected.'),
+ '%d process(es) has been killed.' => array('%d process has been killed.', '%d processes have been killed.'),
+ '%d row(s)' => array('%d row', '%d rows'),
+ '%d item(s) have been affected.' => array('%d item have been affected.', '%d items have been affected.'),
+ '%d row(s) has been imported.' => array('%d row has been imported.', '%d rows has been imported.'),
+);
diff --git a/adminer/lang/es.inc.php b/adminer/lang/es.inc.php
new file mode 100644
index 00000000..9b422c56
--- /dev/null
+++ b/adminer/lang/es.inc.php
@@ -0,0 +1,217 @@
+ 'Login',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'Salida exitosa.',
+ 'Invalid credentials.' => 'Autenticación fallada.',
+ 'Server' => 'Servidor',
+ 'Username' => 'Usuario',
+ 'Password' => 'Contraseña',
+ 'Select database' => 'Seleccionar Base de datos',
+ 'Invalid database.' => 'Base de datos inválida.',
+ 'Create new database' => 'Nueva Base de datos',
+ 'Table has been dropped.' => 'Tabla eliminada.',
+ 'Table has been altered.' => 'Tabla modificada.',
+ 'Table has been created.' => 'Tabla creada.',
+ 'Alter table' => 'Modificar tabla',
+ 'Create table' => 'Crear tabla',
+ 'Table name' => 'Nombre de tabla',
+ 'engine' => 'motor',
+ 'collation' => 'colación',
+ 'Column name' => 'Nombre de columna',
+ 'Type' => 'Tipo',
+ 'Length' => 'Longitud',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto increment',
+ 'Options' => 'Opciones',
+ 'Save' => 'Guardar',
+ 'Drop' => 'Eliminar',
+ 'Database has been dropped.' => 'Base de datos eliminada.',
+ 'Database has been created.' => 'Base de datos creada.',
+ 'Database has been renamed.' => 'Base de datos renombrada.',
+ 'Database has been altered.' => 'Base de datos modificada.',
+ 'Alter database' => 'Modificar Base de datos',
+ 'Create database' => 'Crear Base de datos',
+ 'SQL command' => 'Comando SQL',
+ 'Dump' => 'Export',
+ 'Logout' => 'Logout',
+ 'database' => 'base de datos',
+ 'Use' => 'Uso',
+ 'No tables.' => 'No existen tablas.',
+ 'select' => 'registros',
+ 'Create new table' => 'Nueva tabla',
+ 'Item has been deleted.' => 'Registro eliminado.',
+ 'Item has been updated.' => 'Registro modificado.',
+ 'Item has been inserted.' => 'Registro insertado.',
+ 'Edit' => 'Modificar',
+ 'Insert' => 'Agregar',
+ 'Save and insert next' => 'Guardar e insertar otro',
+ 'Delete' => 'Eliminar',
+ 'Database' => 'Base de datos',
+ 'Routines' => 'Procedimientos',
+ 'Indexes has been altered.' => 'Indices modificados.',
+ 'Indexes' => 'Indices',
+ 'Alter indexes' => 'Modificar indices',
+ 'Add next' => 'Agregar',
+ 'Language' => 'Idioma',
+ 'Select' => 'Mostrar Registros',
+ 'New item' => 'Nuevo Registro',
+ 'Search' => 'Buscar',
+ 'Sort' => 'Ordenar',
+ 'DESC' => 'descendiente',
+ 'Limit' => 'Limit',
+ 'No rows.' => 'No hay filas.',
+ 'Action' => 'Acción',
+ 'edit' => 'modificar',
+ 'Page' => 'Página',
+ 'Query executed OK, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
+ 'Error in query' => 'Error en consulta',
+ 'Execute' => 'Ejecutar',
+ 'Table' => 'Tabla',
+ 'Foreign keys' => 'Claves foráneas',
+ 'Triggers' => 'Triggers',
+ 'View' => 'Vistas',
+ 'Unable to select the table' => 'No posible seleccionar la tabla',
+ 'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Vuelva a enviar los datos del formulario.',
+ 'Comment' => 'Comentario',
+ 'Default values has been set.' => 'Valores por omisión establecidos.',
+ 'Default values' => 'Establecer valores por omisión',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'Mostrar comentario de columnas',
+ '%d byte(s)' => array('%d byte', '%d bytes'),
+ 'No commands to execute.' => 'No hay comando a ejecutar.',
+ 'Unable to upload a file.' => 'No posible subir archivos.',
+ 'File upload' => 'Importar archivo',
+ 'File uploads are disabled.' => 'Importación de archivos deshablilitado.',
+ 'Routine has been called, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
+ 'Call' => 'Llamar',
+ 'No MySQL extension' => 'No hay extension MySQL',
+ 'None of supported PHP extensions (%s) are available.' => 'Ninguna de las extensiones PHP soportadas (%s) está disponible.',
+ 'Sessions must be enabled.' => 'Deben estar habilitadas las sesiones.',
+ 'Session expired, please login again.' => 'Sesion expirada, favor loguéese de nuevo.',
+ 'Text length' => 'Longitud de texto',
+ 'Foreign key has been dropped.' => 'Clave foránea eliminada.',
+ 'Foreign key has been altered.' => 'Clave foránea modificada.',
+ 'Foreign key has been created.' => 'Clave foránea creada.',
+ 'Foreign key' => 'Clave foránea',
+ 'Target table' => 'Tabla destino',
+ 'Change' => 'Modificar',
+ 'Source' => 'Origen',
+ 'Target' => 'Destino',
+ 'Add column' => 'Agregar columna',
+ 'Alter' => 'Modificar',
+ 'Add foreign key' => 'Agregar clave foránea',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'Tipo de Ãndice',
+ 'Column (length)' => 'Columna (longitud)',
+ 'View has been dropped.' => 'Vista eliminada.',
+ 'View has been altered.' => 'Vista modificada.',
+ 'View has been created.' => 'Vista creada.',
+ 'Alter view' => 'Modificar vista',
+ 'Create view' => 'Cear vista',
+ 'Name' => 'Nombre',
+ 'Process list' => 'Lista de procesos',
+ '%d process(es) has been killed.' => array('%d proceso detenido.', '%d procesos detenidos.'),
+ 'Kill' => 'Detener',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Nombre de Parametro',
+ 'Database schema' => 'Esquema de base de datos',
+ 'Create procedure' => 'Crear procedimiento',
+ 'Create function' => 'Crear función',
+ 'Routine has been dropped.' => 'Procedimiento eliminado.',
+ 'Routine has been altered.' => 'Procedimiento modificado.',
+ 'Routine has been created.' => 'Procedimiento creado.',
+ 'Alter function' => 'Modificar Función',
+ 'Alter procedure' => 'Modificar procedimiento',
+ 'Return type' => 'Tipo de valor retornado',
+ 'Add trigger' => 'Agregar trigger',
+ 'Trigger has been dropped.' => 'Trigger eliminado.',
+ 'Trigger has been altered.' => 'Trigger modificado.',
+ 'Trigger has been created.' => 'Trigger creado.',
+ 'Alter trigger' => 'Modificar Trigger',
+ 'Create trigger' => 'Agregar Trigger',
+ 'Time' => 'Tiempo',
+ 'Event' => 'Evento',
+ 'MySQL version: %s through PHP extension %s' => 'Versión MySQL: %s a través de extensión PHP %s',
+ '%d row(s)' => array('%d fila', '%d filas'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
+ 'Remove' => 'Eliminar',
+ 'Are you sure?' => 'Está seguro?',
+ 'Privileges' => 'Privilegios',
+ 'Create user' => 'Crear Usuario',
+ 'User has been dropped.' => 'Usuario eliminado.',
+ 'User has been altered.' => 'Usuario modificado.',
+ 'User has been created.' => 'Usuario creado.',
+ 'Hashed' => 'Hash',
+ 'Column' => 'Columna',
+ 'Routine' => 'Rutina',
+ 'Grant' => 'Conceder',
+ 'Revoke' => 'Impedir',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST data demasiado grande. Reduzca el tamaño o aumente la directiva de configuración "post_max_size".',
+ 'Logged as: %s' => 'Logeado como: %s',
+ 'Move up' => 'Mover arriba',
+ 'Move down' => 'Mover abajo',
+ 'Functions' => 'Funciones',
+ 'Aggregation' => 'Agregaciones',
+ 'Export' => 'Exportar',
+ 'Output' => 'Salida',
+ 'open' => 'mostrar',
+ 'save' => 'archivo',
+ 'Format' => 'Formato',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Tables' => 'Tablas',
+ 'Data' => 'Datos',
+ 'Event has been dropped.' => 'Evento eliminado.',
+ 'Event has been altered.' => 'Evento modificado.',
+ 'Event has been created.' => 'Evento creado.',
+ 'Alter event' => 'Modificar Evento',
+ 'Create event' => 'Crear Evento',
+ 'At given time' => 'A hora determinada',
+ 'Every' => 'Cada',
+ 'Events' => 'Eventos',
+ 'Schedule' => 'Agendamiento',
+ 'Start' => 'Inicio',
+ 'End' => 'Fin',
+ 'Status' => 'Estado',
+ 'On completion preserve' => 'Al completar preservar',
+ 'Tables and views' => 'Tablas y vistas',
+ 'Data Length' => 'Longitud de datos',
+ 'Index Length' => 'Longitud de Ãndice',
+ 'Data Free' => 'Espacio libre',
+ 'Collation' => 'Collation',
+ 'Analyze' => 'Analizar',
+ 'Optimize' => 'Optimizar',
+ 'Check' => 'Comprobar',
+ 'Repair' => 'Reparar',
+ 'Truncate' => 'Vaciar',
+ 'Tables have been truncated.' => 'Tablas vaciadas (truncate).',
+ 'Rows' => 'Filas',
+ ',' => ' ',
+ 'Tables have been moved.' => 'Se movieron las tablas.',
+ 'Move to other database' => 'mover a otra base de datos',
+ 'Move' => 'Mover',
+ 'Engine' => 'Motor',
+ 'Save and continue edit' => 'Guardar y continuar editando',
+ 'clone' => 'clonar',
+ 'original' => 'original',
+ 'Tables have been dropped.' => 'Las tablas fueron eliminados.',
+ '%d item(s) have been affected.' => array('%d item afectado.', '%d itemes afectados.'),
+ 'whole result' => 'resultado completo',
+ 'Clone' => 'Clonar',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Cantida máxima de campos permitidos excedidos. Favor aumente %s y %s.',
+ 'Partition by' => 'Particionar por',
+ 'Partitions' => 'Particiones',
+ 'Partition name' => 'Nombre de Partición',
+ 'Values' => 'Valores',
+ '%d row(s) has been imported.' => array('%d fila importada.', '%d filas importada.'),
+ 'Table structure' => 'Estructura de la Tabla',
+ '(anywhere)' => '(cualquier lugar)',
+ 'CSV Import' => 'Importar CSV',
+ 'Import' => 'Importar',
+ 'Stop on error' => 'Parar en caso de error',
+ 'Select table' => 'Seleccionar tabla',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/et.inc.php b/adminer/lang/et.inc.php
new file mode 100644
index 00000000..23173c8d
--- /dev/null
+++ b/adminer/lang/et.inc.php
@@ -0,0 +1,217 @@
+ 'Logi sisse',
+ 'Adminer' => 'Andmebaasi haldaja',
+ 'Logout successful.' => 'Väljalogimine õnnestus.',
+ 'Invalid credentials.' => 'Ebasobivad andmed.',
+ 'Server' => 'Server',
+ 'Username' => 'Kasutajanimi',
+ 'Password' => 'Parool',
+ 'Select database' => 'Vali andmebaas',
+ 'Invalid database.' => 'Sobimatu andmebaas.',
+ 'Create new database' => 'Loo uus andmebaas',
+ 'Table has been dropped.' => 'Tabel on edukalt kustutatud.',
+ 'Table has been altered.' => 'Tabeli andmed on edukalt muudetud.',
+ 'Table has been created.' => 'Tabel on edukalt loodud.',
+ 'Alter table' => 'Muuda tabeli struktuuri',
+ 'Create table' => 'Loo uus tabel',
+ 'Table name' => 'Tabeli nimi',
+ 'engine' => 'Mootor',
+ 'collation' => 'Tähetabel',
+ 'Column name' => 'Veeru nimi',
+ 'Type' => 'Tüüp',
+ 'Length' => 'Pikkus',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Automaatselt suurenev',
+ 'Options' => 'Valikud',
+ 'Save' => 'Sisesta',
+ 'Drop' => 'Kustuta',
+ 'Database has been dropped.' => 'Andmebaas on edukalt kustutatud.',
+ 'Database has been created.' => 'Andmebaas on edukalt loodud.',
+ 'Database has been renamed.' => 'Andmebaas on edukalt ümber nimetatud.',
+ 'Database has been altered.' => 'Andmebaasi struktuuri uuendamine õnnestus.',
+ 'Alter database' => 'Muuda andmebaasi',
+ 'Create database' => 'Loo uus andmebaas',
+ 'SQL command' => 'SQL-Päring',
+ 'Dump' => 'Ekspordi',
+ 'Logout' => 'Logi välja',
+ 'database' => 'Andmebaas',
+ 'Use' => 'Kasuta',
+ 'No tables.' => 'Tabeleid ei leitud.',
+ 'select' => 'kuva',
+ 'Create new table' => 'Loo uus tabel',
+ 'Item has been deleted.' => 'Kustutamine õnnestus.',
+ 'Item has been updated.' => 'Uuendamine õnnestus.',
+ 'Item has been inserted.' => 'Lisamine õnnestus.',
+ 'Edit' => 'Muuda',
+ 'Insert' => 'Sisesta',
+ 'Save and insert next' => 'Sisesta ja lisa järgmine',
+ 'Delete' => 'Kustuta',
+ 'Database' => 'Andmebaas',
+ 'Routines' => 'Protseduurid',
+ 'Indexes has been altered.' => 'Indeksite andmed on edukalt uuendatud.',
+ 'Indexes' => 'Indeksid',
+ 'Alter indexes' => 'Muuda indekseid',
+ 'Add next' => 'Lisa järgmine',
+ 'Language' => 'Keel',
+ 'Select' => 'Kuva',
+ 'New item' => 'Lisa kirje',
+ 'Search' => 'Otsi',
+ 'Sort' => 'Sordi',
+ 'DESC' => 'Kahanevalt',
+ 'Limit' => 'Piira kirjete hulka',
+ 'No rows.' => 'Sissekanded puuduvad.',
+ 'Action' => 'Tegevus',
+ 'edit' => 'muuda',
+ 'Page' => 'Lehekülg',
+ 'Query executed OK, %d row(s) affected.' => array('Päring õnnestus, mõjutatatud ridu: %d.', 'Päring õnnestus, mõjutatatud ridu: %d.'),
+ 'Error in query' => 'SQL-päringus esines viga',
+ 'Execute' => 'Käivita',
+ 'Table' => 'Tabel',
+ 'Foreign keys' => 'Võõrvõtmed (foreign key)',
+ 'Triggers' => 'Päästikud (trigger)',
+ 'View' => 'Vaata',
+ 'Unable to select the table' => 'Tabeli valimine ebaõnnestus',
+ 'Invalid CSRF token. Send the form again.' => 'Sobimatu CSRF, palun saadke vorm uuesti.',
+ 'Comment' => 'Kommentaar',
+ 'Default values has been set.' => 'Vaimimisi väärtused on edukalt määratud.',
+ 'Default values' => 'Vaikimisi väärtused',
+ 'BOOL' => 'Jah/Ei (BOOL)',
+ 'Show column comments' => 'Kuva veeru kommentaarid',
+ '%d byte(s)' => array('%d bait', '%d baiti'),
+ 'No commands to execute.' => 'Käsk puudub.',
+ 'Unable to upload a file.' => 'Faili üleslaadimine pole võimalik.',
+ 'File upload' => 'Faili üleslaadimine',
+ 'File uploads are disabled.' => 'Faili üleslaadimine on keelatud.',
+ 'Routine has been called, %d row(s) affected.' => array('Protseduur täideti edukalt, mõjutatud ridu: %d.', 'Protseduur täideti edukalt, mõjutatud ridu: %d.'),
+ 'Call' => 'Käivita',
+ 'No MySQL extension' => 'Ei leitud MySQL laiendust',
+ 'None of supported PHP extensions (%s) are available.' => 'Serveris pole ühtegi toetatud PHP laiendustest (%s).',
+ 'Sessions must be enabled.' => 'Sessioonid peavad olema lubatud.',
+ 'Session expired, please login again.' => 'Sessioon on aegunud, palun logige uuesti sisse.',
+ 'Text length' => 'Teksti pikkus',
+ 'Foreign key has been dropped.' => 'Võõrvõti on edukalt kustutatud.',
+ 'Foreign key has been altered.' => 'Võõrvõtme andmed on edukalt muudetud.',
+ 'Foreign key has been created.' => 'Võõrvõri on edukalt loodud.',
+ 'Foreign key' => 'Võõrvõti',
+ 'Target table' => 'Siht-tabel',
+ 'Change' => 'Muuda',
+ 'Source' => 'Allikas',
+ 'Target' => 'Sihtkoht',
+ 'Add column' => 'Lisa veerg',
+ 'Alter' => 'Muuda',
+ 'Add foreign key' => 'Lisa võõrvõti',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'Indeksi tüüp',
+ 'Column (length)' => 'Veerg (pikkus)',
+ 'View has been dropped.' => 'Vaade (VIEW) on edukalt kustutatud.',
+ 'View has been altered.' => 'Vaade (VIEW) on edukalt muudetud.',
+ 'View has been created.' => 'Vaade (VIEW) on edukalt loodud.',
+ 'Alter view' => 'Muuda vaadet (VIEW)',
+ 'Create view' => 'Loo uus vaade (VIEW)',
+ 'Name' => 'Nimi',
+ 'Process list' => 'Protsesside nimekiri',
+ '%d process(es) has been killed.' => array('Protsess on edukalt peatatud (%d).', 'Valitud protsessid (%d) on edukalt peatatud.'),
+ 'Kill' => 'Peata',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Parameetri nimi',
+ 'Database schema' => 'Andmebaasi skeem',
+ 'Create procedure' => 'Loo uus protseduur',
+ 'Create function' => 'Loo uus funktsioon',
+ 'Routine has been dropped.' => 'Protseduur on edukalt kustutatud.',
+ 'Routine has been altered.' => 'Protseduuri andmed on edukalt muudetud.',
+ 'Routine has been created.' => 'Protseduur on edukalt loodud.',
+ 'Alter function' => 'Muuda funktsiooni',
+ 'Alter procedure' => 'Muuda protseduuri',
+ 'Return type' => 'Tagastustüüp',
+ 'Add trigger' => 'Lisa päästik (TRIGGER)',
+ 'Trigger has been dropped.' => 'Päästik on edukalt kustutatud.',
+ 'Trigger has been altered.' => 'Päästiku andmed on edukalt uuendatud.',
+ 'Trigger has been created.' => 'Uus päästik on edukalt loodud.',
+ 'Alter trigger' => 'Muuda päästiku andmeid',
+ 'Create trigger' => 'Loo uus päästik (TRIGGER)',
+ 'Time' => 'Aeg',
+ 'Event' => 'Sündmus',
+ '%d row(s)' => array('%d rida', '%d rida'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
+ 'Remove' => 'Eemalda',
+ 'Are you sure?' => 'Kas oled kindel?',
+ 'Privileges' => 'Ãigused',
+ 'Create user' => 'Loo uus kasutaja',
+ 'User has been dropped.' => 'Kasutaja on edukalt kustutatud.',
+ 'User has been altered.' => 'Kasutaja andmed on edukalt muudetud.',
+ 'User has been created.' => 'Kasutaja on edukalt lisatud.',
+ 'Hashed' => 'Häshitud (Hashed)',
+ 'Column' => 'Veerg',
+ 'Routine' => 'Protseduur',
+ 'Grant' => 'Anna',
+ 'Revoke' => 'Eemalda',
+ 'MySQL version: %s through PHP extension %s' => 'MySQL versioon: %s, kasutatud PHP moodul: %s',
+ 'Logged as: %s' => 'Sisse logitud: %s',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST-andmete maht on liialt suur. Palun vähendage andmeid või suurendage "post_max_size" php-seadet.',
+ 'Move up' => 'Liiguta ülespoole',
+ 'Move down' => 'Liiguta allapoole',
+ 'Export' => 'Ekspordi',
+ 'Tables' => 'Tabelid',
+ 'Data' => 'Andmed',
+ 'Output' => 'Väljund',
+ 'open' => 'näita brauseris',
+ 'save' => 'salvesta failina',
+ 'Format' => 'Formaat',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Functions' => 'Funktsioonid',
+ 'Aggregation' => 'Liitmine',
+ 'Event has been dropped.' => 'Sündmus on edukalt kustutatud.',
+ 'Event has been altered.' => 'Sündmuse andmed on edukalt uuendatud.',
+ 'Event has been created.' => 'Sündmus on edukalt loodud.',
+ 'Alter event' => 'Muuda sündmuse andmeid',
+ 'Create event' => 'Loo uus sündmus (EVENT)',
+ 'Start' => 'Alusta',
+ 'End' => 'Lõpeta',
+ 'Every' => 'Iga',
+ 'Status' => 'Staatus',
+ 'On completion preserve' => 'Lõpetamisel jäta sündmus alles',
+ 'Events' => 'Sündmused (EVENTS)',
+ 'Schedule' => 'Ajakava',
+ 'At given time' => 'Antud ajahetkel',
+ 'Save and continue edit' => 'Salvesta ja jätka muutmist',
+ 'original' => 'originaal',
+ 'Tables have been truncated.' => 'Validud tabelid on edukalt tühjendatud.',
+ 'Tables have been moved.' => 'Valitud tabelid on edukalt liigutatud.',
+ 'Tables have been dropped.' => 'Valitud tabelid on edukalt kustutatud.',
+ 'Tables and views' => 'Tabelid ja vaated',
+ 'Engine' => 'Implementatsioon',
+ 'Collation' => 'Tähetabel',
+ 'Data Length' => 'Andmete pikkus',
+ 'Index Length' => 'Indeksi pikkus',
+ 'Data Free' => 'Vaba ruumi',
+ 'Rows' => 'Ridu',
+ ',' => ',',
+ 'Analyze' => 'Analüüsi',
+ 'Optimize' => 'Optimeeri',
+ 'Check' => 'Kontrolli',
+ 'Repair' => 'Paranda',
+ 'Truncate' => 'Tühjenda',
+ 'Move to other database' => 'Liiguta teise andmebaasi',
+ 'Move' => 'Liiguta',
+ '%d item(s) have been affected.' => array('Mõjutatud kirjeid: %d.', 'Mõjutatud kirjeid: %d.'),
+ 'whole result' => 'Täielikud tulemused',
+ 'clone' => 'Klooni',
+ 'Clone' => 'Kloon',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Maksimaalne väljade arv ületatud. Palun suurendage %s ja %s.',
+ 'Partition by' => 'Partitsiooni',
+ 'Partitions' => 'Partitsioonid',
+ 'Partition name' => 'Partitsiooni nimi',
+ 'Values' => 'Väärtused',
+ '%d row(s) has been imported.' => array('Imporditi %d rida', 'Imporditi %d rida'),
+ 'Table structure' => 'Tabeli struktuur',
+ '(anywhere)' => '(vahet pole)',
+ 'CSV Import' => 'Impordi CSV',
+ 'Import' => 'Impordi',
+ 'Stop on error' => 'Peatuda vea esinemisel',
+ 'Select table' => 'Vali tabel',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/fr.inc.php b/adminer/lang/fr.inc.php
new file mode 100644
index 00000000..49e49093
--- /dev/null
+++ b/adminer/lang/fr.inc.php
@@ -0,0 +1,216 @@
+ 'Authentification',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'Aurevoir!',
+ 'Invalid credentials.' => 'Authentification échoué',
+ 'Server' => 'Serveur',
+ 'Username' => 'Utilisateur',
+ 'Password' => 'Mot de passe',
+ 'Select database' => 'Selectionner la base de donnée',
+ 'Invalid database.' => 'Base de donnée invalide',
+ 'Create new database' => 'Créer une base de donnée',
+ 'Table has been dropped.' => 'Table effacée',
+ 'Table has been altered.' => 'Table modifiée',
+ 'Table has been created.' => 'Table créée.',
+ 'Alter table' => 'Modifier la table',
+ 'Create table' => 'Créer une table',
+ 'Table name' => 'Nom de la table',
+ 'engine' => 'moteur',
+ 'collation' => 'collation',
+ 'Column name' => 'Nombre de colonne',
+ 'Type' => 'Type',
+ 'Length' => 'Longeur',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto increment',
+ 'Options' => 'Options',
+ 'Save' => 'Sauvegarder',
+ 'Drop' => 'Effacer',
+ 'Database has been dropped.' => 'Base de données effacée.',
+ 'Database has been created.' => 'Base de données créée.',
+ 'Database has been renamed.' => 'Base de données renommée.',
+ 'Database has been altered.' => 'Base de données modifiée.',
+ 'Alter database' => 'Modifier la base de données',
+ 'Create database' => 'Créer une base de données',
+ 'SQL command' => 'Requête SQL',
+ 'Dump' => 'Exporter',
+ 'Logout' => 'Déconnexion',
+ 'database' => 'base de données',
+ 'Use' => 'Utiliser',
+ 'No tables.' => 'Aucunes tables.',
+ 'select' => 'select',
+ 'Create new table' => 'Créer une table',
+ 'Item has been deleted.' => 'Ãlément supprimé.',
+ 'Item has been updated.' => 'Ãlément modifié.',
+ 'Item has been inserted.' => 'Ãlément inseré.',
+ 'Edit' => 'Modifier',
+ 'Insert' => 'Insérer',
+ 'Save and insert next' => 'Sauvegarder et insérer le prochain',
+ 'Delete' => 'Effacer',
+ 'Database' => 'Base de données',
+ 'Routines' => 'Routines',
+ 'Indexes has been altered.' => 'Index modifiés.',
+ 'Indexes' => 'Index',
+ 'Alter indexes' => 'Modifier les index',
+ 'Add next' => 'Ajouter le prochain',
+ 'Language' => 'Langues',
+ 'Select' => 'Select',
+ 'New item' => 'Nouvel élément',
+ 'Search' => 'Rechercher',
+ 'Sort' => 'Ordonner',
+ 'Limit' => 'Limit',
+ 'No rows.' => 'Aucun résultat',
+ 'Action' => 'Action',
+ 'edit' => 'modifier',
+ 'Page' => 'Page',
+ 'Query executed OK, %d row(s) affected.' => array('Requête exécutée, %d ligne affecteé.', 'Requête exécutée, %d lignes affectées.'),
+ 'Error in query' => 'Erreur dans la requête',
+ 'Execute' => 'Exécuter',
+ 'Table' => 'Table',
+ 'Foreign keys' => 'Clé externe',
+ 'Triggers' => 'Triggers',
+ 'View' => 'Vue',
+ 'Unable to select the table' => 'Impossible de sélectionner la table',
+ 'Invalid CSRF token. Send the form again.' => 'Token CSRF invalide. Veuillez réenvoyer le formulaire.',
+ 'Comment' => 'Commentaire',
+ 'Default values has been set.' => 'Valeur par défaut établie .',
+ 'Default values' => 'Valeurs par défaut',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'Voir les commentaires sur les colonnes',
+ '%d byte(s)' => array('%d byte', '%d bytes'),
+ 'No commands to execute.' => 'Aucune commande à exécuter.',
+ 'Unable to upload a file.' => 'Impossible d\'importer le fichier.',
+ 'File upload' => 'Importer un fichier',
+ 'File uploads are disabled.' => 'Import de fichier désactivé.',
+ 'Routine has been called, %d row(s) affected.' => array('Routine exécutée, %d ligne modifiée.', 'Routine exécutée, %d lignes modifiées.'),
+ 'Call' => 'Appeler',
+ 'No MySQL extension' => 'Extension MySQL introuvable',
+ 'None of supported PHP extensions (%s) are available.' => 'Aucune des extensions PHP supportées (%s) n\'est disponible.',
+ 'Sessions must be enabled.' => 'Veuillez activer les sessions.',
+ 'Session expired, please login again.' => 'Session expirée, veuillez vous enregistrer à nouveau.',
+ 'Text length' => 'Longueur du texte',
+ 'Foreign key has been dropped.' => 'Clé externe effacée.',
+ 'Foreign key has been altered.' => 'Clé externe modifiée.',
+ 'Foreign key has been created.' => 'Clé externe créée.',
+ 'Foreign key' => 'Clé externe',
+ 'Target table' => 'Table visée',
+ 'Change' => 'Modifier',
+ 'Source' => 'Source',
+ 'Target' => 'Cible',
+ 'Add column' => 'Ajouter une colonne',
+ 'Alter' => 'Modifier',
+ 'Add foreign key' => 'Ajouter une clé externe',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'Type d\'index',
+ 'Column (length)' => 'Colonne (longueur)',
+ 'View has been dropped.' => 'Vue effacée.',
+ 'View has been altered.' => 'Vue modifiée.',
+ 'View has been created.' => 'Vue créée.',
+ 'Alter view' => 'Modifier une vue',
+ 'Create view' => 'Créer une vue',
+ 'Name' => 'Nom',
+ 'Process list' => 'Liste de processus',
+ '%d process(es) has been killed.' => array('%d processus arrêté.', '%d processus arrêtés.'),
+ 'Kill' => 'Arrêter',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Nom du Paramêtre',
+ 'Database schema' => 'Schéma de la base de données',
+ 'Create procedure' => 'Créer une procédure',
+ 'Create function' => 'Créer une fonction',
+ 'Routine has been dropped.' => 'Procédure éliminée.',
+ 'Routine has been altered.' => 'Procédure modifiée.',
+ 'Routine has been created.' => 'Procédure créée.',
+ 'Alter function' => 'Modifié la fonction',
+ 'Alter procedure' => 'Modifié la procédure',
+ 'Return type' => 'Type de retour',
+ 'Add trigger' => 'Ajouter un trigger',
+ 'Trigger has been dropped.' => 'Trigger éliminé.',
+ 'Trigger has been altered.' => 'Trigger modifié.',
+ 'Trigger has been created.' => 'Trigger créé.',
+ 'Alter trigger' => 'Modifier un trigger',
+ 'Create trigger' => 'Ajouter un trigger',
+ 'Time' => 'Temps',
+ 'Event' => 'Ãvènement',
+ '%d row(s)' => array('%d ligne', '%d lignes'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
+ 'Remove' => 'Effacer',
+ 'Are you sure?' => 'Ãtes-vous certain?',
+ 'Privileges' => 'Privilège',
+ 'Create user' => 'Créer un utilisateur',
+ 'User has been dropped.' => 'Utilisateur éffacé.',
+ 'User has been altered.' => 'Utilisateur modifié.',
+ 'User has been created.' => 'Utilisateur créé.',
+ 'Hashed' => 'Haché',
+ 'Column' => 'Colonne',
+ 'Routine' => 'Routine',
+ 'Grant' => 'Grant',
+ 'Revoke' => 'Revoke',
+ 'MySQL version: %s through PHP extension %s' => 'Version de MySQL: %s utilisant l\'extension %s',
+ 'Logged as: %s' => 'Authentifié en tant que %s',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'Donnée POST trop grande . Réduire la taille des données ou modifier le "post_max_size" dans la configuration de PHP.',
+ 'Move up' => 'Déplacer vers le haut',
+ 'Move down' => 'Déplacer vers le bas',
+ 'Export' => 'Exporter',
+ 'Tables' => 'Tables',
+ 'Data' => 'Donnée',
+ 'Output' => 'Sortie',
+ 'open' => 'ouvrir',
+ 'save' => 'sauvegarder',
+ 'Format' => 'Formatter',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CVS',
+ 'Functions' => 'Fonctions',
+ 'Aggregation' => 'Agrégation',
+ 'Event has been dropped.' => 'L\'évènement a été supprimé.',
+ 'Event has been altered.' => 'L\'évènement a été modifié.',
+ 'Event has been created.' => 'L\'évènement a été créé.',
+ 'Alter event' => 'Modifier un évènement',
+ 'Create event' => 'Créer un évènement',
+ 'Start' => 'Démarrer',
+ 'End' => 'Terminer',
+ 'Every' => 'Chaque',
+ 'Status' => 'Status',
+ 'On completion preserve' => 'Conserver quand complété',
+ 'Events' => 'Ãvènement',
+ 'Schedule' => 'Horaire',
+ 'At given time' => 'à un moment précis',
+ 'Save and continue edit' => 'Sauvegarder et continuer l\'édition',
+ 'original' => 'original',
+ 'Tables have been truncated.' => 'Les tables ont été tronquées',
+ 'Tables have been moved.' => 'Les tables ont été déplacées',
+ 'Tables have been dropped.' => 'Les tables ont été effacées',
+ 'Tables and views' => 'Tables et vues',
+ 'Engine' => 'Moteur',
+ 'Collation' => 'Collation',
+ 'Data Length' => 'Longeur des données',
+ 'Index Length' => 'Longeur de l\'index',
+ 'Data Free' => 'Vide',
+ 'Rows' => 'Rangés',
+ ',' => ',',
+ 'Analyze' => 'Analyser',
+ 'Optimize' => 'Opitimiser',
+ 'Check' => 'Vérifier',
+ 'Repair' => 'Réparer',
+ 'Truncate' => 'Tronquer',
+ 'Move to other database' => 'Déplacer dans une autre base de données',
+ 'Move' => 'Déplacer',
+ '%d item(s) have been affected.' => array('%d élément ont été modifié.', '%d éléments ont été modifié.'),
+ 'whole result' => 'résultat entier',
+ 'clone' => 'cloner',
+ 'Clone' => 'Cloner',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Le nombre de champs maximum est dépassé. Veuillez augmenter %s et %s',
+ 'Partition by' => 'Partitionné par',
+ 'Partitions' => 'Partitions',
+ 'Partition name' => 'Nom de la partition',
+ 'Values' => 'Valeurs',
+ '%d row(s) has been imported.' => array('%d ligne a été importé','%d lignes ont été importé'),
+ 'Table structure' => 'Structure de la table',
+ '(anywhere)' => '(n\'importe où)',
+ 'CSV Import' => 'Importation CVS',
+ 'Import' => 'Importer',
+ 'Stop on error' => 'Arrêt sur erreur',
+ 'Select table' => 'Selectionner la table',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/it.inc.php b/adminer/lang/it.inc.php
new file mode 100644
index 00000000..31a0e548
--- /dev/null
+++ b/adminer/lang/it.inc.php
@@ -0,0 +1,216 @@
+ 'Autenticazione',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'Uscita effettuata con successo.',
+ 'Invalid credentials.' => 'Credenziali non valide.',
+ 'Server' => 'Server',
+ 'Username' => 'Utente',
+ 'Password' => 'Password',
+ 'Select database' => 'Seleziona database',
+ 'Invalid database.' => 'Database non valido.',
+ 'Create new database' => 'Crea nuovo database',
+ 'Table has been dropped.' => 'Tabella eliminata.',
+ 'Table has been altered.' => 'Tabella modificata.',
+ 'Table has been created.' => 'Tabella creata.',
+ 'Alter table' => 'Modifica tabella',
+ 'Create table' => 'Crea tabella',
+ 'Table name' => 'Nome tabella',
+ 'engine' => 'motore',
+ 'collation' => 'collazione',
+ 'Column name' => 'Nome colonna',
+ 'Type' => 'Tipo',
+ 'Length' => 'Lunghezza',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto incremento',
+ 'Options' => 'Opzioni',
+ 'Save' => 'Salva',
+ 'Drop' => 'Elimina',
+ 'Database has been dropped.' => 'Database eliminato.',
+ 'Database has been created.' => 'Database creato.',
+ 'Database has been renamed.' => 'Database rinominato.',
+ 'Database has been altered.' => 'Database modificato.',
+ 'Alter database' => 'Modifica database',
+ 'Create database' => 'Crea database',
+ 'SQL command' => 'Comando SQL',
+ 'Dump' => 'Dump',
+ 'Logout' => 'Esci',
+ 'database' => 'database',
+ 'Use' => 'Usa',
+ 'No tables.' => 'No tabelle.',
+ 'select' => 'seleziona',
+ 'Create new table' => 'Crea nuova tabella',
+ 'Item has been deleted.' => 'Elemento eliminato.',
+ 'Item has been updated.' => 'Elemento aggiornato.',
+ 'Item has been inserted.' => 'Elemento inserito.',
+ 'Edit' => 'Modifica',
+ 'Insert' => 'Inserisci',
+ 'Save and insert next' => 'Salva e inserisci un altro',
+ 'Delete' => 'Elimina',
+ 'Database' => 'Database',
+ 'Routines' => 'Routine',
+ 'Indexes has been altered.' => 'Indici modificati.',
+ 'Indexes' => 'Indici',
+ 'Alter indexes' => 'Modifica indici',
+ 'Add next' => 'Aggiungi altro',
+ 'Language' => 'Lingua',
+ 'Select' => 'Seleziona',
+ 'New item' => 'Nuovo elemento',
+ 'Search' => 'Cerca',
+ 'Sort' => 'Ordina',
+ 'Limit' => 'Limite',
+ 'No rows.' => 'Nessuna riga.',
+ 'Action' => 'Azione',
+ 'edit' => 'modifica',
+ 'Page' => 'Pagina',
+ 'Query executed OK, %d row(s) affected.' => array('Esecuzione della query OK, %d riga interessata.', 'Esecuzione della query OK, %d righe interessate.'),
+ 'Error in query' => 'Errore nella query',
+ 'Execute' => 'Esegui',
+ 'Table' => 'Tabella',
+ 'Foreign keys' => 'Chiavi esterne',
+ 'Triggers' => 'Trigger',
+ 'View' => 'Vedi',
+ 'Unable to select the table' => 'Selezione della tabella non riuscita',
+ 'Invalid CSRF token. Send the form again.' => 'Token CSRF non valido. Reinvia la richiesta.',
+ 'Comment' => 'Commento',
+ 'Default values has been set.' => 'Valore predefinito impostato.',
+ 'Default values' => 'Valori predefiniti',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'Mostra i commenti delle colonne',
+ '%d byte(s)' => array('%d byte', '%d bytes'),
+ 'No commands to execute.' => 'Nessun commando da eseguire.',
+ 'Unable to upload a file.' => 'Caricamento del file non riuscito.',
+ 'File upload' => 'Caricamento file',
+ 'File uploads are disabled.' => 'Caricamento file disabilitato.',
+ 'Routine has been called, %d row(s) affected.' => array('Routine chiamata, %d riga interessata.', 'Routine chiamata, %d righe interessate.'),
+ 'Call' => 'Chiama',
+ 'No MySQL extension' => 'Estensioni MySQL non presenti',
+ 'None of supported PHP extensions (%s) are available.' => 'Nessuna delle estensioni PHP supportate (%s) disponibile.',
+ 'Sessions must be enabled.' => 'Le sessioni devono essere abilitate.',
+ 'Session expired, please login again.' => 'Sessione scaduta, autenticarsi di nuovo.',
+ 'Text length' => 'Lunghezza testo',
+ 'Foreign key has been dropped.' => 'Foreign key eliminata.',
+ 'Foreign key has been altered.' => 'Foreign key modificata.',
+ 'Foreign key has been created.' => 'Foreign key creata.',
+ 'Foreign key' => 'Foreign key',
+ 'Target table' => 'Tabella obiettivo',
+ 'Change' => 'Cambia',
+ 'Source' => 'Sorgente',
+ 'Target' => 'Obiettivo',
+ 'Add column' => 'Aggiungi colonna',
+ 'Alter' => 'Modifica',
+ 'Add foreign key' => 'Aggiungi foreign key',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'Tipo indice',
+ 'Column (length)' => 'Colonna (lunghezza)',
+ 'View has been dropped.' => 'Vista eliminata.',
+ 'View has been altered.' => 'Vista modificata.',
+ 'View has been created.' => 'Vista creata.',
+ 'Alter view' => 'Modifica vista',
+ 'Create view' => 'Crea vista',
+ 'Name' => 'Nome',
+ 'Process list' => 'Elenco processi',
+ '%d process(es) has been killed.' => array('%d processo interrotto.', '%d processi interrotti.'),
+ 'Kill' => 'Interrompi',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Nome parametro',
+ 'Database schema' => 'Schema database',
+ 'Create procedure' => 'Crea procedura',
+ 'Create function' => 'Crea funzione',
+ 'Routine has been dropped.' => 'Routine eliminata.',
+ 'Routine has been altered.' => 'Routine modificata.',
+ 'Routine has been created.' => 'Routine creata.',
+ 'Alter function' => 'Modifica funzione',
+ 'Alter procedure' => 'Modifica procedura',
+ 'Return type' => 'Return type',
+ 'Add trigger' => 'Aggiungi trigger',
+ 'Trigger has been dropped.' => 'Trigger eliminato.',
+ 'Trigger has been altered.' => 'Trigger modificato.',
+ 'Trigger has been created.' => 'Trigger creato.',
+ 'Alter trigger' => 'Modifica trigger',
+ 'Create trigger' => 'Crea trigger',
+ 'Time' => 'Orario',
+ 'Event' => 'Evento',
+ 'MySQL version: %s through PHP extension %s' => 'Versione MySQL: %s via estensione PHP %s',
+ '%d row(s)' => array('%d riga', '%d righe'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
+ 'Remove' => 'Rimuovi',
+ 'Are you sure?' => 'Sicuro?',
+ 'Privileges' => 'Privilegi',
+ 'Create user' => 'Crea utente',
+ 'User has been dropped.' => 'Utente eliminato.',
+ 'User has been altered.' => 'Utente modificato.',
+ 'User has been created.' => 'Utente creato.',
+ 'Hashed' => 'Hashed',
+ 'Column' => 'Colonna',
+ 'Routine' => 'Routine',
+ 'Grant' => 'Permetti',
+ 'Revoke' => 'Revoca',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'Troppi dati via POST. Ridurre i dati o aumentare la direttiva di configurazione "post_max_size".',
+ 'Logged as: %s' => 'Autenticato come: %s',
+ 'Move up' => 'Sposta su',
+ 'Move down' => 'Sposta giu',
+ 'Functions' => 'Funzioni',
+ 'Aggregation' => 'Aggregazione',
+ 'Export' => 'Esporta',
+ 'Output' => 'Risultato',
+ 'open' => 'apri',
+ 'save' => 'salva',
+ 'Format' => 'Formato',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Tables' => 'Tabelle',
+ 'Data' => 'Dati',
+ 'Event has been dropped.' => 'Evento eliminato.',
+ 'Event has been altered.' => 'Evento modificato.',
+ 'Event has been created.' => 'Evento creato.',
+ 'Alter event' => 'Modifica evento',
+ 'Create event' => 'Crea evento',
+ 'Start' => 'Inizio',
+ 'End' => 'Fine',
+ 'Every' => 'Ogni',
+ 'Status' => 'Stato',
+ 'On completion preserve' => 'Al termine preservare',
+ 'Events' => 'Eventi',
+ 'Schedule' => 'Pianifica',
+ 'At given time' => 'A tempo prestabilito',
+ 'Save and continue edit' => 'Salva e continua',
+ 'original' => 'originale',
+ 'Tables have been truncated.' => 'Le tabelle sono state svuotate.',
+ 'Tables have been moved.' => 'Le tabelle sono state spostate.',
+ 'Tables have been dropped.' => 'Le tabelle sono state eliminate.',
+ 'Tables and views' => 'Tabelle e viste',
+ 'Engine' => 'Motore',
+ 'Collation' => 'Collazione',
+ 'Data Length' => 'Lunghezza dato',
+ 'Index Length' => 'Lunghezza indice',
+ 'Data Free' => 'Dati liberi',
+ 'Rows' => 'Righe',
+ ',' => '.',
+ 'Analyze' => 'Analizza',
+ 'Optimize' => 'Ottimizza',
+ 'Check' => 'Controlla',
+ 'Repair' => 'Ripara',
+ 'Truncate' => 'Svuota',
+ 'Move to other database' => 'Sposta in altro database',
+ 'Move' => 'Sposta',
+ '%d item(s) have been affected.' => array('Il risultato consiste in %d elemento', 'Il risultato consiste in %d elementi'),
+ 'whole result' => 'intero risultato',
+ 'clone' => 'clona',
+ 'Clone' => 'Clona',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Troppi campi. Per favore aumentare %s e %s.',
+ 'Partition by' => 'Partiziona per',
+ 'Partitions' => 'Partizioni',
+ 'Partition name' => 'Nome partizione',
+ 'Values' => 'Valori',
+ '%d row(s) has been imported.' => array('%d riga importata.','%d righe importate.'),
+ 'Table structure' => 'Struttura tabella',
+ '(anywhere)' => '(ovunque)',
+ 'CSV Import' => 'Importa da CSV',
+ 'Import' => 'Importa',
+ 'Stop on error' => 'Stop su errore',
+ 'Select table' => 'Scegli tabella',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/nl.inc.php b/adminer/lang/nl.inc.php
new file mode 100644
index 00000000..2fe16f6e
--- /dev/null
+++ b/adminer/lang/nl.inc.php
@@ -0,0 +1,217 @@
+ 'Inloggen',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'Uitloggen geslaagd.',
+ 'Invalid credentials.' => 'Ongeldige logingegevens.',
+ 'Server' => 'Server',
+ 'Username' => 'Gebruikersnaam',
+ 'Password' => 'Wachtwoord',
+ 'Select database' => 'Database selecteren',
+ 'Invalid database.' => 'Ongeldige database.',
+ 'Create new database' => 'Nieuwe database',
+ 'Table has been dropped.' => 'Tabel verwijderd.',
+ 'Table has been altered.' => 'Tabel aangepast.',
+ 'Table has been created.' => 'Tabel aangemaakt.',
+ 'Alter table' => 'Tabel aanpassen',
+ 'Create table' => 'Tabel aanmaken',
+ 'Table name' => 'Tabelnaam',
+ 'engine' => 'engine',
+ 'collation' => 'collation',
+ 'Column name' => 'Kolomnaam',
+ 'Type' => 'Type',
+ 'Length' => 'Lengte',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto nummering',
+ 'Options' => 'Opties',
+ 'Save' => 'Opslaan',
+ 'Drop' => 'Verwijderen',
+ 'Database has been dropped.' => 'Database verwijderd.',
+ 'Database has been created.' => 'Database aangemaakt.',
+ 'Database has been renamed.' => 'Database hernoemd.',
+ 'Database has been altered.' => 'Database aangepast.',
+ 'Alter database' => 'Database aanpassen',
+ 'Create database' => 'Database aanmaken',
+ 'SQL command' => 'SQL opdracht',
+ 'Dump' => 'Exporteer',
+ 'Logout' => 'Uitloggen',
+ 'database' => 'database',
+ 'Use' => 'Gebruik',
+ 'No tables.' => 'Geen tabellen.',
+ 'select' => 'kies',
+ 'Create new table' => 'Nieuwe tabel',
+ 'Item has been deleted.' => 'Item verwijderd.',
+ 'Item has been updated.' => 'Item aangepast.',
+ 'Item has been inserted.' => 'Item toegevoegd.',
+ 'Edit' => 'Bewerk',
+ 'Insert' => 'Toevoegen',
+ 'Save and insert next' => 'Opslaan, daarna toevoegen',
+ 'Delete' => 'Verwijderen',
+ 'Database' => 'Database',
+ 'Routines' => 'Procedures',
+ 'Indexes has been altered.' => 'Index aangepast.',
+ 'Indexes' => 'Indexen',
+ 'Alter indexes' => 'Indexen aanpassen',
+ 'Add next' => 'Volgende toevoegen',
+ 'Language' => 'Taal',
+ 'Select' => 'Kies',
+ 'New item' => 'Nieuw item',
+ 'Search' => 'Zoeken',
+ 'Sort' => 'Sorteren',
+ 'DESC' => 'Aflopend',
+ 'Limit' => 'Beperk',
+ 'No rows.' => 'Geen rijen.',
+ 'Action' => 'Acties',
+ 'edit' => 'bewerk',
+ 'Page' => 'Pagina',
+ 'Query executed OK, %d row(s) affected.' => array('Query uitgevoerd, %d rij geraakt.', 'Query uitgevoerd, %d rijen geraakt.'),
+ 'Error in query' => 'Fout in query',
+ 'Execute' => 'Uitvoeren',
+ 'Table' => 'Tabel',
+ 'Foreign keys' => 'Foreign keys',
+ 'Triggers' => 'Triggers',
+ 'View' => 'View',
+ 'Unable to select the table' => 'Onmogelijk tabel te selecteren',
+ 'Invalid CSRF token. Send the form again.' => 'Ongeldig CSRF token. Verstuur het formulier opnieuw.',
+ 'Comment' => 'Commentaar',
+ 'Default values has been set.' => 'Standaard waarde ingesteld.',
+ 'Default values' => 'Standaard waarden',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'Kolomcommentaar weergeven',
+ '%d byte(s)' => array('%d byte', '%d bytes'),
+ 'No commands to execute.' => 'Geen opdrachten uit te voeren.',
+ 'Unable to upload a file.' => 'Onmogelijk bestand te uploaden.',
+ 'File upload' => 'Bestand uploaden',
+ 'File uploads are disabled.' => 'Bestanden uploaden is uitgeschakeld.',
+ 'Routine has been called, %d row(s) affected.' => array('Procedure uitgevoerd, %d rij geraakt.', 'Procedure uitgevoerd, %d rijen geraakt.'),
+ 'Call' => 'Uitvoeren',
+ 'No MySQL extension' => 'Geen MySQL extensie',
+ 'None of supported PHP extensions (%s) are available.' => 'Geen geldige PHP extensies beschikbaar (%s).',
+ 'Sessions must be enabled.' => 'Siessies moeten geactiveerd zijn.',
+ 'Session expired, please login again.' => 'Uw sessie is verlopen. Gelieve opnieuw in te loggen.',
+ 'Text length' => 'Tekst lengte',
+ 'Foreign key has been dropped.' => 'Foreign key verwijderd.',
+ 'Foreign key has been altered.' => 'Foreign key aangepast.',
+ 'Foreign key has been created.' => 'Foreign key aangemaakt.',
+ 'Foreign key' => 'Foreign key',
+ 'Target table' => 'Doeltabel',
+ 'Change' => 'Veranderen',
+ 'Source' => 'Bron',
+ 'Target' => 'Doel',
+ 'Add column' => 'Kolom toevoegen',
+ 'Alter' => 'Aanpassen',
+ 'Add foreign key' => 'Foreign key aanmaken',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'Index type',
+ 'Column (length)' => 'Kolom (lengte)',
+ 'View has been dropped.' => 'View verwijderd.',
+ 'View has been altered.' => 'View aangepast.',
+ 'View has been created.' => 'View aangemaakt.',
+ 'Alter view' => 'View aanpassen',
+ 'Create view' => 'View aanmaken',
+ 'Name' => 'Naam',
+ 'Process list' => 'Proceslijst',
+ '%d process(es) has been killed.' => array('%d proces gestopt.', '%d processen gestopt.'),
+ 'Kill' => 'Stoppen',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Parameternaam',
+ 'Database schema' => 'Database schema',
+ 'Create procedure' => 'Procedure aanmaken',
+ 'Create function' => 'Functie aanmaken',
+ 'Routine has been dropped.' => 'Procedure verwijderd.',
+ 'Routine has been altered.' => 'Procedure aangepast.',
+ 'Routine has been created.' => 'Procedure aangemaakt.',
+ 'Alter function' => 'Functie aanpassen',
+ 'Alter procedure' => 'Procedure aanpassen',
+ 'Return type' => 'Return type',
+ 'Add trigger' => 'Trigger aanmaken',
+ 'Trigger has been dropped.' => 'Trigger verwijderd.',
+ 'Trigger has been altered.' => 'Trigger aangepast.',
+ 'Trigger has been created.' => 'Trigger aangemaakt.',
+ 'Alter trigger' => 'Trigger aanpassen',
+ 'Create trigger' => 'Trigger aanmaken',
+ 'Time' => 'Time',
+ 'Event' => 'Event',
+ 'MySQL version: %s through PHP extension %s' => 'MySQL versie: %s met PHP extensie %s',
+ '%d row(s)' => array('%d rij', '%d rijen'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
+ 'Remove' => 'Verwijderen',
+ 'Are you sure?' => 'Weet u het zeker?',
+ 'Privileges' => 'Rechten',
+ 'Create user' => 'Gebruiker aanmaken',
+ 'User has been dropped.' => 'Gebruiker verwijderd.',
+ 'User has been altered.' => 'Gebruiker aangepast.',
+ 'User has been created.' => 'Gebruiker aangemaakt.',
+ 'Hashed' => 'Gehashed',
+ 'Column' => 'Kolom',
+ 'Routine' => 'Routine',
+ 'Grant' => 'Toekennen',
+ 'Revoke' => 'Intrekken',
+ 'Logged as: %s' => 'Aangemeld als: %s',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST-data is te groot. Verklein de hoeveelheid data of verhoog de "post_max_size" configuratie.',
+ 'Move up' => 'Omhoog',
+ 'Move down' => 'Omlaag',
+ 'Export' => 'Exporteren',
+ 'Tables' => 'Tabellen',
+ 'Data' => 'Data',
+ 'Output' => 'Uitvoer',
+ 'open' => 'openen',
+ 'save' => 'opslaan',
+ 'Format' => 'Formaat',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Functions' => 'Functies',
+ 'Aggregation' => 'Totalen',
+ 'Event has been dropped.' => 'Event werd verwijderd.',
+ 'Event has been altered.' => 'Event werd aangepast.',
+ 'Event has been created.' => 'Event werd aangemaakt.',
+ 'Alter event' => 'Event aanpassen',
+ 'Create event' => 'Event aanmaken',
+ 'Start' => 'Start',
+ 'End' => 'Stop',
+ 'Every' => 'Iedere',
+ 'Status' => 'Status',
+ 'On completion preserve' => 'Bewaren na voltooiing',
+ 'Events' => 'Events',
+ 'Schedule' => 'Schedule',
+ 'At given time' => 'Op aangegeven tijd',
+ 'Save and continue edit' => 'Opslaan en verder bewerken',
+ 'original' => 'origineel',
+ 'Tables have been truncated.' => 'Tabellen werden geleegd.',
+ 'Tables have been moved.' => 'Tabellen werden verplaatst.',
+ 'Tables have been dropped.' => 'Tabellen werden verwijderd.',
+ 'Tables and views' => 'Tabellen en views',
+ 'Engine' => 'Engine',
+ 'Collation' => 'Collatie',
+ 'Data Length' => 'Data lengte',
+ 'Index Length' => 'Index lengte',
+ 'Data Free' => 'Data Vrij',
+ 'Rows' => 'Rijen',
+ ',' => '.',
+ 'Analyze' => 'Analyseer',
+ 'Optimize' => 'Optimaliseer',
+ 'Check' => 'Controleer',
+ 'Repair' => 'Herstel',
+ 'Truncate' => 'Legen',
+ 'Move to other database' => 'Verplaats naar andere database',
+ 'Move' => 'Verplaats',
+ '%d item(s) have been affected.' => array('%d item aangepast.', '%d items aangepast.'),
+ 'whole result' => 'volledig resultaat',
+ 'clone' => 'dupliceer',
+ 'Clone' => 'Dupliceer',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Maximum aantal velden bereikt. Verhoog %s en %s.',
+ 'Partition by' => 'Partitioneren op',
+ 'Partitions' => 'Partities',
+ 'Partition name' => 'Partitie naam',
+ 'Values' => 'Waarden',
+ '%d row(s) has been imported.' => array('%d rij werd geïmporteerd.', '%d rijen werden geïmporteerd.'),
+ 'Table structure' => 'Tabelstructuur',
+ '(anywhere)' => '(overal)',
+ 'CSV Import' => 'CSV Import',
+ 'Import' => 'Importeren',
+ 'Stop on error' => 'Stoppen bij fout',
+ 'Select table' => 'Selecteer tabel',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/ru.inc.php b/adminer/lang/ru.inc.php
new file mode 100644
index 00000000..902ac544
--- /dev/null
+++ b/adminer/lang/ru.inc.php
@@ -0,0 +1,217 @@
+ 'ÐапиÑаÑÑÑÑ',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'ÐогаÑÑ Ð² поÑÑдке.',
+ 'Invalid credentials.' => 'ÐедейÑÑвиÑелÑное заÑвиÑелÑное ÑакÑÑ.',
+ 'Server' => 'СеÑвеÑ',
+ 'Username' => 'ÐмÑ',
+ 'Password' => 'ÐаÑолÑ',
+ 'Select database' => 'ÐÑбÑаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
+ 'Invalid database.' => 'ÐлоÑ
Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ
.',
+ 'Create new database' => 'СоздаÑÑ Ð½Ð¾Ð²ÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
+ 'Table has been dropped.' => 'ТаблиÑа бÑла ÑнÑÑа.',
+ 'Table has been altered.' => 'ТаблиÑа бÑла изменена.',
+ 'Table has been created.' => 'ТаблиÑа бÑла Ñоздана.',
+ 'Alter table' => 'ÐзмениÑÑ ÑаблиÑÑ',
+ 'Create table' => 'СоздаÑÑ ÑаблиÑÑ',
+ 'Table name' => 'ÐÐ¼Ñ ÑаблиÑÑ',
+ 'engine' => 'Ñип',
+ 'collation' => 'ÑÑавнение',
+ 'Column name' => 'ÐÐ¼Ñ Ð¿Ð¾Ð»Ñ',
+ 'Type' => 'Тип',
+ 'Length' => 'Ðлина',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto Increment',
+ 'Options' => 'ÐейÑÑвие',
+ 'Save' => 'СоÑ
ÑаниÑÑ',
+ 'Drop' => 'УÑÑÑаниÑÑ',
+ 'Database has been dropped.' => 'Ðаза даннÑÑ
бÑла ÑнÑÑа.',
+ 'Database has been created.' => 'Ðаза даннÑÑ
бÑла Ñоздана.',
+ 'Database has been renamed.' => 'Ðаза даннÑÑ
бÑла пеÑеименована.',
+ 'Database has been altered.' => 'Ðаза даннÑÑ
бÑла изменена.',
+ 'Alter database' => 'ÐзмениÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
+ 'Create database' => 'СоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
+ 'SQL command' => 'SQL запÑоÑ',
+ 'Dump' => 'ÐкÑпоÑÑ',
+ 'Logout' => 'ÐÑпиÑаÑÑÑÑ',
+ 'database' => 'база даннÑÑ
',
+ 'Use' => 'ÐÑбÑаÑÑ',
+ 'No tables.' => 'Ðикакое ÑаблиÑе.',
+ 'select' => 'вÑпиÑаÑÑ',
+ 'Create new table' => 'СоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑаблиÑÑ',
+ 'Item has been deleted.' => 'ÐапиÑÑ Ð±Ñл ÑÑеÑеннÑй.',
+ 'Item has been updated.' => 'ÐапиÑÑ Ð±Ñл акÑÑализиÑованнÑй.',
+ 'Item has been inserted.' => 'ÐапиÑÑ Ð±Ñл вÑÑавннÑй.',
+ 'Edit' => 'ÐбÑабоÑаÑÑ',
+ 'Insert' => 'ÐÑÑавиÑÑ',
+ 'Save and insert next' => 'УложиÑÑ Ð¸ вÑÑавиÑÑ Ð´ÑÑгой',
+ 'Delete' => 'СÑеÑеÑÑ',
+ 'Database' => 'Ðаза даннÑÑ
',
+ 'Routines' => 'ÐÑоÑедÑÑÑ Ð¸ ÑÑнкÑии',
+ 'Indexes has been altered.' => 'ÐндекÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ.',
+ 'Indexes' => 'ÐндекÑÑ',
+ 'Alter indexes' => 'ÐзмениÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ',
+ 'Add next' => 'ÐобавиÑÑ Ð´ÑÑгое',
+ 'Language' => 'ЯзÑк',
+ 'Select' => 'ÐÑпиÑаÑÑ',
+ 'New item' => 'ÐовÑй запиÑÑ',
+ 'Search' => 'ÐоиÑк',
+ 'Sort' => 'СоÑÑиÑоваÑÑ',
+ 'DESC' => 'в ниÑÑ
одÑÑем поÑÑдке',
+ 'Limit' => 'ÐимиÑ',
+ 'No rows.' => 'Ðикакое запиÑи.',
+ 'Action' => 'ÐейÑÑвие',
+ 'edit' => 'обÑабоÑаÑÑ',
+ 'Page' => 'СÑÑаниÑа',
+ 'Query executed OK, %d row(s) affected.' => array('ÐапÑÐ¾Ñ Ð² поÑÑдке, изменен %d запиÑÑ.', 'ÐапÑÐ¾Ñ Ð² поÑÑдке, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ %d запиÑи.', 'ÐапÑÐ¾Ñ Ð² поÑÑдке, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ %d запиÑи.'),
+ 'Error in query' => 'ÐÑибка в запÑоÑe',
+ 'Execute' => 'СделаÑÑ',
+ 'Table' => 'ТаблиÑа',
+ 'Foreign keys' => 'ÐноÑÑÑаннÑе клÑÑи',
+ 'Triggers' => 'ТÑиггеÑÑ',
+ 'View' => 'ÐзглÑд',
+ 'Unable to select the table' => 'Ðе ÑдалоÑÑ Ð²ÑпиÑаÑÑ ÑаблиÑÑ',
+ 'Invalid CSRF token. Send the form again.' => 'ÐедейÑÑвиÑелÑнÑй Ñокен CSRF. ÐÑпÑавиÑе ÑоÑмÑлÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ Ñаз.',
+ 'Comment' => 'ÐомменÑаÑий',
+ 'Default values has been set.' => 'ÐÑÑ
однÑе даннÑе бÑли заÑикÑиÑованÑ.',
+ 'Default values' => 'ÐÑÑ
однÑе даннÑе',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'ÐзобÑазиÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸',
+ '%d byte(s)' => array('%d байÑ', '%d байÑÑ', '%d байÑов'),
+ 'No commands to execute.' => 'Ðикакое запÑоÑÑ Ð´Ð»Ñ Ð²Ñполнение командÑ.',
+ 'Unable to upload a file.' => 'Ðе ÑдалоÑÑ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ñайл.',
+ 'File upload' => 'ÐапиÑаÑÑ Ñайл',
+ 'File uploads are disabled.' => 'ÐапиÑÑваÑÑ ÑÐ°Ð¹Ð»Ñ Ð·Ð°Ð¿ÑеÑено.',
+ 'Routine has been called, %d row(s) affected.' => array('ÐÑоÑедÑÑа бÑла вÑзвана, бÑл изменен %d запиÑÑ.', 'ÐÑоÑедÑÑа бÑла вÑзвана, бÑли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ %d запиÑÑ.', 'ÐÑоÑедÑÑа бÑла вÑзвана, бÑло изменено %d запиÑов.'),
+ 'Call' => 'ÐÑзваÑÑ',
+ 'No MySQL extension' => 'ÐÐ¸ÐºÐ°ÐºÐ°Ñ MySQL ÑаÑÑÑжка',
+ 'None of supported PHP extensions (%s) are available.' => 'ÐÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ°Ñ Ð¸Ð· пооÑÑениÑ
PHP ÑаÑÑÑжении (%s).',
+ 'Sessions must be enabled.' => 'СеÑÑион должно бÑÑÑ ÑазÑеÑенное.',
+ 'Session expired, please login again.' => 'СеÑÑион пÑоÑла, запиÑаÑÑÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ Ñаз.',
+ 'Text length' => 'Ðлина ÑекÑÑов',
+ 'Foreign key has been dropped.' => 'ÐноÑÑÑаннÑй клÑÑ Ð±Ñл Ñдалена.',
+ 'Foreign key has been altered.' => 'ÐноÑÑÑаннÑй клÑÑ Ð±Ñл акÑÑализиÑованнÑй.',
+ 'Foreign key has been created.' => 'ÐноÑÑÑаннÑй клÑÑ Ð±Ñл Ñоздан.',
+ 'Foreign key' => 'ÐноÑÑÑаннÑй клÑÑ',
+ 'Target table' => 'ФиниÑÐ½Ð°Ñ ÑаблиÑа',
+ 'Change' => 'ÐзмениÑÑ',
+ 'Source' => 'ÐÑÑоÑник',
+ 'Target' => 'ЦелÑ',
+ 'Add column' => 'ÐобавиÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÑ',
+ 'Alter' => 'ÐзмениÑÑ',
+ 'Add foreign key' => 'ÐобавиÑÑ Ð¸Ð½Ð¾ÑÑÑаннÑй клÑÑ',
+ 'ON DELETE' => 'ÐÑи ÑÑиÑание',
+ 'ON UPDATE' => 'ÐÑи акÑÑализаÑии',
+ 'Index Type' => 'Тип индекÑа',
+ 'Column (length)' => 'Ðолонка (длина)',
+ 'View has been dropped.' => 'ÐзглÑд бÑл Ñдален.',
+ 'View has been altered.' => 'ÐзглÑд бÑл изменен.',
+ 'View has been created.' => 'ÐзглÑд бÑл Ñоздан.',
+ 'Alter view' => 'ÐзмениÑÑ Ð²Ð·Ð³Ð»Ñд',
+ 'Create view' => 'СоздаÑÑ Ð²Ð·Ð³Ð»Ñд',
+ 'Name' => 'ÐмÑ',
+ 'Process list' => 'СпиÑок пÑоÑеÑÑов',
+ '%d process(es) has been killed.' => array('ÐÑл завеÑÑÑн %d пÑоÑеÑÑ.', 'ÐÑло завеÑÑÑно %d пÑоÑеÑÑов.', 'ÐÑло завеÑÑÑно %d пÑоÑеÑÑов.'),
+ 'Kill' => 'ÐавеÑÑиÑÑ',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'ÐÐ¼Ñ Ð¿Ð°ÑамеÑÑа',
+ 'Database schema' => 'СÑ
ема Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
+ 'Create procedure' => 'СоздаÑÑ Ð¿ÑоÑедÑÑÑ',
+ 'Create function' => 'СоздаÑÑ ÑÑнкÑиÑ',
+ 'Routine has been dropped.' => 'ÐÑоÑедÑÑа бÑла Ñдалена.',
+ 'Routine has been altered.' => 'ÐÑоÑедÑÑа бÑла изменена.',
+ 'Routine has been created.' => 'ÐÑоÑедÑÑа бÑла Ñоздана.',
+ 'Alter function' => 'ÐзмениÑÑ ÑÑнкÑиÑ',
+ 'Alter procedure' => 'ÐзмениÑÑ Ð¿ÑоÑедÑÑÑ',
+ 'Return type' => 'ÐозвÑаÑнÑй Ñип',
+ 'Add trigger' => 'ÐобавиÑÑ ÑÑиггеÑ',
+ 'Trigger has been dropped.' => 'ТÑÐ¸Ð³Ð³ÐµÑ Ð±Ñл Ñдален.',
+ 'Trigger has been altered.' => 'ТÑÐ¸Ð³Ð³ÐµÑ Ð±Ñл изменен.',
+ 'Trigger has been created.' => 'ТÑÐ¸Ð³Ð³ÐµÑ Ð±Ñл Ñоздан.',
+ 'Alter trigger' => 'ÐзмениÑÑ ÑÑиггеÑ',
+ 'Create trigger' => 'СоздаÑÑ ÑÑиггеÑ',
+ 'Time' => 'ÐÑемÑ',
+ 'Event' => 'СобÑÑие',
+ 'MySQL version: %s through PHP extension %s' => 'ÐеÑÑÐ¸Ñ MySQL: %s ÑеÑез PHP ÑаÑÑÑжение %s',
+ '%d row(s)' => array('%d ÑÑÑока', '%d ÑÑÑоки', '%d ÑÑÑоков'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ÐÑи пеÑемене акÑÑалÑного вÑемÑ',
+ 'Remove' => 'ÐзÑÑÑÑ',
+ 'Are you sure?' => 'УвеÑен?',
+ 'Privileges' => 'ÐолномоÑие',
+ 'Create user' => 'СоздаÑÑ Ð¿Ð¾Ð»ÑзоваÑела',
+ 'User has been dropped.' => 'ÐолÑзоваÑÐµÐ»Ñ Ð±Ñл Ñдален.',
+ 'User has been altered.' => 'ÐолÑзоваÑÐµÐ»Ñ Ð±Ñл изменен.',
+ 'User has been created.' => 'ÐолÑзоваÑÐµÐ»Ñ Ð±Ñл Ñоздан.',
+ 'Hashed' => 'ÑÑо Ñ
ÑÑ',
+ 'Column' => 'Ðолонка',
+ 'Routine' => 'ÐÑоÑедÑÑа',
+ 'Grant' => 'ÐозволиÑÑ',
+ 'Revoke' => 'ÐапÑеÑиÑÑ',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'ÐÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑое POST даннÑе. УменÑÑиÑе даннÑе или ÑвелиÑиÑе паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑной диÑекÑÐ¸Ð²Ñ "post_max_size".',
+ 'Logged as: %s' => 'ÐапиÑаннÑй как: %s',
+ 'Move up' => 'ÐеÑемеÑÑиÑÑ Ð²Ð²ÐµÑÑ
',
+ 'Move down' => 'ÐеÑемеÑÑиÑÑ Ð²Ð½Ð¸Ð·',
+ 'Functions' => 'ФÑнкÑии',
+ 'Aggregation' => 'ÐгÑегаÑиÑ',
+ 'Export' => 'ÐкÑпоÑÑ',
+ 'Output' => 'ÐÑÑ
од',
+ 'open' => 'оÑкÑÑÑÑ',
+ 'save' => 'ÑложиÑÑ',
+ 'Format' => 'ФоÑмаÑ',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Tables' => 'ТаблиÑÑ',
+ 'Data' => 'ÐаннÑе',
+ 'Event has been dropped.' => 'СобÑÑие бÑла Ñдален.',
+ 'Event has been altered.' => 'СобÑÑие бÑла изменена.',
+ 'Event has been created.' => 'СобÑÑие бÑла Ñоздана.',
+ 'Alter event' => 'ÐзмениÑÑ ÑобÑÑие',
+ 'Create event' => 'СоздаÑÑ ÑобÑÑие',
+ 'At given time' => 'Рданное вÑемÑ',
+ 'Every' => 'ЧеÑез каждÑÑ
',
+ 'Events' => 'СобÑÑиÑ',
+ 'Schedule' => 'Ðлан',
+ 'Start' => 'ÐаÑало',
+ 'End' => 'ÐонеÑ',
+ 'Status' => 'СоÑÑоÑние',
+ 'On completion preserve' => 'Ðо доделке ÑоÑ
ÑаниÑÑ',
+ 'Tables and views' => 'ТаблиÑÑ Ð¸ взглÑдÑ',
+ 'Data Length' => 'ÐбÑÑм даннÑÑ
',
+ 'Index Length' => 'ÐбÑÑм индекÑов',
+ 'Data Free' => 'СвободнÑе меÑÑо',
+ 'Collation' => 'СÑавнение',
+ 'Analyze' => 'ÐнализиÑоваÑÑ',
+ 'Optimize' => 'ÐпÑимизиÑоваÑÑ',
+ 'Check' => 'ÐÑовеÑиÑÑ',
+ 'Repair' => 'ÐопÑавиÑÑ',
+ 'Truncate' => 'ÐеÑемазаÑÑ',
+ 'Tables have been truncated.' => 'ТаблиÑÑ Ð±Ñли пеÑемазание.',
+ 'Rows' => 'СÑÑоков',
+ ',' => ' ',
+ 'Tables have been moved.' => 'ТаблиÑÑ Ð±Ñли пеÑемеÑÑенÑ.',
+ 'Move to other database' => 'ÐеÑемеÑÑиÑÑ Ð² дÑÑÐ³Ð¾Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
+ 'Move' => 'ÐеÑемеÑÑиÑÑ',
+ 'Engine' => 'Тип',
+ 'Save and continue edit' => 'УложиÑÑ Ð¸ пÑодолжаÑÑ ÑедакÑиÑование',
+ 'clone' => 'клониÑоваÑÑ',
+ 'original' => 'иÑÑ
однÑй',
+ '%d item(s) have been affected.' => array('ÐÑл пÑиÑинено %d запиÑÑ.', 'ÐÑли пÑиÑÐ¸Ð½ÐµÐ½Ñ %d запиÑÑ.', 'ÐÑло пÑиÑинено %d запиÑов.'),
+ 'whole result' => 'веÑÑ ÑезÑлÑÑаÑ',
+ 'Tables have been dropped.' => 'ТаблиÑÑ Ð±Ñли ÑÑÑÑаненÑ.',
+ 'Clone' => 'ÐлониÑоваÑÑ',
+ 'Partition by' => 'РазделиÑÑ Ð¿Ð¾',
+ 'Partitions' => 'РазделÑ',
+ 'Partition name' => 'ÐÐ¼Ñ Ñаздела',
+ 'Values' => 'ÐаÑамеÑÑÑ',
+ '%d row(s) has been imported.' => array('ÐÑл импоÑÑиÑован %d v.', 'ÐÑли импоÑÑиÑÐ¾Ð²Ð°Ð½Ñ %d запиÑÑ.', 'ÐÑло импоÑÑиÑовано %d запиÑов.'),
+ 'CSV Import' => 'ÐмпоÑÑ CSV',
+ 'Import' => 'ÐмпоÑÑ',
+ 'Table structure' => 'СÑÑÑкÑÑÑа ÑаблиÑи',
+ 'Select table' => 'ÐÑпиÑаÑÑ ÑаблиÑÑ',
+ 'Stop on error' => 'ÐÑекÑаÑиÑÑ Ð¿Ñи оÑибке',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'ÐÑло пеÑеÑеÑено макÑималÑнÑе колиÑеÑÑво полÑ. ÐаÑаÑÑиÑе %s и %s.',
+ '(anywhere)' => '(в лÑбом меÑÑе)',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/sk.inc.php b/adminer/lang/sk.inc.php
new file mode 100644
index 00000000..d5cc6c4e
--- /dev/null
+++ b/adminer/lang/sk.inc.php
@@ -0,0 +1,217 @@
+ 'Prihlásiť sa',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => 'Odhlásenie prebehlo v poriadku.',
+ 'Invalid credentials.' => 'Neplatné prihlasovacie údaje.',
+ 'Server' => 'Server',
+ 'Username' => 'PoužÃvateľ',
+ 'Password' => 'Heslo',
+ 'Select database' => 'Vybrať databázu',
+ 'Invalid database.' => 'Nesprávna databáza.',
+ 'Create new database' => 'Vytvoriť novú databázu',
+ 'Table has been dropped.' => 'Tabuľka bola odstránená.',
+ 'Table has been altered.' => 'Tabuľka bola zmenená.',
+ 'Table has been created.' => 'Tabuľka bola vytvorená.',
+ 'Alter table' => 'Zmeniť tabuľku',
+ 'Create table' => 'Vytvoriť tabuľku',
+ 'Table name' => 'Názov tabuľky',
+ 'engine' => 'úložisko',
+ 'collation' => 'porovnávanie',
+ 'Column name' => 'Názov stĺpca',
+ 'Type' => 'Typ',
+ 'Length' => 'Dĺžka',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'Auto Increment',
+ 'Options' => 'Voľby',
+ 'Save' => 'Uložiť',
+ 'Drop' => 'Odstrániť',
+ 'Database has been dropped.' => 'Databáza bola odstránená.',
+ 'Database has been created.' => 'Databáza bola vytvorená.',
+ 'Database has been renamed.' => 'Databáza bola premenovaná.',
+ 'Database has been altered.' => 'Databáza bola zmenená.',
+ 'Alter database' => 'Zmeniť databázu',
+ 'Create database' => 'Vytvoriť databázu',
+ 'SQL command' => 'SQL prÃkaz',
+ 'Dump' => 'Export',
+ 'Logout' => 'Odhlásiť',
+ 'database' => 'databáza',
+ 'Use' => 'Vybrať',
+ 'No tables.' => 'Žiadne tabuľky.',
+ 'select' => 'vypÃsaÅ¥',
+ 'Create new table' => 'Vytvoriť novú tabuľku',
+ 'Item has been deleted.' => 'Položka bola vymazaná.',
+ 'Item has been updated.' => 'Položka bola aktualizovaná.',
+ 'Item has been inserted.' => 'Položka bola vložená.',
+ 'Edit' => 'Upraviť',
+ 'Insert' => 'Vložiť',
+ 'Save and insert next' => 'UložiÅ¥ a vložiÅ¥ ÄalÅ¡Ã',
+ 'Delete' => 'Zmazať',
+ 'Database' => 'Databáza',
+ 'Routines' => 'Procedúry',
+ 'Indexes has been altered.' => 'Indexy boli zmenené.',
+ 'Indexes' => 'Indexy',
+ 'Alter indexes' => 'Zmeniť indexy',
+ 'Add next' => 'PridaÅ¥ ÄalÅ¡Ã',
+ 'Language' => 'Jazyk',
+ 'Select' => 'VypÃsaÅ¥',
+ 'New item' => 'Nová položka',
+ 'Search' => 'Vyhľadať',
+ 'Sort' => 'Zotriediť',
+ 'DESC' => 'zostupne',
+ 'Limit' => 'Limit',
+ 'No rows.' => 'Žiadne riadky.',
+ 'Action' => 'Akcia',
+ 'edit' => 'upraviť',
+ 'Page' => 'Stránka',
+ 'Query executed OK, %d row(s) affected.' => array('PrÃkaz prebehol v poriadku, bol zmenený %d záznam.', 'PrÃkaz prebehol v poriadku boli zmenené %d záznamy.', 'PrÃkaz prebehol v poriadku bolo zmenených %d záznamov.'),
+ 'Error in query' => 'Chyba v dotaze',
+ 'Execute' => 'Vykonať',
+ 'Table' => 'Tabuľka',
+ 'Foreign keys' => 'Cudzie kľúÄe',
+ 'Triggers' => 'Triggery',
+ 'View' => 'Pohľad',
+ 'Unable to select the table' => 'Tabuľku sa nepodarilo vypÃsaÅ¥',
+ 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odošlite formulár znova.',
+ 'Comment' => 'Komentár',
+ 'Default values has been set.' => 'Východzie hodnoty boli nastavené.',
+ 'Default values' => 'Východzie hodnoty',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'Zobraziť komentáre stĺpcov',
+ '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtov'),
+ 'No commands to execute.' => 'Žiadne prÃkazy na vykonanie.',
+ 'Unable to upload a file.' => 'Súbor sa nepodarilo nahrať.',
+ 'File upload' => 'Nahranie súboru',
+ 'File uploads are disabled.' => 'Nahrávánie súborov nie je povolené.',
+ 'Routine has been called, %d row(s) affected.' => array('Procedúra bola zavolaná, bol zmenený %d záznam.', 'Procedúra bola zavolaná, boli zmenené %d záznamy.', 'Procedúra bola zavolaná, bolo zmenených %d záznamov.'),
+ 'Call' => 'Zavolať',
+ 'No MySQL extension' => 'Žiadne MySQL rozÅ¡Ãrenie',
+ 'None of supported PHP extensions (%s) are available.' => 'Nie je dostupné žiadne z podporovaných rozÅ¡Ãrenà (%s).',
+ 'Sessions must be enabled.' => 'Session premenné musia byť povolené.',
+ 'Session expired, please login again.' => 'Session vyprÅ¡ala, prihláste sa prosÃm znova.',
+ 'Text length' => 'Dĺžka textov',
+ 'Foreign key has been dropped.' => 'Cudzà kÄ¾ÃºÄ bol odstránený.',
+ 'Foreign key has been altered.' => 'Cudzà kÄ¾ÃºÄ bol zmenený.',
+ 'Foreign key has been created.' => 'Cudzà kÄ¾ÃºÄ bol vytvorený.',
+ 'Foreign key' => 'Cudzà kľúÄ',
+ 'Target table' => 'Cieľová tabuľka',
+ 'Change' => 'Zmeniť',
+ 'Source' => 'Zdroj',
+ 'Target' => 'Cieľ',
+ 'Add column' => 'Pridať stĺpec',
+ 'Alter' => 'Zmeniť',
+ 'Add foreign key' => 'PridaÅ¥ cudzà kľúÄ',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'Typ indexu',
+ 'Column (length)' => 'Stĺpec (dĺžka)',
+ 'View has been dropped.' => 'Pohľad bol odstránený.',
+ 'View has been altered.' => 'Pohľad bol zmenený.',
+ 'View has been created.' => 'Pohľad bol vytvorený.',
+ 'Alter view' => 'Zmeniť pohľad',
+ 'Create view' => 'Vytvoriť pohľad',
+ 'Name' => 'Názov',
+ 'Process list' => 'Zoznam procesov',
+ '%d process(es) has been killed.' => array('Bol ukonÄený %d proces.', 'Boli ukonÄené %d procesy.', 'Bolo ukonÄených %d procesov.'),
+ 'Kill' => 'UkonÄiÅ¥',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'Názov parametra',
+ 'Database schema' => 'Schéma databázy',
+ 'Create procedure' => 'Vytvoriť procedúru',
+ 'Create function' => 'Vytvoriť funkciu',
+ 'Routine has been dropped.' => 'Procedúra bola odstránená.',
+ 'Routine has been altered.' => 'Procedúra bola zmenená.',
+ 'Routine has been created.' => 'Procedúra bola vytvorená.',
+ 'Alter function' => 'Zmeniť funkciu',
+ 'Alter procedure' => 'Zmeniť procedúru',
+ 'Return type' => 'Návratový typ',
+ 'Add trigger' => 'Pridať trigger',
+ 'Trigger has been dropped.' => 'Trigger bol odstránený.',
+ 'Trigger has been altered.' => 'Trigger bol zmenený.',
+ 'Trigger has been created.' => 'Trigger bol vytvorený.',
+ 'Alter trigger' => 'Zmeniť trigger',
+ 'Create trigger' => 'Vytvoriť trigger',
+ 'Time' => 'Äas',
+ 'Event' => 'Udalosť',
+ 'MySQL version: %s through PHP extension %s' => 'Verzia MySQL: %s cez PHP rozÅ¡Ãrenie %s',
+ '%d row(s)' => array('%d riadok', '%d riadky', '%d riadkov'),
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'Pri zmene aktuálny Äas',
+ 'Remove' => 'Odobrať',
+ 'Are you sure?' => 'Naozaj?',
+ 'Privileges' => 'Oprávnenia',
+ 'Create user' => 'VytvoriÅ¥ použÃvateľa',
+ 'User has been dropped.' => 'PoužÃvateľ bol odstránený.',
+ 'User has been altered.' => 'PoužÃvateľ bol zmenený.',
+ 'User has been created.' => 'PoužÃvateľ bol vytvorený.',
+ 'Hashed' => 'Zahašované',
+ 'Column' => 'Stĺpec',
+ 'Routine' => 'Procedúra',
+ 'Grant' => 'Povoliť',
+ 'Revoke' => 'Zakázať',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'PrÃliÅ¡ veľké POST dáta. ZmenÅ¡ite dáta alebo zvýšte hodnotu konfiguraÄej direktÃvy "post_max_size".',
+ 'Logged as: %s' => 'Prihlásený ako: %s',
+ 'Move up' => 'Presunúť hore',
+ 'Move down' => 'Presunúť dolu',
+ 'Functions' => 'Funkcie',
+ 'Aggregation' => 'Agregácia',
+ 'Export' => 'Export',
+ 'Output' => 'Výstup',
+ 'open' => 'otvoriť',
+ 'save' => 'uložiť',
+ 'Format' => 'Formát',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CSV',
+ 'Tables' => 'Tabuľky',
+ 'Data' => 'Dáta',
+ 'Event has been dropped.' => 'Udalosť bola odstránená.',
+ 'Event has been altered.' => 'Udalosť bola zmenená.',
+ 'Event has been created.' => 'Udalosť bola vytvorená.',
+ 'Alter event' => 'Upraviť udalosť',
+ 'Create event' => 'Vytvoriť udalosť',
+ 'At given time' => 'V stanovený Äas',
+ 'Every' => 'Každých',
+ 'Events' => 'Udalosti',
+ 'Schedule' => 'Plán',
+ 'Start' => 'ZaÄiatok',
+ 'End' => 'Koniec',
+ 'Status' => 'Stav',
+ 'On completion preserve' => 'Po dokonÄenà zachovat',
+ 'Save and continue edit' => 'UložiÅ¥ a pokraÄovaÅ¥ v úpravách',
+ 'original' => 'originál',
+ 'Tables have been truncated.' => 'Tabuľka bola vyprázdnená',
+ 'Tables have been moved.' => 'Tabuľka bola presunutá',
+ 'Tables have been dropped.' => 'Tabuľka bola odstránená',
+ 'Tables and views' => 'Tabuľky a pohľady',
+ 'Engine' => 'Typ',
+ 'Collation' => 'Porovnávanie',
+ 'Data Length' => 'Veľkosť dát',
+ 'Index Length' => 'Veľkosť indexu',
+ 'Data Free' => 'Voľné miesto',
+ 'Rows' => 'Riadky',
+ ',' => ' ',
+ 'Analyze' => 'Analyzovať',
+ 'Optimize' => 'Optimalizovať',
+ 'Check' => 'Skontrolovať',
+ 'Repair' => 'Opraviť',
+ 'Truncate' => 'Vyprázdniť',
+ 'Move to other database' => 'Presunúť do inej databázy',
+ 'Move' => 'Presunúť',
+ '%d item(s) have been affected.' => '%d položiek bolo ovplyvnených.',
+ 'whole result' => 'celý výsledok',
+ 'clone' => 'klonovať',
+ 'Clone' => 'Klonovať',
+ 'Partition by' => 'Rozdeliť podľa',
+ 'Partitions' => 'Oddiely',
+ 'Partition name' => 'Názov oddielu',
+ 'Values' => 'Hodnoty',
+ '%d row(s) has been imported.' => array('Bol importovaný %d záznam.', 'Boli importované %d záznamy.', 'Bolo importovaných %d záznamov.'),
+ 'CSV Import' => 'Import CSV',
+ 'Import' => 'Import',
+ 'Table structure' => 'Štruktúra tabuľky',
+ 'Select table' => 'VypÃsaÅ¥ tabuľku',
+ 'Stop on error' => 'Zastaviť pri chybe',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Bol prekroÄený maximálny poÄet povolených polÃ. Zvýšte prosÃm %s a %s.',
+ '(anywhere)' => '(kdekoľvek)',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/lang/zh.inc.php b/adminer/lang/zh.inc.php
new file mode 100644
index 00000000..3c217ef3
--- /dev/null
+++ b/adminer/lang/zh.inc.php
@@ -0,0 +1,217 @@
+ 'ç»å½',
+ 'Adminer' => 'Adminer',
+ 'Logout successful.' => '注éæåã',
+ 'Invalid credentials.' => 'æ æåæ®ã',
+ 'Server' => 'æå¡å¨',
+ 'Username' => 'ç¨æ·å',
+ 'Password' => 'å¯ç ',
+ 'Select database' => 'éæ©æ°æ®åº',
+ 'Invalid database.' => 'æ ææ°æ®åºã',
+ 'Create new database' => 'åå»ºæ°æ°æ®åº',
+ 'Table has been dropped.' => '已丢å¼è¡¨ã',
+ 'Table has been altered.' => 'å·²æ´æ¹è¡¨ã',
+ 'Table has been created.' => 'å·²å建表ã',
+ 'Alter table' => 'æ´æ¹è¡¨',
+ 'Create table' => 'å建表',
+ 'Table name' => '表å',
+ 'engine' => '弿',
+ 'collation' => 'æ ¡å¯¹',
+ 'Column name' => 'åå',
+ 'Type' => 'ç±»å',
+ 'Length' => 'é¿åº¦',
+ 'NULL' => 'NULL',
+ 'Auto Increment' => 'èªå¨å¢é',
+ 'Options' => 'é项',
+ 'Save' => 'ä¿å',
+ 'Drop' => '丢å¼',
+ 'Database has been dropped.' => '已䏢弿°æ®åºã',
+ 'Database has been created.' => 'å·²åå»ºæ°æ®åºã',
+ 'Database has been renamed.' => 'å·²éå½åæ°æ®åºã',
+ 'Database has been altered.' => 'å·²æ´æ¹æ°æ®åºã',
+ 'Alter database' => 'æ´æ¹æ°æ®åº',
+ 'Create database' => 'åå»ºæ°æ®åº',
+ 'SQL command' => 'SQLå½ä»¤',
+ 'Dump' => '导å
¥/导åº',
+ 'Logout' => '注é',
+ 'database' => 'æ°æ®åº',
+ 'Use' => '使ç¨',
+ 'No tables.' => '没æè¡¨ã',
+ 'select' => 'éæ©',
+ 'Create new table' => 'å建æ°è¡¨',
+ 'Item has been deleted.' => 'å·²å é¤é¡¹ç®ã',
+ 'Item has been updated.' => 'å·²æ´æ°é¡¹ç®ã',
+ 'Item has been inserted.' => 'å·²æå
¥é¡¹ç®ã',
+ 'Edit' => 'ç¼è¾',
+ 'Insert' => 'æå
¥',
+ 'Save and insert next' => 'ä¿åå¹¶æå
¥ä¸ä¸ä¸ª',
+ 'Delete' => 'å é¤',
+ 'Database' => 'æ°æ®åº',
+ 'Routines' => 'åç¨åº',
+ 'Indexes has been altered.' => 'å·²æ´æ¹ç´¢å¼ã',
+ 'Indexes' => 'ç´¢å¼',
+ 'Alter indexes' => 'æ´æ¹ç´¢å¼',
+ 'Add next' => 'æ·»å ä¸ä¸ä¸ª',
+ 'Language' => 'è¯è¨',
+ 'Select' => 'éæ©',
+ 'New item' => 'æ°å»ºé¡¹',
+ 'Search' => 'æç´¢',
+ 'Sort' => 'æåº',
+ 'DESC' => 'éåº',
+ 'Limit' => 'éå®',
+ 'No rows.' => '没æè¡ã',
+ 'Action' => 'å¨ä½',
+ 'edit' => 'ç¼è¾',
+ 'Page' => '页é¢',
+ 'Query executed OK, %d row(s) affected.' => 'æ§è¡æ¥è¯¢OKï¼%d è¡åå½±å',
+ 'Error in query' => 'æ¥è¯¢åºé',
+ 'Execute' => 'æ§è¡',
+ 'Table' => '表',
+ 'Foreign keys' => 'å¤é®',
+ 'Triggers' => '触åå¨',
+ 'View' => 'è§å¾',
+ 'Unable to select the table' => 'ä¸è½éæ©è¯¥è¡¨',
+ 'Invalid CSRF token. Send the form again.' => 'æ æ CSRF 令çãéæ°åé表åã',
+ 'Comment' => '注é',
+ 'Default values has been set.' => 'é»è®¤å¼å·²è®¾ç½®ã',
+ 'Default values' => 'é»è®¤å¼',
+ 'BOOL' => 'BOOL',
+ 'Show column comments' => 'æ¾ç¤ºå注é',
+ '%d byte(s)' => '%d åè',
+ 'No commands to execute.' => '没æå½ä»¤æ§è¡ã',
+ 'Unable to upload a file.' => 'ä¸è½ä¸ä¼ æä»¶ã',
+ 'File upload' => 'æä»¶ä¸ä¼ ',
+ 'File uploads are disabled.' => 'æä»¶ä¸ä¼ 被ç¦ç¨ã',
+ 'Routine has been called, %d row(s) affected.' => 'åç¨åºè¢«è°ç¨ï¼%d è¡è¢«å½±å',
+ 'Call' => 'è°ç¨',
+ 'No MySQL extension' => '没æMySQLæ©å±',
+ 'None of supported PHP extensions (%s) are available.' => 'æ²¡ææ¯æç PHP æ©å±å¯ç¨ï¼%sï¼ã',
+ 'Sessions must be enabled.' => 'ä¼è¯å¿
须被å¯ç¨ã',
+ 'Session expired, please login again.' => 'ä¼è¯å·²è¿æï¼è¯·éæ°ç»å½ã',
+ 'Text length' => 'ææ¬é¿åº¦',
+ 'Foreign key has been dropped.' => 'å·²å é¤å¤é®ã',
+ 'Foreign key has been altered.' => 'å·²æ´æ¹å¤é®ã',
+ 'Foreign key has been created.' => 'å·²å建å¤é®ã',
+ 'Foreign key' => 'å¤é®',
+ 'Target table' => 'ç®æ 表',
+ 'Change' => 'æ´æ¹',
+ 'Source' => 'æº',
+ 'Target' => 'ç®æ ',
+ 'Add column' => 'å¢å å',
+ 'Alter' => 'æ´æ¹',
+ 'Add foreign key' => 'æ·»å å¤é®',
+ 'ON DELETE' => 'ON DELETE',
+ 'ON UPDATE' => 'ON UPDATE',
+ 'Index Type' => 'ç´¢å¼ç±»å',
+ 'Column (length)' => 'åï¼é¿åº¦ï¼',
+ 'View has been dropped.' => '已丢å¼è§å¾ã',
+ 'View has been altered.' => 'å·²æ´æ¹è§å¾ã',
+ 'View has been created.' => 'å·²å建è§å¾ã',
+ 'Alter view' => 'æ´æ¹è§å¾',
+ 'Create view' => 'å建è§å¾',
+ 'Name' => 'åç§°',
+ 'Process list' => 'è¿ç¨å表',
+ '%d process(es) has been killed.' => '%d 个è¿ç¨è¢«ç»æ¢',
+ 'Kill' => 'ç»æ¢',
+ 'IN-OUT' => 'IN-OUT',
+ 'Parameter name' => 'åæ°å',
+ 'Database schema' => 'æ°æ®åºæ¦è¦',
+ 'Create procedure' => 'å建è¿ç¨',
+ 'Create function' => 'åå»ºå½æ°',
+ 'Routine has been dropped.' => '已丢å¼åç¨åºã',
+ 'Routine has been altered.' => 'å·²æ´æ¹åç¨åºã',
+ 'Routine has been created.' => 'å·²å建åç¨åºã',
+ 'Alter function' => 'æ´æ¹å½æ°',
+ 'Alter procedure' => 'æ´æ¹è¿ç¨',
+ 'Return type' => 'è¿åç±»å',
+ 'Add trigger' => 'å建触åå¨',
+ 'Trigger has been dropped.' => '已丢å¼è§¦åå¨ã',
+ 'Trigger has been altered.' => 'å·²æ´æ¹è§¦åå¨ã',
+ 'Trigger has been created.' => 'å·²å建触åå¨ã',
+ 'Alter trigger' => 'æ´æ¹è§¦åå¨',
+ 'Create trigger' => 'å建触åå¨',
+ 'Time' => 'æ¶é´',
+ 'Event' => 'äºä»¶',
+ 'MySQL version: %s through PHP extension %s' => 'MySQL çæ¬ï¼%s éè¿ PHP æ©å± %s',
+ '%d row(s)' => '%d è¡',
+ '~ %s' => '~ %s',
+ 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
+ 'Remove' => 'ç§»é¤',
+ 'Are you sure?' => 'ä½ ç¡®å®åï¼',
+ 'Privileges' => 'æé',
+ 'Create user' => 'åå»ºç¨æ·',
+ 'User has been dropped.' => '已丢å¼ç¨æ·ã',
+ 'User has been altered.' => 'å·²æ´æ¹ç¨æ·ã',
+ 'User has been created.' => 'å·²åå»ºç¨æ·ã',
+ 'Hashed' => 'Hashed',
+ 'Column' => 'å',
+ 'Routine' => 'åç¨åº',
+ 'Grant' => 'ææ',
+ 'Revoke' => 'åºé¤',
+ 'Logged as: %s' => 'ç»å½ä¸ºï¼%s',
+ 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => '太大ç POST æ°æ®ãåå°æ°æ®æè
å¢å âpost_max_sizeâ é
ç½®å½ä»¤ã',
+ 'Move up' => 'ä¸ç§»',
+ 'Move down' => 'ä¸ç§»',
+ 'Export' => '导åº',
+ 'Tables' => '表',
+ 'Data' => 'æ°æ®',
+ 'Output' => 'è¾åº',
+ 'open' => 'æå¼',
+ 'save' => 'ä¿å',
+ 'Format' => 'æ ¼å¼',
+ 'SQL' => 'SQL',
+ 'CSV' => 'CVS',
+ 'Functions' => '彿°',
+ 'Aggregation' => 'éå',
+ 'Event has been dropped.' => '已丢å¼äºä»¶ã',
+ 'Event has been altered.' => 'å·²æ´æ¹äºä»¶ã',
+ 'Event has been created.' => 'å·²å建äºä»¶ã',
+ 'Alter event' => 'æ´æ¹äºä»¶',
+ 'Create event' => 'å建äºä»¶',
+ 'Start' => 'å¼å§',
+ 'End' => 'ç»æ',
+ 'Every' => 'æ¯',
+ 'Status' => 'ç¶æ',
+ 'On completion preserve' => '宿åä¿å',
+ 'Events' => 'äºä»¶',
+ 'Schedule' => 'è°åº¦',
+ 'At given time' => '卿宿¶é´',
+ 'Tables have been truncated.' => 'å·²æ¸
空表ã',
+ 'Tables have been moved.' => '已转移表ã',
+ 'Tables and views' => '表åè§å¾',
+ 'Engine' => '弿',
+ 'Collation' => 'æ ¡å¯¹',
+ 'Data Length' => 'æ°æ®é¿åº¦',
+ 'Index Length' => 'ç´¢å¼é¿åº¦',
+ 'Data Free' => 'æ°æ®ç©ºé²',
+ 'Rows' => 'è¡æ°',
+ ',' => ',',
+ 'Analyze' => 'åæ',
+ 'Optimize' => 'ä¼å',
+ 'Check' => 'æ£æ¥',
+ 'Repair' => 'ä¿®å¤',
+ 'Truncate' => 'æ¸
空',
+ 'Move to other database' => '转移å°å
¶å®æ°æ®åº',
+ 'Move' => '转移',
+ 'Save and continue edit' => 'ä¿åå¹¶ç»§ç»ç¼è¾',
+ 'original' => 'åå§',
+ '%d item(s) have been affected.' => '%d 个项ç®åå°å½±åã',
+ 'whole result' => 'ææç»æ',
+ 'clone' => 'å
é',
+ 'Tables have been dropped.' => '已丢å¼è¡¨ã',
+ 'Clone' => 'å
é',
+ 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'è¶
è¿æå¤§å
许çåçå¼ã请å¢å %s å %s ã',
+ 'Partition by' => 'ååºç±»å',
+ 'Partitions' => 'ååº',
+ 'Partition name' => 'ååºå',
+ 'Values' => 'å¼',
+ '%d row(s) has been imported.' => '%d è¡å·²å¯¼å
¥ã',
+ 'Table structure' => 'è¡¨ç»æ',
+ '(anywhere)' => 'ï¼ä»»æä½ç½®ï¼',
+ 'CSV Import' => 'CSV 导å
¥',
+ 'Import' => '导å
¥',
+ 'Stop on error' => 'åºéæ¶åæ¢',
+ 'Select table' => 'éæ©è¡¨',
+ '%.3f s' => '%.3f s',
+);
diff --git a/adminer/plus.gif b/adminer/plus.gif
new file mode 100644
index 00000000..f16de917
Binary files /dev/null and b/adminer/plus.gif differ
diff --git a/adminer/privileges.inc.php b/adminer/privileges.inc.php
new file mode 100644
index 00000000..c026b378
--- /dev/null
+++ b/adminer/privileges.inc.php
@@ -0,0 +1,23 @@
+' . lang('Create user') . " ";
+$result = $dbh->query("SELECT User, Host FROM mysql.user ORDER BY Host, User");
+if (!$result) {
+ ?>
+
+ " />
+ :
+ :
+
+
+
+query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");
+}
+echo "\n";
+echo " " . lang('Username') . " " . lang('Server') . " \n";
+while ($row = $result->fetch_assoc()) {
+ echo '' . lang('edit') . ' ' . htmlspecialchars($row["User"]) . " " . htmlspecialchars($row["Host"]) . " \n";
+}
+echo "
\n";
+$result->free();
diff --git a/adminer/procedure.inc.php b/adminer/procedure.inc.php
new file mode 100644
index 00000000..2b9d198b
--- /dev/null
+++ b/adminer/procedure.inc.php
@@ -0,0 +1,52 @@
+ array());
+if ($_POST) {
+ $row = $_POST;
+ $row["fields"] = (array) $row["fields"];
+ process_fields($row["fields"]);
+} elseif (strlen($_GET["procedure"])) {
+ $row = routine($_GET["procedure"], $routine);
+ $row["name"] = $_GET["procedure"];
+}
+?>
+
+
+
+
+
+
+
+: " maxlength="64" />
+
+ />
+
+
diff --git a/adminer/processlist.inc.php b/adminer/processlist.inc.php
new file mode 100644
index 00000000..aea5c2c4
--- /dev/null
+++ b/adminer/processlist.inc.php
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/adminer/schema.inc.php b/adminer/schema.inc.php
new file mode 100644
index 00000000..0d78224e
--- /dev/null
+++ b/adminer/schema.inc.php
@@ -0,0 +1,113 @@
+ $match) {
+ $table_pos[$match[1]] = array($match[2], $match[3]);
+ $table_pos_js[] = "\n\t'" . addcslashes($match[1], "\r\n'\\") . "': [ $match[2], $match[3] ]";
+}
+
+$top = 0;
+$base_left = -1;
+$schema = array();
+$referenced = array();
+$lefts = array();
+$result = $dbh->query("SHOW TABLE STATUS");
+while ($row = $result->fetch_assoc()) {
+ if (!isset($row["Engine"])) { // view
+ continue;
+ }
+ $pos = 0;
+ $schema[$row["Name"]]["fields"] = array();
+ foreach (fields($row["Name"]) as $name => $field) {
+ $pos += 1.25;
+ $field["pos"] = $pos;
+ $schema[$row["Name"]]["fields"][$name] = $field;
+ }
+ $schema[$row["Name"]]["pos"] = ($table_pos[$row["Name"]] ? $table_pos[$row["Name"]] : array($top, 0));
+ if ($row["Engine"] == "InnoDB") {
+ foreach (foreign_keys($row["Name"]) as $val) {
+ if (!$val["db"]) {
+ $left = $base_left;
+ if ($table_pos[$row["Name"]][1] || $table_pos[$row["Name"]][1]) {
+ $left = min($table_pos[$row["Name"]][1], $table_pos[$val["table"]][1]) - 1;
+ } else {
+ $base_left -= .1;
+ }
+ while ($lefts[(string) $left]) {
+ $left -= .0001;
+ }
+ $schema[$row["Name"]]["references"][$val["table"]][(string) $left] = array($val["source"], $val["target"]);
+ $referenced[$val["table"]][$row["Name"]][(string) $left] = $val["target"];
+ $lefts[(string) $left] = true;
+ }
+ }
+ }
+ $top = max($top, $schema[$row["Name"]]["pos"][0] + 2.5 + $pos);
+}
+$result->free();
+
+?>
+
+
+ $table) {
+ echo "
";
+ echo '
' . htmlspecialchars($name) . " \n";
+ foreach ($table["fields"] as $field) {
+ $val = htmlspecialchars($field["field"]);
+ if (preg_match('~char|text~', $field["type"])) {
+ $val = "
$val ";
+ } elseif (preg_match('~date|time|year~', $field["type"])) {
+ $val = "
$val ";
+ } elseif (preg_match('~binary|blob~', $field["type"])) {
+ $val = "
$val ";
+ } elseif (preg_match('~enum|set~', $field["type"])) {
+ $val = "
$val ";
+ }
+ echo ($field["primary"] ? "
$val " : $val) . "
\n";
+ }
+ foreach ((array) $table["references"] as $target_name => $refs) {
+ foreach ($refs as $left => $ref) {
+ $left1 = $left - $table_pos[$name][1];
+ $i = 0;
+ foreach ($ref[0] as $source) {
+ echo '
\n";
+ }
+ }
+ }
+ foreach ((array) $referenced[$name] as $target_name => $refs) {
+ foreach ($refs as $left => $columns) {
+ $left1 = $left - $table_pos[$name][1];
+ $i = 0;
+ foreach ($columns as $target) {
+ echo '
\n";
+ }
+ }
+ }
+ echo "
\n";
+}
+foreach ($schema as $name => $table) {
+ foreach ((array) $table["references"] as $target_name => $refs) {
+ foreach ($refs as $left => $ref) {
+ $min_pos = $top;
+ $max_pos = -10;
+ foreach ($ref[0] as $key => $source) {
+ $pos1 = $table["pos"][0] + $table["fields"][$source]["pos"];
+ $pos2 = $schema[$target_name]["pos"][0] + $schema[$target_name]["fields"][$ref[1][$key]]["pos"];
+ $min_pos = min($min_pos, $pos1, $pos2);
+ $max_pos = max($max_pos, $pos1, $pos2);
+ }
+ echo "
\n";
+ }
+ }
+}
+?>
+
diff --git a/adminer/select.inc.php b/adminer/select.inc.php
new file mode 100644
index 00000000..f35fa927
--- /dev/null
+++ b/adminer/select.inc.php
@@ -0,0 +1,306 @@
+", "<=", ">=", "!=", "LIKE", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL");
+if (eregi('^(MyISAM|Maria)$', $table_status["Engine"])) {
+ $operators[] = "AGAINST";
+}
+$fields = fields($_GET["select"]);
+$rights = array();
+$columns = array();
+unset($text_length);
+foreach ($fields as $key => $field) {
+ if (isset($field["privileges"]["select"])) {
+ $columns[] = $key;
+ if (preg_match('~text|blob~', $field["type"])) {
+ $text_length = (isset($_GET["text_length"]) ? $_GET["text_length"] : "100");
+ }
+ }
+ $rights += $field["privileges"];
+}
+
+$select = array();
+$group = array();
+foreach ((array) $_GET["columns"] as $key => $val) {
+ if ($val["fun"] == "count" || (in_array($val["col"], $columns, true) && (!$val["fun"] || in_array($val["fun"], $functions) || in_array($val["fun"], $grouping)))) {
+ $select[$key] = (in_array($val["col"], $columns, true) ? (!$val["fun"] ? idf_escape($val["col"]) : ($val["fun"] == "distinct" ? "COUNT(DISTINCT " : strtoupper("$val[fun](")) . idf_escape($val["col"]) . ")") : "COUNT(*)");
+ if (!in_array($val["fun"], $grouping)) {
+ $group[] = $select[$key];
+ }
+ }
+}
+$where = array();
+foreach ($indexes as $i => $index) {
+ if ($index["type"] == "FULLTEXT" && strlen($_GET["fulltext"][$i])) {
+ $where[] = "MATCH (" . implode(", ", array_map('idf_escape', $index["columns"])) . ") AGAINST ('" . $dbh->escape_string($_GET["fulltext"][$i]) . "'" . (isset($_GET["boolean"][$i]) ? " IN BOOLEAN MODE" : "") . ")";
+ }
+}
+foreach ((array) $_GET["where"] as $val) {
+ if (strlen("$val[col]$val[val]") && in_array($val["op"], $operators)) {
+ if ($val["op"] == "AGAINST") {
+ $where[] = "MATCH (" . idf_escape($val["col"]) . ") AGAINST ('" . $dbh->escape_string($val["val"]) . "' IN BOOLEAN MODE)";
+ } elseif (ereg('IN$', $val["op"]) && !strlen($in = process_length($val["val"]))) {
+ $where[] = "0";
+ } else {
+ $cond = " $val[op]" . (ereg('NULL$', $val["op"]) ? "" : (ereg('IN$', $val["op"]) ? " ($in)" : " '" . $dbh->escape_string($val["val"]) . "'")); //! this searches in numeric values too
+ if (strlen($val["col"])) {
+ $where[] = idf_escape($val["col"]) . $cond;
+ } else {
+ $cols = array();
+ foreach ($fields as $name => $field) {
+ if (is_numeric($val["val"]) || !ereg('int|float|double|decimal', $field["type"])) {
+ $cols[] = $name;
+ }
+ }
+ $where[] = ($cols ? "(" . implode("$cond OR ", array_map('idf_escape', $cols)) . "$cond)" : "0");
+ }
+ }
+ }
+}
+$order = array();
+foreach ((array) $_GET["order"] as $key => $val) {
+ if (in_array($val, $columns, true) || in_array($val, $select, true)) {
+ $order[] = idf_escape($val) . (isset($_GET["desc"][$key]) ? " DESC" : "");
+ }
+}
+$limit = (isset($_GET["limit"]) ? $_GET["limit"] : "30");
+$from = "FROM " . idf_escape($_GET["select"]) . ($where ? " WHERE " . implode(" AND ", $where) : "") . ($group && count($group) < count($select) ? " GROUP BY " . implode(", ", $group) : "") . ($order ? " ORDER BY " . implode(", ", $order) : "") . (strlen($limit) ? " LIMIT " . intval($limit) . (intval($_GET["page"]) ? " OFFSET " . ($limit * $_GET["page"]) : "") : "");
+
+if ($_POST && !$error) {
+ if ($_POST["export"]) {
+ dump_headers($_GET["select"]);
+ dump_table($_GET["select"], "");
+ $query = "SELECT " . ($select ? implode(", ", $select) : "*") . " FROM " . idf_escape($_GET["select"]);
+ if (is_array($_POST["check"])) {
+ foreach ($_POST["check"] as $val) {
+ dump_data($_GET["select"], "INSERT", "$query WHERE " . implode(" AND ", where_check($val)) . " LIMIT 1");
+ }
+ } else {
+ dump_data($_GET["select"], "INSERT", $query . ($where ? " WHERE " . implode(" AND ", $where) : ""));
+ }
+ exit;
+ }
+ if (!$_POST["import"]) { // edit
+ $result = true;
+ $affected = 0;
+ $command = ($_POST["delete"] ? ($_POST["all"] && !$where ? "TRUNCATE " : "DELETE FROM ") : ($_POST["clone"] ? "INSERT INTO " : "UPDATE ")) . idf_escape($_GET["select"]);
+ if (!$_POST["delete"]) {
+ $set = array();
+ foreach ($fields as $name => $field) {
+ $val = process_input($name, $field);
+ if ($_POST["clone"]) {
+ $set[] = ($val !== false ? $val : idf_escape($name));
+ } elseif ($val !== false) {
+ $set[] = "\n" . idf_escape($name) . " = $val";
+ }
+ }
+ $command .= ($_POST["clone"] ? "\nSELECT " . implode(", ", $set) . " FROM " . idf_escape($_GET["select"]) : " SET" . implode(",", $set));
+ }
+ if (!$_POST["delete"] && !$set) {
+ // nothing
+ } elseif ($_POST["all"]) {
+ $result = queries($command . ($where ? " WHERE " . implode(" AND ", $where) : ""));
+ $affected = $dbh->affected_rows;
+ } else {
+ foreach ((array) $_POST["check"] as $val) {
+ parse_str($val, $check);
+ $result = queries($command . " WHERE " . implode(" AND ", where($check)) . " LIMIT 1");
+ if (!$result) {
+ break;
+ }
+ $affected += $dbh->affected_rows;
+ }
+ }
+ query_redirect(queries(), remove_from_uri("page"), lang('%d item(s) have been affected.', $affected), $result, false, !$result);
+ //! display edit page in case of an error
+ } elseif (is_string($file = get_file("csv_file"))) {
+ $file = preg_replace("~^\xEF\xBB\xBF~", '', $file); //! character set
+ $cols = "";
+ $rows = array(); //! packet size
+ preg_match_all('~("[^"]*"|[^"\\n]+)+~', $file, $matches);
+ foreach ($matches[0] as $key => $val) {
+ $row = array();
+ preg_match_all('~(("[^"]*")+|[^,]*),~', "$val,", $matches2);
+ if (!$key && !array_diff($matches2[1], array_keys($fields))) { //! doesn't work with column names containing ",\n
+ $cols = " (" . implode(", ", array_map('idf_escape', $matches2[1])) . ")";
+ } else {
+ foreach ($matches2[1] as $col) {
+ $row[] = (!strlen($col) ? "NULL" : "'" . $dbh->escape_string(str_replace('""', '"', preg_replace('~^".*"$~s', '', $col))) . "'");
+ }
+ $rows[] = "(" . implode(", ", $row) . ")";
+ }
+ }
+ $result = queries("INSERT INTO " . idf_escape($_GET["select"]) . "$cols VALUES " . implode(", ", $rows));
+ query_redirect(queries(), remove_from_uri("page"), lang('%d row(s) has been imported.', $dbh->affected_rows), $result, false, !$result);
+ } else {
+ $error = lang('Unable to upload a file.');
+ }
+}
+page_header(lang('Select') . ": " . htmlspecialchars($_GET["select"]), $error);
+
+echo "";
+if (isset($rights["insert"])) {
+ //! pass search values forth and back
+ echo '' . lang('New item') . ' ';
+}
+echo '' . lang('Table structure') . ' ';
+echo "
\n";
+
+if (!$columns) {
+ echo "" . lang('Unable to select the table') . ($fields ? "" : ": " . htmlspecialchars($dbh->error)) . ".
\n";
+} else {
+ echo "\n";
+ echo "" . lang('Select') . " \n";
+ if (strlen($_GET["server"])) {
+ echo ' ';
+ }
+ echo ' ';
+ echo ' ';
+ echo "\n";
+ $i = 0;
+ $fun_group = array(lang('Functions') => $functions, lang('Aggregation') => $grouping);
+ foreach ($select as $key => $val) {
+ $val = $_GET["columns"][$key];
+ echo " " . optionlist($fun_group, $val["fun"]) . " ";
+ echo " " . optionlist($columns, $val["col"]) . "
\n";
+ $i++;
+ }
+ echo " " . optionlist($fun_group) . " ";
+ echo " " . optionlist($columns) . "
\n";
+ echo " \n";
+
+ echo "" . lang('Search') . " \n";
+ foreach ($indexes as $i => $index) {
+ if ($index["type"] == "FULLTEXT") {
+ echo "(" . implode(" , ", array_map('htmlspecialchars', $index["columns"])) . " ) AGAINST";
+ echo ' ';
+ echo " " . lang('BOOL') . " ";
+ echo " \n";
+ }
+ }
+ $i = 0;
+ foreach ((array) $_GET["where"] as $val) {
+ if (strlen("$val[col]$val[val]") && in_array($val["op"], $operators)) {
+ echo "" . lang('(anywhere)') . " " . optionlist($columns, $val["col"]) . " ";
+ echo "" . optionlist($operators, $val["op"]) . " ";
+ echo "
\n";
+ $i++;
+ }
+ }
+ echo "" . lang('(anywhere)') . " " . optionlist($columns) . " ";
+ echo "" . optionlist($operators) . " ";
+ echo "
\n";
+ echo " \n";
+
+ echo "" . lang('Limit') . " ";
+ echo hidden_fields(array("order" => (array) $_GET["order"], "desc" => (array) $_GET["desc"]));
+ echo "
\n";
+
+ if (isset($text_length)) {
+ echo "" . lang('Text length') . "
\n";
+ }
+
+ echo "" . lang('Action') . "
\n";
+ echo " \n";
+
+ $query = "SELECT " . ($select ? (count($group) < count($select) ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $select) : "*") . " $from";
+ echo "" . htmlspecialchars($query) . " " . lang('Edit') . "
\n";
+
+ $result = $dbh->query($query);
+ if (!$result) {
+ echo "" . htmlspecialchars($dbh->error) . "
\n";
+ } else {
+ echo "\n";
+ if (!$result->num_rows) {
+ echo "" . lang('No rows.') . "
\n";
+ } else {
+ $foreign_keys = array();
+ foreach (foreign_keys($_GET["select"]) as $foreign_key) {
+ foreach ($foreign_key["source"] as $val) {
+ $foreign_keys[$val][] = $foreign_key;
+ }
+ }
+
+ echo "\n";
+
+ echo "";
+ $found_rows = (intval($limit) ? $dbh->result($dbh->query(count($group) < count($select) ? " SELECT FOUND_ROWS()" : "SELECT COUNT(*) FROM " . idf_escape($_GET["select"]) . ($where ? " WHERE " . implode(" AND ", $where) : ""))) : $result->num_rows);
+ if (intval($limit) && $found_rows > $limit) {
+ $max_page = floor(($found_rows - 1) / $limit);
+ echo lang('Page') . ":";
+ print_page(0);
+ if ($_GET["page"] > 3) {
+ echo " ...";
+ }
+ for ($i = max(1, $_GET["page"] - 2); $i < min($max_page, $_GET["page"] + 3); $i++) {
+ print_page($i);
+ }
+ if ($_GET["page"] + 3 < $max_page) {
+ echo " ...";
+ }
+ print_page($max_page);
+ }
+ echo " (" . lang('%d row(s)', $found_rows) . ') ' . lang('whole result') . "
\n";
+
+ echo ($_GET["db"] != "information_schema" ? "" . lang('Edit') . "
\n" : "");
+ echo "" . lang('Export') . " $dump_output $dump_format
\n";
+ }
+ $result->free();
+ echo "" . lang('CSV Import') . "
\n";
+ echo " \n";
+ }
+}
diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php
new file mode 100644
index 00000000..d85f7d60
--- /dev/null
+++ b/adminer/sql.inc.php
@@ -0,0 +1,89 @@
+select_db($_GET["db"]);
+ }
+ while (rtrim($query)) {
+ if (!$offset && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) {
+ $delimiter = $match[1];
+ $query = substr($query, strlen($match[0]));
+ } elseif (preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset)) {
+ if ($match[0][0] && $match[0][0] != $delimiter) {
+ $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']+|\\\\.)*(' . $match[0][0] . '|$)~s'));
+ preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $match[0][1] + 1);
+ $offset = $match[0][1] + strlen($match[0][0]);
+ } else {
+ $empty = false;
+ echo "" . htmlspecialchars(trim(substr($query, 0, $match[0][1]))) . " \n";
+ flush();
+ $start = explode(" ", microtime());
+ //! don't allow changing of character_set_results, convert encoding of displayed query
+ if (!$dbh->multi_query(substr($query, 0, $match[0][1]))) {
+ echo "" . lang('Error in query') . ": " . htmlspecialchars($dbh->error) . "
\n";
+ if ($_POST["error_stops"]) {
+ break;
+ }
+ } else {
+ $end = explode(" ", microtime());
+ echo "" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "
\n";
+ do {
+ $result = $dbh->store_result();
+ if (is_object($result)) {
+ select($result, $dbh2);
+ } else {
+ if (preg_match("~^$space*(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU", $query)) {
+ unset($_SESSION["databases"][$_GET["server"]]);
+ }
+ echo "" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "
\n";
+ }
+ } while ($dbh->next_result());
+ }
+ $query = substr($query, $match[0][1] + strlen($match[0][0]));
+ $offset = 0;
+ }
+ }
+ }
+ if ($empty) {
+ echo "" . lang('No commands to execute.') . "
\n";
+ }
+ } else {
+ echo "" . lang('Unable to upload a file.') . "
\n";
+ }
+}
+?>
+
+
+
+
+
+
+ />
+
+
+
+" . lang('File uploads are disabled.') . "\n";
+} else { ?>
+
+
+:
+
+
+
+
+
diff --git a/adminer/table.inc.php b/adminer/table.inc.php
new file mode 100644
index 00000000..682730bd
--- /dev/null
+++ b/adminer/table.inc.php
@@ -0,0 +1,76 @@
+query("SHOW COLUMNS FROM " . idf_escape($_GET["table"]));
+if (!$result) {
+ $error = htmlspecialchars($dbh->error);
+}
+page_header(lang('Table') . ": " . htmlspecialchars($_GET["table"]), $error);
+
+if ($result) {
+ $table_status = table_status($_GET["table"]);
+ $auto_increment_only = true;
+ echo "\n";
+ while ($row = $result->fetch_assoc()) {
+ if (!$row["auto_increment"]) {
+ $auto_increment_only = false;
+ }
+ echo "" . htmlspecialchars($row["Field"]) . " $row[Type]" . ($row["Null"] == "YES" ? " NULL " : "") . " \n";
+ }
+ echo "
\n";
+ $result->free();
+
+ echo "";
+ echo '' . lang('Alter table') . ' ';
+ echo ($auto_increment_only ? '' : ' ' . lang('Default values') . ' ');
+ echo ' ' . lang('Select table') . ' ';
+ echo ' ' . lang('New item') . ' ';
+ echo "
\n";
+
+ echo "" . lang('Indexes') . " \n";
+ $indexes = indexes($_GET["table"]);
+ if ($indexes) {
+ echo "\n";
+ foreach ($indexes as $index) {
+ ksort($index["columns"]);
+ $print = array();
+ foreach ($index["columns"] as $key => $val) {
+ $print[] = "" . htmlspecialchars($val) . " " . ($index["lengths"][$key] ? "(" . $index["lengths"][$key] . ")" : "");
+ }
+ echo "$index[type] " . implode(", ", $print) . " \n";
+ }
+ echo "
\n";
+ }
+ echo '' . lang('Alter indexes') . "
\n";
+
+ if ($table_status["Engine"] == "InnoDB") {
+ echo "" . lang('Foreign keys') . " \n";
+ $foreign_keys = foreign_keys($_GET["table"]);
+ if ($foreign_keys) {
+ echo "\n";
+ foreach ($foreign_keys as $name => $foreign_key) {
+ echo "";
+ echo "" . implode(" , ", array_map('htmlspecialchars', $foreign_key["source"])) . " ";
+ $link = (strlen($foreign_key["db"]) ? "" . htmlspecialchars($foreign_key["db"]) . " ." : "") . htmlspecialchars($foreign_key["table"]);
+ echo '$link ";
+ echo "(" . implode(" , ", array_map('htmlspecialchars', $foreign_key["target"])) . " ) ";
+ echo '' . (!strlen($foreign_key["db"]) ? '' . lang('Alter') . ' ' : ' ') . ' ';
+ echo " \n";
+ }
+ echo "
\n";
+ }
+ echo '' . lang('Add foreign key') . "
\n";
+ }
+}
+
+if ($dbh->server_info >= 5) {
+ echo "" . lang('Triggers') . " \n";
+ $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($_GET["table"], "%_")) . "'");
+ if ($result->num_rows) {
+ echo "\n";
+ while ($row = $result->fetch_assoc()) {
+ echo "$row[Timing] $row[Event] " . htmlspecialchars($row["Trigger"]) . " ' . lang('Alter') . " \n";
+ }
+ echo "
\n";
+ }
+ $result->free();
+ echo '' . lang('Add trigger') . "
\n";
+}
diff --git a/adminer/trigger.inc.php b/adminer/trigger.inc.php
new file mode 100644
index 00000000..9a86fdf9
--- /dev/null
+++ b/adminer/trigger.inc.php
@@ -0,0 +1,45 @@
+ $_GET["trigger"]));
+
+$row = array("Trigger" => "$_GET[trigger]_bi");
+if ($_POST) {
+ $row = $_POST;
+} elseif (strlen($_GET["name"])) {
+ $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($_GET["trigger"], "%_")) . "'");
+ while ($row = $result->fetch_assoc()) {
+ if ($row["Trigger"] === $_GET["name"]) {
+ break;
+ }
+ }
+ $result->free();
+}
+?>
+
+
+
+
+
+
+
+
+ />
+
+
diff --git a/adminer/up.gif b/adminer/up.gif
new file mode 100644
index 00000000..08980336
Binary files /dev/null and b/adminer/up.gif differ
diff --git a/adminer/user.inc.php b/adminer/user.inc.php
new file mode 100644
index 00000000..59fa922c
--- /dev/null
+++ b/adminer/user.inc.php
@@ -0,0 +1,174 @@
+ array("All privileges" => ""));
+$result = $dbh->query("SHOW PRIVILEGES");
+while ($row = $result->fetch_assoc()) {
+ if ($row["Privilege"] == "Grant option") {
+ $privileges[""]["Grant option"] = $row["Comment"];
+ } else {
+ foreach (explode(",", $row["Context"]) as $context) {
+ $privileges[$context][$row["Privilege"]] = $row["Comment"];
+ }
+ }
+}
+$result->free();
+$privileges["Server Admin"] += $privileges["File access on server"];
+$privileges["Databases"]["Create routine"] = $privileges["Procedures"]["Create routine"];
+$privileges["Columns"] = array();
+foreach (array("Select", "Insert", "Update", "References") as $val) {
+ $privileges["Columns"][$val] = $privileges["Tables"][$val];
+}
+unset($privileges["Server Admin"]["Usage"]);
+unset($privileges["Procedures"]["Create routine"]);
+foreach ($privileges["Tables"] as $key => $val) {
+ unset($privileges["Databases"][$key]);
+}
+
+function grant($grant, $columns) {
+ return preg_replace('~(GRANT OPTION)\\([^)]*\\)~', '\\1', implode("$columns, ", $grant) . $columns);
+}
+
+$new_grants = array();
+if ($_POST) {
+ foreach ($_POST["objects"] as $key => $val) {
+ $new_grants[$val] = ((array) $new_grants[$val]) + ((array) $_POST["grants"][$key]);
+ }
+}
+$grants = array();
+$old_pass = "";
+if (isset($_GET["host"]) && ($result = $dbh->query("SHOW GRANTS FOR '" . $dbh->escape_string($_GET["user"]) . "'@'" . $dbh->escape_string($_GET["host"]) . "'"))) { //! Use information_schema for MySQL 5 - column names in column privileges are not escaped
+ while ($row = $result->fetch_row()) {
+ if (preg_match('~GRANT (.*) ON (.*) TO ~', $row[0], $match) && preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~', $match[1], $matches, PREG_SET_ORDER)) { //! escape the part between ON and TO
+ foreach ($matches as $val) {
+ $grants["$match[2]$val[2]"][$val[1]] = true;
+ if (preg_match('~ WITH GRANT OPTION~', $row[0])) { //! don't check inside strings and identifiers
+ $grants["$match[2]$val[2]"]["GRANT OPTION"] = true;
+ }
+ }
+ }
+ if (preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~", $row[0], $match)) {
+ $old_pass = $match[1];
+ }
+ }
+ $result->free();
+}
+
+if ($_POST && !$error) {
+ $old_user = (isset($_GET["host"]) ? $dbh->escape_string($_GET["user"]) . "'@'" . $dbh->escape_string($_GET["host"]) : "");
+ $new_user = $dbh->escape_string($_POST["user"]) . "'@'" . $dbh->escape_string($_POST["host"]);
+ $pass = $dbh->escape_string($_POST["pass"]);
+ if ($_POST["drop"]) {
+ query_redirect("DROP USER '$old_user'", $SELF . "privileges=", lang('User has been dropped.'));
+ } else {
+ if ($old_user == $new_user) {
+ queries("SET PASSWORD FOR '$new_user' = " . ($_POST["hashed"] ? "'$pass'" : "PASSWORD('$pass')"));
+ } else {
+ $error = !queries(($dbh->server_info < 5 ? "GRANT USAGE ON *.* TO" : "CREATE USER") . " '$new_user' IDENTIFIED BY" . ($_POST["hashed"] ? " PASSWORD" : "") . " '$pass'");
+ }
+ if (!$error) {
+ $revoke = array();
+ foreach ($new_grants as $object => $grant) {
+ if (isset($_GET["grant"])) {
+ $grant = array_filter($grant);
+ }
+ $grant = array_keys($grant);
+ if (isset($_GET["grant"])) {
+ $revoke = array_diff(array_keys(array_filter($new_grants[$object], 'strlen')), $grant);
+ } elseif ($old_user == $new_user) {
+ $old_grant = array_keys((array) $grants[$object]);
+ $revoke = array_diff($old_grant, $grant);
+ $grant = array_diff($grant, $old_grant);
+ unset($grants[$object]);
+ }
+ if (preg_match('~^(.+)\\s*(\\(.*\\))?$~U', $object, $match) && (
+ ($grant && !queries("GRANT " . grant($grant, $match[2]) . " ON $match[1] TO '$new_user'")) //! SQL injection
+ || ($revoke && !queries("REVOKE " . grant($revoke, $match[2]) . " ON $match[1] FROM '$new_user'"))
+ )) {
+ $error = true;
+ break;
+ }
+ }
+ }
+ if (!$error && isset($_GET["host"])) {
+ if ($old_user != $new_user) {
+ queries("DROP USER '$old_user'");
+ } elseif (!isset($_GET["grant"])) {
+ foreach ($grants as $object => $revoke) {
+ if (preg_match('~^(.+)(\\(.*\\))?$~U', $object, $match)) {
+ queries("REVOKE " . grant(array_keys($revoke), $match[2]) . " ON $match[1] FROM '$new_user'");
+ }
+ }
+ }
+ }
+ query_redirect(queries(), $SELF . "privileges=", (isset($_GET["host"]) ? lang('User has been altered.') : lang('User has been created.')), !$error, false, $error);
+ if ($old_user != $new_user) {
+ $dbh->query("DROP USER '$new_user'");
+ }
+ }
+}
+page_header((isset($_GET["host"]) ? lang('Username') . ": " . htmlspecialchars("$_GET[user]@$_GET[host]") : lang('Create user')), $error, array("privileges" => lang('Privileges')));
+
+if ($_POST) {
+ $row = $_POST;
+ $grants = $new_grants;
+} else {
+ $row = $_GET + array("host" => "localhost");
+ $row["pass"] = $old_pass;
+ if (strlen($old_pass)) {
+ $row["hashed"] = true;
+ }
+ $grants[""] = true;
+}
+
+?>
+
+
+
+\n";
+echo "" . lang('Privileges') . " ";
+$i = 0;
+foreach ($grants as $object => $grant) {
+ echo '' . ($object != "*.*" ? ' ' : ' *.*') . ' '; //! separate db, table, columns, PROCEDURE|FUNCTION, routine
+ //! JS checkbox for all
+ $i++;
+}
+echo " \n";
+foreach (array(
+ "" => "",
+ "Server Admin" => lang('Server'),
+ "Databases" => lang('Database'),
+ "Tables" => lang('Table'),
+ "Columns" => lang('Column'),
+ "Procedures" => lang('Routine'),
+) as $context => $desc) {
+ foreach ((array) $privileges[$context] as $privilege => $comment) {
+ echo "$desc ' . htmlspecialchars($privilege) . " ";
+ $i = 0;
+ foreach ($grants as $object => $grant) {
+ $name = '"grants[' . $i . '][' . htmlspecialchars(strtoupper($privilege)) . ']"';
+ $value = $grant[strtoupper($privilege)];
+ if ($context == "Server Admin" && $object != (isset($grants["*.*"]) ? "*.*" : "")) {
+ echo " ";
+ } elseif (isset($_GET["grant"])) {
+ echo "" . lang('Grant') . " " . lang('Revoke') . " ";
+ } else {
+ echo " ";
+ }
+ $i++;
+ }
+ echo " \n";
+ }
+}
+echo "\n";
+?>
+
+
+
+ />
+
+
diff --git a/adminer/view.inc.php b/adminer/view.inc.php
new file mode 100644
index 00000000..c4d8ec7c
--- /dev/null
+++ b/adminer/view.inc.php
@@ -0,0 +1,5 @@
+" . htmlspecialchars($view["select"]) . "\n";
+echo '' . lang('Alter view') . "
\n";
diff --git a/arrow.gif b/arrow.gif
deleted file mode 100644
index d99badb5..00000000
Binary files a/arrow.gif and /dev/null differ
diff --git a/call.inc.php b/call.inc.php
deleted file mode 100644
index 8974d946..00000000
--- a/call.inc.php
+++ /dev/null
@@ -1,70 +0,0 @@
- $field) {
- if (substr($field["inout"], -3) == "OUT") {
- $out[$i] = "@" . idf_escape($field["field"]) . " AS " . idf_escape($field["field"]);
- }
- if (!$field["inout"] || substr($field["inout"], 0, 2) == "IN") {
- $in[] = $i;
- }
-}
-
-if (!$error && $_POST) {
- $call = array();
- foreach ($routine["fields"] as $key => $field) {
- if (in_array($key, $in)) {
- $val = process_input($key, $field);
- if ($val === false) {
- $val = "''";
- }
- if (isset($out[$key])) {
- $dbh->query("SET @" . idf_escape($field["field"]) . " = " . $val);
- }
- }
- $call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val);
- }
- $result = $dbh->multi_query((isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($_GET["call"]) . "(" . implode(", ", $call) . ")");
- if (!$result) {
- echo "" . htmlspecialchars($dbh->error) . "
\n";
- } else {
- do {
- $result = $dbh->store_result();
- if (is_object($result)) {
- select($result);
- } else {
- echo "" . lang('Routine has been called, %d row(s) affected.', $dbh->affected_rows) . "
\n";
- }
- } while ($dbh->next_result());
- if ($out) {
- select($dbh->query("SELECT " . implode(", ", $out)));
- }
- }
-}
-?>
-
-
-\n";
- foreach ($in as $key) {
- $field = $routine["fields"][$key];
- echo "" . htmlspecialchars($field["field"]) . " ";
- $value = $_POST["fields"][$key];
- if (strlen($value) && ($field["type"] == "enum" || $field["type"] == "set")) {
- $value = intval($value);
- }
- input($key, $field, $value); // param name can be empty
- echo " \n";
- }
- echo "\n";
-}
-?>
-
-
-
-
-
diff --git a/compile.php b/compile.php
new file mode 100644
index 00000000..237d74e8
--- /dev/null
+++ b/compile.php
@@ -0,0 +1,208 @@
+ "'", "\\\\" => "\\"));
+ $s = ($translations[$idf] ? $translations[$idf] : $idf);
+ if ($match[3] == ",") {
+ return "$match[1]" . (is_array($s) ? "lang(array('" . implode("', '", array_map('add_apo_slashes', $s)) . "')," : "sprintf('" . add_apo_slashes($s) . "',");
+ }
+ return ($match[1] && $match[4] ? $s : "$match[1]'" . add_apo_slashes($s) . "'$match[4]");
+}
+
+$lang_ids = array();
+function lang_ids($match) {
+ global $lang_ids;
+ return 'lang(' . $lang_ids[stripslashes($match[1])] . $match[2];
+}
+
+function put_file($match) {
+ global $lang_ids;
+ if ($match[2] == './lang/$LANG.inc.php') {
+ if ($_COOKIE["lang"]) {
+ return "";
+ }
+ $return = "";
+ foreach (glob(dirname(__FILE__) . "/adminer/lang/*.inc.php") as $filename) {
+ include $filename;
+ foreach ($translations as $key => $val) {
+ if (!isset($lang_ids[$key])) {
+ $lang_ids[$key] = count($lang_ids);
+ }
+ }
+ }
+ foreach (glob(dirname(__FILE__) . "/adminer/lang/*.inc.php") as $filename) {
+ include $filename;
+ $translation_ids = array_flip($lang_ids);
+ foreach ($translations as $key => $val) {
+ $translation_ids[$lang_ids[$key]] = $val;
+ }
+ $return .= 'case "' . basename($filename, '.inc.php') . '": $translations = array(';
+ foreach ($translation_ids as $val) {
+ $return .= (is_array($val) ? "array('" . implode("', '", array_map('add_apo_slashes', $val)) . "')" : "'" . add_apo_slashes($val) . "'") . ", ";
+ }
+ $return = substr($return, 0, -2) . "); break;\n";
+ }
+ return "switch (\$LANG) {\n$return}\n";
+ }
+ $return = file_get_contents(dirname(__FILE__) . "/adminer/$match[2]");
+ if ($match[2] != "./include/lang.inc.php" || !$_COOKIE["lang"]) {
+ $tokens = token_get_all($return);
+ return "?>\n$return" . (in_array($tokens[count($tokens) - 1][0], array(T_CLOSE_TAG, T_INLINE_HTML), true) ? "= 0) {
+ $return .= $chars{$number % strlen($chars)};
+ $number = floor($number / strlen($chars)) - 1;
+ }
+ return $return;
+}
+
+// based on Dgx's PHP shrinker
+function php_shrink($input) {
+ $special_variables = array_flip(array('$this', '$GLOBALS', '$_GET', '$_POST', '$_FILES', '$_COOKIE', '$_SESSION', '$_SERVER'));
+ static $short_variables = array();
+ $shortening = true;
+ $special_functions = array_flip(array('Min_DB', 'Min_Result', '__construct'));
+ $defined_functions = array();
+ static $short_functions = array();
+ $tokens = token_get_all($input);
+
+ foreach ($tokens as $i => $token) {
+ if ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
+ $short_variables[$token[1]]++;
+ } elseif ($token[0] === T_STRING && $tokens[$i+1] === '(' && !isset($special_functions[$token[1]])) {
+ $short_functions[$token[1]]++;
+ if ($tokens[$i-2][0] === T_FUNCTION) {
+ $defined_functions[$token[1]] = true;
+ }
+ }
+ }
+
+ arsort($short_variables);
+ foreach (array_keys($short_variables) as $number => $key) {
+ $short_variables[$key] = short_identifier($number, implode("", range('a', 'z')) . '_' . implode("", range('A', 'Z'))); // could use also numbers and \x7f-\xff
+ }
+ arsort($short_functions);
+ $number = 0;
+ foreach ($short_functions as $key => $val) {
+ if (isset($defined_functions[$key])) {
+ do {
+ $short_functions[$key] = short_identifier($number, implode("", range('a', 'z')));
+ $number++;
+ } while (isset($short_functions[$short_functions[$key]]));
+ }
+ }
+
+ $set = array_flip(preg_split('//', '!"#$&\'()*+,-./:;<=>?@[\]^`{|}'));
+ $space = '';
+ $output = '';
+ $in_echo = false;
+ for (reset($tokens); list($i, $token) = each($tokens); ) {
+ if (!is_array($token)) {
+ $token = array(0, $token);
+ }
+ if ($token[0] == T_COMMENT || $token[0] == T_WHITESPACE) {
+ $space = "\n";
+ } else {
+ if ($token[0] == T_VAR) {
+ $shortening = false;
+ } elseif (!$shortening) {
+ if ($token[1] == ';') {
+ $shortening = true;
+ }
+ } elseif ($token[0] == T_ECHO) {
+ $in_echo = true;
+ } elseif ($token[1] == ';' && $in_echo) {
+ $in_echo = false;
+ if ($tokens[$i+1][0] === T_WHITESPACE && $tokens[$i+2][0] === T_ECHO) {
+ next($tokens);
+ next($tokens);
+ $token[1] = '.'; //! join ''.'' and "".""
+ }
+ } elseif ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
+ $token[1] = '$' . $short_variables[$token[1]];
+ } elseif ($token[0] === T_STRING && $tokens[$i+1] === '(' && isset($defined_functions[$token[1]])
+ && $tokens[$i-1][0] !== T_DOUBLE_COLON && $tokens[$i-2][0] !== T_NEW && $tokens[$i-2][1] !== '_result'
+ ) {
+ $token[1] = $short_functions[$token[1]];
+ } elseif ($token[0] == T_CONSTANT_ENCAPSED_STRING && (($tokens[$i-1] === '(' && in_array($tokens[$i-2][1], array('array_map', 'set_exception_handler'), true)) || $token[1] == "'normalize_enum'") && isset($defined_functions[substr($token[1], 1, -1)])) {
+ $token[1] = "'" . $short_functions[substr($token[1], 1, -1)] . "'";
+ }
+ if (isset($set[substr($output, -1)]) || isset($set[$token[1]{0}])) {
+ $space = '';
+ }
+ $output .= $space . $token[1];
+ $space = '';
+ }
+ }
+ return $output;
+}
+
+error_reporting(E_ALL & ~E_NOTICE);
+if ($_SERVER["argc"] > 1) {
+ $_COOKIE["lang"] = $_SERVER["argv"][1];
+ include dirname(__FILE__) . "/adminer/include/lang.inc.php";
+ if ($_SERVER["argc"] != 2 || !isset($langs[$_COOKIE["lang"]])) {
+ echo "Usage: php compile.php [lang]\nPurpose: Compile adminer[-lang].php from index.php.\n";
+ exit(1);
+ }
+ include dirname(__FILE__) . "/adminer/lang/$_COOKIE[lang].inc.php";
+}
+
+$filename = "adminer" . ($_COOKIE["lang"] ? "-$_COOKIE[lang]" : "") . ".php";
+$file = file_get_contents(dirname(__FILE__) . "/adminer/index.php");
+$file = preg_replace_callback('~\\b(include|require) "([^"]*)";~', 'put_file', $file);
+$file = preg_replace("~if \\(isset\\(\\\$_SESSION\\[\"coverage.*\n}\n| && !isset\\(\\\$_SESSION\\[\"coverage\"\\]\\)~sU", '', $file);
+if ($_COOKIE["lang"]) {
+ $file = preg_replace_callback("~(<\\?php\\s*echo )?lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])(;\\s*\\?>)?~s", 'remove_lang', $file);
+ $file = str_replace("\n", "", $file);
+ $file = str_replace('', $_COOKIE["lang"], $file);
+} else {
+ $file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
+}
+$replace = 'htmlspecialchars(preg_replace("~\\\\\\\\?.*~", "", $_SERVER["REQUEST_URI"])) . "?file=\\0&version=' . $VERSION;
+$file = preg_replace('~default\\.css|functions\\.js|favicon\\.ico~', '', $file);
+$file = preg_replace('~(plus|cross|up|down|arrow)\\.gif~', '" . ' . $replace, $file);
+$file = str_replace('error_reporting(E_ALL & ~E_NOTICE);', 'error_reporting(E_ALL & ~E_NOTICE);
+if (isset($_GET["file"])) {
+ header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365*24*60*60) . " GMT");
+ if ($_GET["file"] == "favicon.ico") {
+ header("Content-Type: image/x-icon");
+ echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/adminer/favicon.ico")) . '");
+ } elseif ($_GET["file"] == "default.css") {
+ header("Content-Type: text/css");
+ ?>' . preg_replace('~\\s*([:;{},])\\s*~', '\\1', file_get_contents(dirname(__FILE__) . "/adminer/default.css")) . '' . JSMin::minify(file_get_contents(dirname(__FILE__) . "/adminer/functions.js")) . '\n?|\\?>\n?<\\?php~", '', $file);
+$file = php_shrink($file);
+fwrite(fopen($filename, "w"), $file);
+echo "$filename created.\n";
diff --git a/coverage.php b/coverage.php
new file mode 100644
index 00000000..30ea9e4b
--- /dev/null
+++ b/coverage.php
@@ -0,0 +1,76 @@
+]+)~', $s, $matches);
+ foreach ($matches[1] as $val) {
+ if ($val{0} == "/") {
+ array_pop($return);
+ } elseif (substr($val, -1) != "/") {
+ $return[] = $val;
+ }
+ }
+ return $return;
+}
+
+if (!extension_loaded("xdebug")) {
+ echo "Xdebug has to be enabled.
\n";
+}
+
+if ($_GET["start"]) {
+ xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+ $_SESSION["coverage"] = array();
+ include "./adminer/index.php";
+ header("Location: .");
+ exit;
+}
+if (preg_match('~^(include/)?[-_.a-z0-9]+$~i', $_GET["filename"])) {
+ $filename = "adminer/$_GET[filename]";
+ $cov = $_SESSION["coverage"][realpath($filename)];
+ $file = explode(" ", highlight_file($filename, true));
+ unset($prev_color);
+ $s = "";
+ for ($l=0; $l <= count($file); $l++) {
+ $line = $file[$l];
+ $color = "#C0FFC0"; // tested
+ switch ($cov[$l+1]) {
+ case -1: $color = "#FFC0C0"; break; // untested
+ case -2: $color = "Silver"; break; // dead code
+ case null: $color = ""; break; // not executable
+ }
+ if (!isset($prev_color)) {
+ $prev_color = $color;
+ }
+ if ($prev_color != $color || !isset($line)) {
+ echo "" . $s;
+ $open_tags = xhtml_open_tags($s);
+ foreach (array_reverse($open_tags) as $tag) {
+ echo "" . preg_replace('~ .*~', '', $tag) . ">";
+ }
+ echo "
\n";
+ $s = ($open_tags ? "<" . implode("><", $open_tags) . ">" : "");
+ $prev_color = $color;
+ }
+ $s .= "$line \n";
+ }
+} else {
+ echo "\n";
+ foreach (array_merge(glob("adminer/*.php"), glob("adminer/include/*.php")) as $filename) {
+ $cov = $_SESSION["coverage"][realpath($filename)];
+ $filename = substr($filename, 8);
+ $ratio = 0;
+ if (isset($cov)) {
+ $values = array_count_values($cov);
+ $ratio = round(100 - 100 * $values[-1] / count($cov));
+ }
+ echo "$ratio% $filename \n";
+ }
+ echo "
\n";
+ echo "Start new coverage (requires Xdebug )
\n";
+}
diff --git a/create.inc.php b/create.inc.php
deleted file mode 100644
index cd638f65..00000000
--- a/create.inc.php
+++ /dev/null
@@ -1,162 +0,0 @@
- $field) {
- if (strlen($field["field"]) && isset($types[$field["type"]])) {
- $fields[] = (!strlen($_GET["create"]) ? "\n" : (strlen($field["orig"]) ? "\nCHANGE " . idf_escape($field["orig"]) . " " : "\nADD "))
- . idf_escape($field["field"]) . process_type($field)
- . ($field["null"] ? " NULL" : " NOT NULL") // NULL for timestamp
- . (strlen($_GET["create"]) && strlen($field["orig"]) && isset($orig_fields[$field["orig"]]["default"]) && $field["type"] != "timestamp" ? " DEFAULT '" . $dbh->escape_string($orig_fields[$field["orig"]]["default"]) . "'" : "") //! timestamp
- . ($key == $_POST["auto_increment_col"] ? " AUTO_INCREMENT$auto_increment_index" : "")
- . " COMMENT '" . $dbh->escape_string($field["comment"]) . "'"
- . (strlen($_GET["create"]) ? " $after" : "")
- ;
- $after = "AFTER " . idf_escape($field["field"]);
- } elseif (strlen($field["orig"])) {
- $fields[] = "\nDROP " . idf_escape($field["orig"]);
- }
- }
- $status = ($_POST["Engine"] ? "ENGINE='" . $dbh->escape_string($_POST["Engine"]) . "'" : "")
- . ($_POST["Collation"] ? " COLLATE '" . $dbh->escape_string($_POST["Collation"]) . "'" : "")
- . (strlen($_POST["Auto_increment"]) ? " AUTO_INCREMENT=" . intval($_POST["Auto_increment"]) : "")
- . " COMMENT='" . $dbh->escape_string($_POST["Comment"]) . "'"
- ;
- if (in_array($_POST["partition_by"], $partition_by)) {
- $partitions = array();
- if ($_POST["partition_by"] == 'RANGE' || $_POST["partition_by"] == 'LIST') {
- foreach (array_filter($_POST["partition_names"]) as $key => $val) {
- $value = $_POST["partition_values"][$key];
- $partitions[] = "\nPARTITION $val VALUES " . ($_POST["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . (strlen($value) ? " ($value)" : " MAXVALUE"); //! SQL injection
- }
- }
- $status .= "\nPARTITION BY $_POST[partition_by]($_POST[partition])" . ($partitions ? " (" . implode(",", $partitions) . "\n)" : ($_POST["partitions"] ? " PARTITIONS " . intval($_POST["partitions"]) : ""));
- } elseif ($dbh->server_info >= 5.1 && strlen($_GET["create"])) {
- $status .= "\nREMOVE PARTITIONING";
- }
- $location = $SELF . "table=" . urlencode($_POST["name"]);
- if (strlen($_GET["create"])) {
- query_redirect("ALTER TABLE " . idf_escape($_GET["create"]) . implode(",", $fields) . ",\nRENAME TO " . idf_escape($_POST["name"]) . ",\n$status", $location, lang('Table has been altered.'));
- } else {
- query_redirect("CREATE TABLE " . idf_escape($_POST["name"]) . " (" . implode(",", $fields) . "\n) $status", $location, lang('Table has been created.'));
- }
- }
-}
-page_header((strlen($_GET["create"]) ? lang('Alter table') : lang('Create table')), $error, array("table" => $_GET["create"]), $_GET["create"]);
-
-$engines = array();
-$result = $dbh->query("SHOW ENGINES");
-while ($row = $result->fetch_assoc()) {
- if ($row["Support"] == "YES" || $row["Support"] == "DEFAULT") {
- $engines[] = $row["Engine"];
- }
-}
-$result->free();
-
-if ($_POST) {
- $row = $_POST;
- if ($row["auto_increment_col"]) {
- $row["fields"][$row["auto_increment_col"]]["auto_increment"] = true;
- }
- process_fields($row["fields"]);
-} elseif (strlen($_GET["create"])) {
- $row = table_status($_GET["create"]);
- table_comment($row);
- $row["name"] = $_GET["create"];
- $row["fields"] = array_values($orig_fields);
- if ($dbh->server_info >= 5.1) {
- $from = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "' AND TABLE_NAME = '" . $dbh->escape_string($_GET["create"]) . "'";
- $result = $dbh->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $from ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");
- list($row["partition_by"], $row["partitions"], $row["partition"]) = $result->fetch_row();
- $result->free();
- $row["partition_names"] = array();
- $row["partition_values"] = array();
- $result = $dbh->query("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $from AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");
- while ($row1 = $result->fetch_assoc()) {
- $row["partition_names"][] = $row1["PARTITION_NAME"];
- $row["partition_values"][] = $row1["PARTITION_DESCRIPTION"];
- }
- $result->free();
- $row["partition_names"][] = "";
- }
-} else {
- $row = array("fields" => array(array("field" => "")), "partition_names" => array(""));
-}
-$collations = collations();
-
-$suhosin = floor(extension_loaded("suhosin") ? (min(ini_get("suhosin.request.max_vars"), ini_get("suhosin.post.max_vars")) - 13) / 8 : 0);
-if ($suhosin && count($row["fields"]) > $suhosin) {
- echo "" . htmlspecialchars(lang('Maximum number of allowed fields exceeded. Please increase %s and %s.', 'suhosin.post.max_vars', 'suhosin.request.max_vars')) . "
\n";
-}
-?>
-
-
-
-: " />
-()
-()
-
-
-
-
-: " />
-: " maxlength="60" />
-
-
-
-
-
- />
-
-server_info >= 5.1) {
- $partition_table = ereg('RANGE|LIST', $row["partition_by"]);
- ?>
-
-
-
-( " />)
-: " />
-
-
-
-
-
diff --git a/createv.inc.php b/createv.inc.php
deleted file mode 100644
index 4113df84..00000000
--- a/createv.inc.php
+++ /dev/null
@@ -1,32 +0,0 @@
- $_GET["createv"]), $_GET["createv"]);
-
-$row = array();
-if ($_POST) {
- $row = $_POST;
-} elseif (strlen($_GET["createv"])) {
- $row = view($_GET["createv"]);
- $row["name"] = $_GET["createv"];
-}
-?>
-
-
-
-
-
-
-: " maxlength="64" />
-
- />
-
-
diff --git a/cross.gif b/cross.gif
deleted file mode 100644
index 05b5061c..00000000
Binary files a/cross.gif and /dev/null differ
diff --git a/database.inc.php b/database.inc.php
deleted file mode 100644
index 0e901fa1..00000000
--- a/database.inc.php
+++ /dev/null
@@ -1,76 +0,0 @@
-escape_string($_POST["collation"]) . "'" : ""))) {
- $failed = true;
- }
- $last = $db;
- }
- }
- if (query_redirect(queries(), $SELF . "db=" . urlencode($last), lang('Database has been created.'), !strlen($_GET["db"]), false, $failed)) {
- $result = $dbh->query("SHOW TABLES");
- while ($row = $result->fetch_row()) {
- if (!queries("RENAME TABLE " . idf_escape($row[0]) . " TO " . idf_escape($_POST["name"]) . "." . idf_escape($row[0]))) {
- break;
- }
- }
- $result->free();
- if (!$row) {
- queries("DROP DATABASE " . idf_escape($_GET["db"]));
- }
- query_redirect(queries(), preg_replace('~db=[^&]*&~', '', $SELF) . "db=" . urlencode($_POST["name"]), lang('Database has been renamed.'), !$row, false, $row);
- }
- } else {
- if (!$_POST["collation"]) {
- redirect(substr($SELF, 0, -1));
- }
- query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE '" . $dbh->escape_string($_POST["collation"]) . "'", substr($SELF, 0, -1), lang('Database has been altered.'));
- }
-}
-page_header(strlen($_GET["db"]) ? lang('Alter database') : lang('Create database'), $error, array(), $_GET["db"]);
-
-$collations = collations();
-$name = $_GET["db"];
-$collate = array();
-if ($_POST) {
- $name = $_POST["name"];
- $collate = $_POST["collation"];
-} else {
- if (!strlen($_GET["db"])) {
- $result = $dbh->query("SHOW GRANTS");
- while ($row = $result->fetch_row()) {
- if (preg_match('~ ON (`(([^\\\\`]+|``|\\\\.)*)%`\\.\\*)?~', $row[0], $match) && $match[1]) {
- $name = stripcslashes(idf_unescape($match[2]));
- break;
- }
- }
- $result->free();
- } elseif (($result = $dbh->query("SHOW CREATE DATABASE " . idf_escape($_GET["db"])))) {
- $create = $dbh->result($result, 1);
- if (preg_match('~ COLLATE ([^ ]+)~', $create, $match)) {
- $collate = $match[1];
- } elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $create, $match)) {
- $collate = $collations[$match[1]][0];
- }
- $result->free();
- }
-}
-?>
-
-
-
-
-()
-
-
- />
-
-
diff --git a/db.inc.php b/db.inc.php
deleted file mode 100644
index 818b6ff4..00000000
--- a/db.inc.php
+++ /dev/null
@@ -1,113 +0,0 @@
-query("SET foreign_key_checks = 0");
- if (isset($_POST["truncate"])) {
- if ($_POST["tables"]) {
- foreach ($_POST["tables"] as $table) {
- if (!queries("TRUNCATE " . idf_escape($table))) {
- $result = false;
- break;
- }
- }
- $message = lang('Tables have been truncated.');
- }
- } elseif (isset($_POST["move"])) {
- $rename = array();
- foreach ($tables_views as $table) {
- $rename[] = idf_escape($table) . " TO " . idf_escape($_POST["target"]) . "." . idf_escape($table);
- }
- $result = queries("RENAME TABLE " . implode(", ", $rename));
- $message = lang('Tables have been moved.');
- } elseif ((!isset($_POST["drop"]) || !$_POST["views"] || queries("DROP VIEW " . implode(", ", array_map('idf_escape', $_POST["views"]))))
- && (!$_POST["tables"] || ($result = queries((isset($_POST["optimize"]) ? "OPTIMIZE" : (isset($_POST["check"]) ? "CHECK" : (isset($_POST["repair"]) ? "REPAIR" : (isset($_POST["drop"]) ? "DROP" : "ANALYZE")))) . " TABLE " . implode(", ", array_map('idf_escape', $_POST["tables"])))))
- ) {
- if (isset($_POST["drop"])) {
- $message = lang('Tables have been dropped.');
- } else {
- while ($row = $result->fetch_assoc()) {
- $message .= htmlspecialchars("$row[Table]: $row[Msg_text]") . " ";
- }
- }
- }
- query_redirect(queries(), substr($SELF, 0, -1), $message, $result, false, !$result);
-}
-
-page_header(lang('Database') . ": " . htmlspecialchars($_GET["db"]), $error, false);
-echo '' . lang('Alter database') . "
\n";
-echo '' . lang('Database schema') . "
\n";
-
-echo "" . lang('Tables and views') . " \n";
-$result = $dbh->query("SHOW TABLE STATUS");
-if (!$result->num_rows) {
- echo "" . lang('No tables.') . "
\n";
-} else {
- echo "\n";
- echo "\n";
- echo '' . lang('Table') . ' ' . lang('Engine') . ' ' . lang('Collation') . ' ' . lang('Data Length') . ' ' . lang('Index Length') . ' ' . lang('Data Free') . ' ' . lang('Auto Increment') . ' ' . lang('Rows') . ' ' . lang('Comment') . " \n";
- while ($row = $result->fetch_assoc()) {
- $name = $row["Name"];
- table_comment($row);
- echo ' ';
- if (isset($row["Rows"])) {
- echo '' . htmlspecialchars($name) . " $row[Engine] $row[Collation] ";
- foreach (array("Data_length" => "create", "Index_length" => "indexes", "Data_free" => "edit", "Auto_increment" => "create", "Rows" => "select") as $key => $link) {
- $val = number_format($row[$key], 0, '.', lang(','));
- echo '' . (strlen($row[$key]) ? '' . str_replace(" ", " ", ($key == "Rows" && $row["Engine"] == "InnoDB" && $val ? lang('~ %s', $val) : $val)) . ' ' : ' ') . ' ';
- }
- echo "" . (strlen(trim($row["Comment"])) ? htmlspecialchars($row["Comment"]) : " ") . " ";
- } else {
- echo '' . htmlspecialchars($name) . ' ' . lang('View') . ' ';
- }
- echo " \n";
- }
- echo "
\n";
- echo "
\n";
- $dbs = get_databases();
- if (count($dbs) != 1) {
- $db = (isset($_POST["target"]) ? $_POST["target"] : $_GET["db"]);
- echo "" . lang('Move to other database') . ($dbs ? ": " . optionlist($dbs, $db) . " " : ': ') . "
\n";
- }
- echo " \n";
-}
-$result->free();
-
-if ($dbh->server_info >= 5) {
- echo '' . lang('Create view') . "
\n";
- echo "" . lang('Routines') . " \n";
- $result = $dbh->query("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "'");
- if ($result->num_rows) {
- echo "\n";
- }
- $result->free();
- echo '' . lang('Create procedure') . ' ' . lang('Create function') . "
\n";
-}
-
-if ($dbh->server_info >= 5.1 && ($result = $dbh->query("SHOW EVENTS"))) {
- echo "" . lang('Events') . " \n";
- if ($result->num_rows) {
- echo "\n";
- echo "" . lang('Name') . " " . lang('Schedule') . " " . lang('Start') . " " . lang('End') . " \n";
- while ($row = $result->fetch_assoc()) {
- echo "";
- echo '' . htmlspecialchars($row["Name"]) . " ";
- echo "" . ($row["Execute at"] ? lang('At given time') . " " . $row["Execute at"] : lang('Every') . " " . $row["Interval value"] . " " . $row["Interval field"] . " $row[Starts]") . " ";
- echo "$row[Ends] ";
- echo " \n";
- }
- echo "
\n";
- }
- $result->free();
- echo '' . lang('Create event') . "
\n";
-}
diff --git a/default.css b/default.css
deleted file mode 100644
index 5ea95936..00000000
--- a/default.css
+++ /dev/null
@@ -1,39 +0,0 @@
-body { color: #000; background: #fff; line-height: 1.25em; font-family: Verdana, Arial, Helvetica, sans-serif; margin: 0; font-size: 90%; }
-a { color: blue; }
-a:visited { color: navy; }
-a:hover { color: red; }
-h1 { font-size: 100%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; }
-h1 a:link, h1 a:visited { font-size: 150%; color: #777; text-decoration: none; font-style: italic; margin-right: 1ex; }
-h2 { font-size: 150%; margin: 0 0 20px -18px; padding: .8em 1em; border-bottom: 1px solid #000; color: #000; font-weight: normal; background: #ddf; }
-h3 { font-weight: normal; font-size: 130%; margin: .8em 0; }
-table { margin: 0 20px .8em 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; }
-td, th { margin-bottom: 1em; border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; }
-th { background: #eee; }
-fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: 0 .5em .5em 0; border: 1px solid #999; }
-p { margin: 0 20px 1em 0; }
-img { vertical-align: middle; border: 0; }
-code { background: #eee; }
-.js .hidden { display: none; }
-.popup { position: absolute; }
-.nowrap { white-space: nowrap; }
-.wrap { white-space: normal; }
-.error { color: red; background: #fee; padding: .5em .8em; }
-.message { color: green; background: #efe; padding: .5em .8em; }
-.char { color: #007F00; }
-.date { color: #7F007F; }
-.enum { color: #007F7F; }
-.binary { color: red; }
-.odd td { background: #F5F5F5; }
-.time { color: Silver; font-size: 70%; float: right; margin-top: -3em; }
-.function { text-align: right; }
-tr:hover td { background: #ddf; }
-thead tr:hover td { background: transparent; }
-#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; overflow: auto; overflow-y: hidden; white-space: nowrap; }
-#menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
-#menu form { margin: 0; }
-#content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; }
-#lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; }
-#breadcrumb { white-space: nowrap; position: absolute; top: 0; left: 21em; background: #eee; height: 2em; line-height: 1.8em; padding: 0 1em; margin: 0 0 0 -18px; }
-#schema { margin-left: 60px; position: relative; }
-#schema .table { border: 1px solid Silver; padding: 0 2px; cursor: move; position: absolute; }
-#schema .references { position: absolute; }
diff --git a/down.gif b/down.gif
deleted file mode 100644
index 630fc359..00000000
Binary files a/down.gif and /dev/null differ
diff --git a/download.inc.php b/download.inc.php
deleted file mode 100644
index ff1f7862..00000000
--- a/download.inc.php
+++ /dev/null
@@ -1,4 +0,0 @@
-result($dbh->query("SELECT " . idf_escape($_GET["field"]) . " FROM " . idf_escape($_GET["download"]) . " WHERE " . implode(" AND ", where($_GET)) . " LIMIT 1"));
diff --git a/dump.inc.php b/dump.inc.php
deleted file mode 100644
index fcf319ed..00000000
--- a/dump.inc.php
+++ /dev/null
@@ -1,188 +0,0 @@
- 1));
- if ($_POST["format"] != "csv") {
- $max_packet = 1048576; // default, minimum is 1024
- echo "SET NAMES utf8;\n";
- echo "SET foreign_key_checks = 0;\n";
- echo "SET time_zone = '" . $dbh->escape_string($dbh->result($dbh->query("SELECT @@time_zone"))) . "';\n";
- echo "\n";
- }
-
- $style = $_POST["db_style"];
- foreach ((strlen($_GET["db"]) ? array($_GET["db"]) : (array) $_POST["databases"]) as $db) {
- if ($dbh->select_db($db)) {
- if ($_POST["format"] != "csv" && ereg('CREATE', $style) && ($result = $dbh->query("SHOW CREATE DATABASE " . idf_escape($db)))) {
- if ($style == "DROP+CREATE") {
- echo "DROP DATABASE IF EXISTS " . idf_escape($db) . ";\n";
- }
- $create = $dbh->result($result, 1);
- echo ($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n";
- $result->free();
- }
- if ($style && $_POST["format"] != "csv") {
- echo "USE " . idf_escape($db) . ";\n\n";
- $out = "";
- if ($dbh->server_info >= 5) {
- foreach (array("FUNCTION", "PROCEDURE") as $routine) {
- $result = $dbh->query("SHOW $routine STATUS WHERE Db = '" . $dbh->escape_string($db) . "'");
- while ($row = $result->fetch_assoc()) {
- $out .= $dbh->result($dbh->query("SHOW CREATE $routine " . idf_escape($row["Name"])), 2) . ";;\n\n";
- }
- $result->free();
- }
- }
- if ($dbh->server_info >= 5.1) {
- $result = $dbh->query("SHOW EVENTS");
- while ($row = $result->fetch_assoc()) {
- $out .= $dbh->result($dbh->query("SHOW CREATE EVENT " . idf_escape($row["Name"])), 3) . ";;\n\n";
- }
- $result->free();
- }
- echo ($out ? "DELIMITER ;;\n\n$out" . "DELIMITER ;\n\n" : "");
- }
-
- if ($_POST["table_style"] || $_POST["data_style"]) {
- $views = array();
- $result = $dbh->query("SHOW TABLE STATUS");
- while ($row = $result->fetch_assoc()) {
- $table = (!strlen($_GET["db"]) || in_array($row["Name"], (array) $_POST["tables"]));
- $data = (!strlen($_GET["db"]) || in_array($row["Name"], (array) $_POST["data"]));
- if ($table || $data) {
- if (isset($row["Engine"])) {
- if ($ext == "tar") {
- ob_start();
- }
- dump_table($row["Name"], ($table ? $_POST["table_style"] : ""));
- if ($data) {
- dump_data($row["Name"], $_POST["data_style"]);
- }
- if ($ext == "tar") {
- echo tar_file((strlen($_GET["db"]) ? "" : "$db/") . "$row[Name].csv", ob_get_clean());
- } elseif ($_POST["format"] != "csv") {
- echo "\n";
- }
- } elseif ($_POST["format"] != "csv") {
- $views[] = $row["Name"];
- }
- }
- }
- $result->free();
- foreach ($views as $view) {
- dump_table($view, $_POST["table_style"], true);
- }
- }
-
- if ($style == "CREATE+ALTER" && $_POST["format"] != "csv") {
- $query = "SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";
-?>
-DELIMITER ;;
-CREATE PROCEDURE adminer_drop () BEGIN
- DECLARE _table_name, _engine, _table_collation varchar(64);
- DECLARE _table_comment varchar(64);
- DECLARE done bool DEFAULT 0;
- DECLARE tables CURSOR FOR ;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
- OPEN tables;
- REPEAT
- FETCH tables INTO _table_name, _engine, _table_collation, _table_comment;
- IF NOT done THEN
- CASE _table_namequery($query);
-while ($row = $result->fetch_assoc()) {
- $comment = $dbh->escape_string($row["ENGINE"] == "InnoDB" ? preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["TABLE_COMMENT"]) : $row["TABLE_COMMENT"]);
- echo "
- WHEN '" . $dbh->escape_string($row["TABLE_NAME"]) . "' THEN
- " . (isset($row["ENGINE"]) ? "IF _engine != '$row[ENGINE]' OR _table_collation != '$row[TABLE_COLLATION]' OR _table_comment != '$comment' THEN
- ALTER TABLE " . idf_escape($row["TABLE_NAME"]) . " ENGINE=$row[ENGINE] COLLATE=$row[TABLE_COLLATION] COMMENT='$comment';
- END IF" : "BEGIN END") . ";";
-}
-$result->free();
-?>
-
- ELSE
- SET @alter_table = CONCAT('DROP TABLE `', REPLACE(_table_name, '`', '``'), '`');
- PREPARE alter_command FROM @alter_table;
- EXECUTE alter_command; -- returns "can't return a result set in the given context" with MySQL extension
- DROP PREPARE alter_command;
- END CASE;
- END IF;
- UNTIL done END REPEAT;
- CLOSE tables;
-END;;
-DELIMITER ;
-CALL adminer_drop;
-DROP PROCEDURE adminer_drop;
- $_GET["export"]) : array()), $_GET["db"]);
-?>
-
-
-
-server_info >= 5) {
- $db_style[] = 'CREATE+ALTER';
- $table_style[] = 'CREATE+ALTER';
-}
-echo "" . lang('Output') . " $dump_output \n";
-echo "" . lang('Format') . " $dump_format \n";
-echo "" . lang('Database') . " " . optionlist($db_style, (strlen($_GET["db"]) ? '' : 'CREATE')) . " \n";
-echo "" . lang('Tables') . " " . optionlist($table_style, 'DROP+CREATE') . " \n";
-echo "" . lang('Data') . " " . optionlist($data_style, 'INSERT') . " \n";
-?>
-
-
-
-\n";
- echo " " . lang('Database') . " \n";
- foreach (get_databases() as $db) {
- if ($db != "information_schema" || $dbh->server_info < 5) {
- echo ' ' . htmlspecialchars($db) . " \n";
- }
- }
- echo "\n";
-}
-
-if (strlen($_GET["db"])) {
- $checked = (strlen($_GET["dump"]) ? "" : " checked='checked'");
- echo "\n";
-}
-?>
-
diff --git a/edit.inc.php b/edit.inc.php
deleted file mode 100644
index 43040bf9..00000000
--- a/edit.inc.php
+++ /dev/null
@@ -1,105 +0,0 @@
- $field) {
- if (isset($_GET["default"]) ? $field["auto_increment"] || preg_match('~text|blob~', $field["type"]) : !isset($field["privileges"][$update ? "update" : "insert"])) {
- unset($fields[$name]);
- }
-}
-if ($_POST && !$error && !isset($_GET["select"])) {
- $location = ($_POST["insert"] ? $_SERVER["REQUEST_URI"] : $SELF . (isset($_GET["default"]) ? "table=" : "select=") . urlencode($_GET["edit"]));
- if (isset($_POST["delete"])) {
- query_redirect("DELETE FROM " . idf_escape($_GET["edit"]) . " WHERE " . implode(" AND ", $where) . " LIMIT 1", $location, lang('Item has been deleted.'));
- } else {
- $set = array();
- foreach ($fields as $name => $field) {
- $val = process_input($name, $field);
- if (!isset($_GET["default"])) {
- if ($val !== false || !$update) {
- $set[] = "\n" . idf_escape($name) . " = " . ($val !== false ? $val : "''");
- }
- } elseif ($val !== false) {
- if ($field["type"] == "timestamp" && $val != "NULL") { //! doesn't allow DEFAULT NULL and no ON UPDATE
- $set[] = "\nMODIFY " . idf_escape($name) . " timestamp" . ($field["null"] ? " NULL" : "") . " DEFAULT $val" . ($_POST["on_update"][bracket_escape($name)] ? " ON UPDATE CURRENT_TIMESTAMP" : "");
- } else {
- $set[] = "\nALTER " . idf_escape($name) . ($val == "NULL" ? " DROP DEFAULT" : " SET DEFAULT $val");
- }
- }
- }
- if (!$set) {
- redirect($location);
- }
- if (isset($_GET["default"])) {
- query_redirect("ALTER TABLE " . idf_escape($_GET["edit"]) . implode(",", $set), $location, lang('Default values has been set.'));
- } elseif ($update) {
- query_redirect("UPDATE " . idf_escape($_GET["edit"]) . " SET" . implode(",", $set) . "\nWHERE " . implode(" AND ", $where) . " LIMIT 1", $location, lang('Item has been updated.'));
- } else {
- query_redirect("INSERT INTO " . idf_escape($_GET["edit"]) . " SET" . implode(",", $set), $location, lang('Item has been inserted.'));
- }
- }
-}
-page_header((isset($_GET["default"]) ? lang('Default values') : ($_GET["where"] || (isset($_GET["select"]) && !$_POST["clone"]) ? lang('Edit') : lang('Insert'))), $error, array((isset($_GET["default"]) ? "table" : "select") => $_GET["edit"]), $_GET["edit"]);
-
-unset($row);
-if ($_POST["save"]) {
- $row = (array) $_POST["fields"];
-} elseif ($where) {
- $select = array();
- foreach ($fields as $name => $field) {
- if (isset($field["privileges"]["select"])) {
- $select[] = ($_POST["clone"] && $field["auto_increment"] ? "'' AS " : ($field["type"] == "enum" || $field["type"] == "set" ? "1*" . idf_escape($name) . " AS " : "")) . idf_escape($name);
- }
- }
- $row = array();
- if ($select) {
- $result = $dbh->query("SELECT " . implode(", ", $select) . " FROM " . idf_escape($_GET["edit"]) . " WHERE " . implode(" AND ", $where) . " LIMIT 1");
- $row = $result->fetch_assoc();
- $result->free();
- }
-}
-?>
-
-
-\n";
- foreach ($fields as $name => $field) {
- echo "" . htmlspecialchars($name) . " ";
- $value = (!isset($row) ? ($_POST["clone"] && $field["auto_increment"] ? "" : ($where ? $field["default"] : null))
- : (strlen($row[$name]) && ($field["type"] == "enum" || $field["type"] == "set") ? intval($row[$name]) : $row[$name])
- );
- input($name, $field, $value);
- if (isset($_GET["default"]) && $field["type"] == "timestamp") {
- if (!isset($create) && !$_POST) {
- //! disable sql_mode NO_FIELD_OPTIONS
- $create = $dbh->result($dbh->query("SHOW CREATE TABLE " . idf_escape($_GET["edit"])), 1);
- }
- $checked = ($_POST ? $_POST["on_update"][bracket_escape($name)] : preg_match("~\n\\s*" . preg_quote(idf_escape($name), '~') . " timestamp.* on update CURRENT_TIMESTAMP~i", $create));
- echo ' ' . lang('ON UPDATE CURRENT_TIMESTAMP') . ' ';
- }
- echo " \n";
- }
- echo "\n";
-}
-?>
-
-
-
- (array) $_POST["check"], "clone" => $_POST["clone"], "all" => $_POST["all"]));
-}
-if ($fields) {
- echo ' ';
- if (!isset($_GET["default"]) && !isset($_GET["select"])) {
- echo ' ';
- }
-}
-if ($update) {
- echo ' ';
-}
-?>
-
-
diff --git a/event.inc.php b/event.inc.php
deleted file mode 100644
index 4eb53b42..00000000
--- a/event.inc.php
+++ /dev/null
@@ -1,54 +0,0 @@
- "ENABLE", "DISABLED" => "DISABLE", "SLAVESIDE_DISABLED" => "DISABLE ON SLAVE");
-
-if ($_POST && !$error) {
- if ($_POST["drop"]) {
- query_redirect("DROP EVENT " . idf_escape($_GET["event"]), substr($SELF, 0, -1), lang('Event has been dropped.'));
- } elseif (in_array($_POST["INTERVAL_FIELD"], $intervals) && in_array($_POST["STATUS"], $statuses)) {
- $schedule = "\nON SCHEDULE " . ($_POST["INTERVAL_VALUE"]
- ? "EVERY '" . $dbh->escape_string($_POST["INTERVAL_VALUE"]) . "' $_POST[INTERVAL_FIELD]"
- . ($_POST["STARTS"] ? " STARTS '" . $dbh->escape_string($_POST["STARTS"]) . "'" : "")
- . ($_POST["ENDS"] ? " ENDS '" . $dbh->escape_string($_POST["ENDS"]) . "'" : "") //! ALTER EVENT doesn't drop ENDS - MySQL bug #39173
- : "AT '" . $dbh->escape_string($_POST["STARTS"]) . "'"
- ) . " ON COMPLETION" . ($_POST["ON_COMPLETION"] ? "" : " NOT") . " PRESERVE"
- ;
- query_redirect((strlen($_GET["event"])
- ? "ALTER EVENT " . idf_escape($_GET["event"]) . $schedule
- . ($_GET["event"] != $_POST["EVENT_NAME"] ? "\nRENAME TO " . idf_escape($_POST["EVENT_NAME"]) : "")
- : "CREATE EVENT " . idf_escape($_POST["EVENT_NAME"]) . $schedule
- ) . "\n$_POST[STATUS] COMMENT '" . $dbh->escape_string($_POST["EVENT_COMMENT"])
- . "' DO\n$_POST[EVENT_DEFINITION]"
- , substr($SELF, 0, -1), (strlen($_GET["event"]) ? lang('Event has been altered.') : lang('Event has been created.')));
- }
-}
-page_header((strlen($_GET["event"]) ? lang('Alter event') . ": " . htmlspecialchars($_GET["event"]) : lang('Create event')), $error);
-
-$row = array();
-if ($_POST) {
- $row = $_POST;
-} elseif (strlen($_GET["event"])) {
- $result = $dbh->query("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "' AND EVENT_NAME = '" . $dbh->escape_string($_GET["event"]) . "'");
- $row = $result->fetch_assoc();
- $row["STATUS"] = $statuses[$row["STATUS"]];
- $result->free();
-}
-?>
-
-
-
-
-
-
-
- />
-
-
diff --git a/favicon.ico b/favicon.ico
deleted file mode 100644
index ef958a09..00000000
Binary files a/favicon.ico and /dev/null differ
diff --git a/foreign.inc.php b/foreign.inc.php
deleted file mode 100644
index 7d15c64e..00000000
--- a/foreign.inc.php
+++ /dev/null
@@ -1,81 +0,0 @@
- $val) {
- $target[$key] = $_POST["target"][$key];
- }
- query_redirect("ALTER TABLE " . idf_escape($_GET["foreign"])
- . (strlen($_GET["name"]) ? "\nDROP FOREIGN KEY " . idf_escape($_GET["name"]) . "," : "")
- . "\nADD FOREIGN KEY (" . implode(", ", array_map('idf_escape', $source)) . ") REFERENCES " . idf_escape($_POST["table"]) . " (" . implode(", ", array_map('idf_escape', $target)) . ")"
- . (in_array($_POST["on_delete"], $on_actions) ? " ON DELETE $_POST[on_delete]" : "")
- . (in_array($_POST["on_update"], $on_actions) ? " ON UPDATE $_POST[on_update]" : "")
- , $SELF . "table=" . urlencode($_GET["foreign"]), (strlen($_GET["name"]) ? lang('Foreign key has been altered.') : lang('Foreign key has been created.')));
- }
-}
-page_header(lang('Foreign key'), $error, array("table" => $_GET["foreign"]), $_GET["foreign"]);
-
-$tables = array();
-$result = $dbh->query("SHOW TABLE STATUS");
-while ($row = $result->fetch_assoc()) {
- if ($row["Engine"] == "InnoDB") {
- $tables[] = $row["Name"];
- }
-}
-$result->free();
-
-if ($_POST) {
- $row = $_POST;
- ksort($row["source"]);
- if ($_POST["add"]) {
- $row["source"][] = "";
- } elseif ($_POST["change"] || $_POST["change-js"]) {
- $row["target"] = array();
- }
-} elseif (strlen($_GET["name"])) {
- $foreign_keys = foreign_keys($_GET["foreign"]);
- $row = $foreign_keys[$_GET["name"]];
- $row["source"][] = "";
-} else {
- $row = array("table" => $_GET["foreign"], "source" => array(""));
-}
-
-$source = get_vals("SHOW COLUMNS FROM " . idf_escape($_GET["foreign"])); //! no text and blob
-$target = ($_GET["foreign"] === $row["table"] ? $source : get_vals("SHOW COLUMNS FROM " . idf_escape($row["table"])));
-?>
-
-
-
-:
-
-
-
-
-
-
- $val) {
- echo "";
- echo " " . optionlist($source, $val) . " ";
- echo "" . optionlist($target, $row["target"][$key]) . " ";
- echo " \n";
- $j++;
-}
-?>
-
-
-:
-:
-
-
-
-
- />
-
-
-
diff --git a/functions.js b/functions.js
deleted file mode 100644
index f9d4e4b5..00000000
--- a/functions.js
+++ /dev/null
@@ -1,268 +0,0 @@
-document.body.className = 'js';
-
-function toggle(id) {
- var el = document.getElementById(id);
- el.className = (el.className == 'hidden' ? '' : 'hidden');
- return true;
-}
-
-function popup(el) {
- el.getElementsByTagName('span')[0].className = 'popup';
-}
-
-function popdown(el) {
- el.getElementsByTagName('span')[0].className = 'hidden';
-}
-
-function verify_version(version) {
- document.cookie = 'adminer_version=0';
- var script = document.createElement('script');
- script.src = 'http://www.adminer.org/version.php?version=' + version;
- document.body.appendChild(script);
-}
-
-function load_jush() {
- var script = document.createElement('script');
- script.src = 'externals/jush/jush.js';
- script.onload = function () {
- jush.style('externals/jush/jush.css');
- jush.highlight_tag('pre');
- jush.highlight_tag('code');
- }
- script.onreadystatechange = function () {
- if (script.readyState == 'loaded' || script.readyState == 'complete') {
- script.onload();
- }
- }
- document.body.appendChild(script);
-}
-
-function form_check(el, name) {
- var elems = el.form.elements;
- for (var i=0; i < elems.length; i++) {
- if (name.test(elems[i].name)) {
- elems[i].checked = el.checked;
- }
- }
-}
-
-function form_uncheck(id) {
- document.getElementById(id).checked = false;
-}
-
-
-
-function where_change(op) {
- for (var i=0; i < op.form.elements.length; i++) {
- var el = op.form.elements[i];
- if (el.name == op.name.substr(0, op.name.length - 4) + '[val]') {
- el.className = (/NULL$/.test(op.options[op.selectedIndex].text) ? 'hidden' : '');
- }
- }
-}
-
-function select_add_row(field) {
- var row = field.parentNode.cloneNode(true);
- var selects = row.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/[a-z]\[[0-9]+/, '$&1');
- selects[i].selectedIndex = 0;
- }
- var inputs = row.getElementsByTagName('input');
- if (inputs.length) {
- inputs[0].name = inputs[0].name.replace(/[a-z]\[[0-9]+/, '$&1');
- inputs[0].value = '';
- inputs[0].className = '';
- }
- field.parentNode.parentNode.appendChild(row);
- field.onchange = function () { };
-}
-
-
-
-var added = '.', row_count;
-
-function editing_add_row(button, allowed) {
- if (allowed && row_count >= allowed) {
- return false;
- }
- var match = /([0-9]+)(\.[0-9]+)?/.exec(button.name);
- var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
- var row = button.parentNode.parentNode;
- var row2 = row.cloneNode(true);
- var tags = row.getElementsByTagName('select');
- var tags2 = row2.getElementsByTagName('select');
- for (var i=0; i < tags.length; i++) {
- tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
- tags2[i].selectedIndex = tags[i].selectedIndex;
- }
- tags = row.getElementsByTagName('input');
- tags2 = row2.getElementsByTagName('input');
- for (var i=0; i < tags.length; i++) {
- if (tags[i].name == 'auto_increment_col') {
- tags[i].value = x;
- tags2[i].checked = tags[i].checked;
- tags[i].checked = false;
- }
- tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
- if (/\[(orig|field|comment)/.test(tags[i].name)) {
- tags[i].value = '';
- }
- }
- row.parentNode.insertBefore(row2, row);
- tags[0].focus();
- added += '0';
- row_count++;
- return true;
-}
-
-function editing_remove_row(button) {
- var field = button.form[button.name.replace(/drop_col(.+)/, 'fields$1[field]')];
- field.parentNode.removeChild(field);
- button.parentNode.parentNode.style.display = 'none';
- return true;
-}
-
-function editing_type_change(type) {
- var name = type.name.substr(0, type.name.length - 6);
- for (var i=0; i < type.form.elements.length; i++) {
- var el = type.form.elements[i];
- if (el.name == name + '[collation]') {
- el.className = (/char|text|enum|set/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
- }
- if (el.name == name + '[unsigned]') {
- el.className = (/int|float|double|decimal/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
- }
- }
-}
-
-function column_comments_click(checked) {
- var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
- for (var i=0; i < trs.length; i++) {
- trs[i].getElementsByTagName('td')[5].className = (checked ? '' : 'hidden');
- }
-}
-
-function partition_by_change(el) {
- var partition_table = /RANGE|LIST/.test(el.options[el.selectedIndex].text);
- el.form['partitions'].className = (partition_table || !el.selectedIndex ? 'hidden' : '');
- document.getElementById('partition-table').className = (partition_table ? '' : 'hidden');
-}
-
-function partition_name_change(el) {
- var row = el.parentNode.parentNode.cloneNode(true);
- row.firstChild.firstChild.value = '';
- el.parentNode.parentNode.parentNode.appendChild(row);
- el.onchange = function () {};
-}
-
-
-
-function foreign_add_row(field) {
- var row = field.parentNode.parentNode.cloneNode(true);
- var selects = row.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/\]/, '1$&');
- selects[i].selectedIndex = 0;
- }
- field.parentNode.parentNode.parentNode.appendChild(row);
- field.onchange = function () { };
-}
-
-
-
-function indexes_add_row(field) {
- var row = field.parentNode.parentNode.cloneNode(true);
- var spans = row.getElementsByTagName('span');
- row.getElementsByTagName('td')[1].innerHTML = '' + spans[spans.length - 1].innerHTML + ' ';
- var selects = row.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/indexes\[[0-9]+/, '$&1');
- selects[i].selectedIndex = 0;
- }
- var input = row.getElementsByTagName('input')[0];
- input.name = input.name.replace(/indexes\[[0-9]+/, '$&1');
- input.value = '';
- field.parentNode.parentNode.parentNode.appendChild(row);
- field.onchange = function () { };
-}
-
-function indexes_add_column(field) {
- var column = field.parentNode.cloneNode(true);
- var select = column.getElementsByTagName('select')[0];
- select.name = select.name.replace(/\]\[[0-9]+/, '$&1');
- select.selectedIndex = 0;
- var input = column.getElementsByTagName('input')[0];
- input.name = input.name.replace(/\]\[[0-9]+/, '$&1');
- input.value = '';
- field.parentNode.parentNode.appendChild(column);
- field.onchange = function () { };
-}
-
-
-
-var that, x, y, em, table_pos;
-
-function schema_mousedown(el, event) {
- that = el;
- x = event.clientX - el.offsetLeft;
- y = event.clientY - el.offsetTop;
-}
-
-function schema_mousemove(ev) {
- if (that !== undefined) {
- ev = ev || event;
- var left = (ev.clientX - x) / em;
- var top = (ev.clientY - y) / em;
- var divs = that.getElementsByTagName('div');
- var line_set = { };
- for (var i=0; i < divs.length; i++) {
- if (divs[i].className == 'references') {
- var div2 = document.getElementById((divs[i].id.substr(0, 4) == 'refs' ? 'refd' : 'refs') + divs[i].id.substr(4));
- var ref = (table_pos[divs[i].title] ? table_pos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]);
- var left1 = -1;
- var is_top = true;
- var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1');
- if (divs[i].parentNode != div2.parentNode) {
- left1 = Math.min(0, ref[1] - left) - 1;
- divs[i].style.left = left1 + 'em';
- divs[i].getElementsByTagName('div')[0].style.width = -left1 + 'em';
- var left2 = Math.min(0, left - ref[1]) - 1;
- div2.style.left = left2 + 'em';
- div2.getElementsByTagName('div')[0].style.width = -left2 + 'em';
- is_top = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em);
- }
- if (!line_set[id]) {
- var line = document.getElementById(divs[i].id.replace(/^....(.+)-[0-9]+$/, 'refl$1'));
- var shift = ev.clientY - y - that.offsetTop;
- line.style.left = (left + left1) + 'em';
- if (is_top) {
- line.style.top = (line.offsetTop + shift) / em + 'em';
- }
- if (divs[i].parentNode != div2.parentNode) {
- line = line.getElementsByTagName('div')[0];
- line.style.height = (line.offsetHeight + (is_top ? -1 : 1) * shift) / em + 'em';
- }
- line_set[id] = true;
- }
- }
- }
- that.style.left = left + 'em';
- that.style.top = top + 'em';
- }
-}
-
-function schema_mouseup(ev) {
- if (that !== undefined) {
- ev = ev || event;
- table_pos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ];
- that = undefined;
- var date = new Date();
- date.setMonth(date.getMonth() + 1);
- var s = '';
- for (var key in table_pos) {
- s += '_' + key + ':' + Math.round(table_pos[key][0] * 10000) / 10000 + 'x' + Math.round(table_pos[key][1] * 10000) / 10000;
- }
- document.cookie = 'schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search;
- }
-}
diff --git a/include/auth.inc.php b/include/auth.inc.php
deleted file mode 100644
index 85f70d5b..00000000
--- a/include/auth.inc.php
+++ /dev/null
@@ -1,76 +0,0 @@
-getMessage() : ($dbh ? $dbh : lang('Invalid credentials.'))) : (isset($_POST["server"]) ? lang('Sessions must be enabled.') : ($_POST ? lang('Session expired, please login again.') : ""))), null);
- ?>
-
-
-
- $val) {
- echo ' ';
- }
- ?>
-
-
-
-' . lang('Create new database') . " \n";
- echo '' . lang('Privileges') . "
\n";
- echo '' . lang('Process list') . "
\n";
- echo "" . lang('MySQL version: %s through PHP extension %s', "server_info < 4.1 ? " class='binary'" : "") . ">$dbh->server_info ", "$dbh->extension ") . "
\n";
- echo "" . lang('Logged as: %s', "" . htmlspecialchars($dbh->result($dbh->query("SELECT USER()"))) . " ") . "
\n";
- }
- page_footer("db");
-}
-
-$dbh->query("SET SQL_QUOTE_SHOW_CREATE=1");
-if (!(strlen($_GET["db"]) ? $dbh->select_db($_GET["db"]) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]))) {
- if (strlen($_GET["db"])) {
- unset($_SESSION["databases"][$_GET["server"]]);
- }
- connect_error();
- exit;
-}
-$dbh->query("SET CHARACTER SET utf8");
diff --git a/include/design.inc.php b/include/design.inc.php
deleted file mode 100644
index f3046352..00000000
--- a/include/design.inc.php
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-">
-
-
-
-
' . (isset($_GET["server"]) ? htmlspecialchars($_GET["server"]) : lang('Server')) . ' » ';
- if (is_array($breadcrumb)) {
- if (strlen($_GET["db"])) {
- echo '
' . htmlspecialchars($_GET["db"]) . ' » ';
- }
- foreach ($breadcrumb as $key => $val) {
- if (strlen($val)) {
- echo '
' . htmlspecialchars($val) . ' » ';
- }
- }
- }
- echo "$title\n";
- }
- echo "
$title" . (strlen($title2) ? ": " . htmlspecialchars($title2) : "") . " \n";
- if ($_SESSION["messages"]) {
- echo "
" . implode("
\n
", $_SESSION["messages"]) . "
\n";
- $_SESSION["messages"] = array();
- }
- $databases = &$_SESSION["databases"][$_GET["server"]];
- if (strlen($_GET["db"]) && $databases && !in_array($_GET["db"], $databases, true)) {
- $databases = null;
- }
- if (isset($databases) && !isset($_GET["sql"]) && !isset($_SESSION["coverage"])) {
- session_write_close();
- }
- if ($error) {
- echo "
$error
\n";
- }
-}
-
-function page_footer($missing = false) {
- global $SELF, $dbh, $VERSION;
- ?>
-
-
-
-
-
-
-
-") { //! pass empty separator if there are no functions in the whole table
- global $types;
- $name = htmlspecialchars(bracket_escape($name));
- echo " ";
- if ($field["type"] == "enum") {
- echo ($separator ? " $separator" : "") . (isset($_GET["select"]) ? ' ' . lang('original') . ' ' : "");
- if ($field["null"] || isset($_GET["default"])) {
- echo ' ' . ($field["null"] ? 'NULL ' : '') . ' ';
- }
- if (!isset($_GET["default"])) {
- echo ' ';
- }
- preg_match_all("~'((?:[^']+|'')*)'~", $field["length"], $matches);
- foreach ($matches[1] as $i => $val) {
- $val = stripcslashes(str_replace("''", "'", $val));
- $checked = (is_int($value) ? $value == $i+1 : $value === $val);
- echo ' ' . htmlspecialchars($val) . ' ';
- }
- } else {
- $first = ($field["null"] || isset($_GET["default"])) + isset($_GET["select"]);
- $onchange = ($first ? ' onchange="var f = this.form[\'function[' . addcslashes($name, "\r\n'\\") . ']\']; if (' . $first . ' > f.selectedIndex) f.selectedIndex = ' . $first . ';"' : '');
- $options = array("");
- if (!isset($_GET["default"])) {
- if (preg_match('~char|date|time~', $field["type"])) {
- $options = (preg_match('~char~', $field["type"]) ? array("", "md5", "sha1", "password", "uuid") : array("", "now"));
- }
- if (!isset($_GET["call"]) && (isset($_GET["select"]) || where($_GET))) {
- if (preg_match('~int|float|double|decimal~', $field["type"])) {
- $options = array("", "+", "-");
- }
- if (preg_match('~date~', $field["type"])) {
- $options[] = "+ interval";
- $options[] = "- interval";
- }
- if (preg_match('~time~', $field["type"])) {
- $options[] = "addtime";
- $options[] = "subtime";
- }
- }
- }
- if ($field["null"] || isset($_GET["default"])) {
- array_unshift($options, "NULL");
- }
- echo (count($options) > 1 || isset($_GET["select"]) ? '' . (isset($_GET["select"]) ? '' . lang('original') . ' ' : '') . optionlist($options, (isset($value) ? (string) $_POST["function"][$name] : null)) . ' ' : ($separator ? " " : "")) . $separator;
- if ($field["type"] == "set") { //! 64 bits
- preg_match_all("~'((?:[^']+|'')*)'~", $field["length"], $matches);
- foreach ($matches[1] as $i => $val) {
- $val = stripcslashes(str_replace("''", "'", $val));
- $checked = (is_int($value) ? ($value >> $i) & 1 : in_array($val, explode(",", $value), true));
- echo ' ' . htmlspecialchars($val) . ' ';
- }
- } elseif (strpos($field["type"], "text") !== false) {
- echo '' . htmlspecialchars($value) . ' ';
- } elseif (preg_match('~binary|blob~', $field["type"])) {
- echo (ini_get("file_uploads") ? ' ' : lang('File uploads are disabled.') . ' ');
- } else {
- $maxlength = (!ereg('int', $field["type"]) && preg_match('~^([0-9]+)(,([0-9]+))?$~', $field["length"], $match) ? ($match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0));
- echo ' ';
- }
- }
-}
-
-function process_input($name, $field) {
- global $dbh;
- $idf = bracket_escape($name);
- $function = $_POST["function"][$idf];
- $value = $_POST["fields"][$idf];
- if ($field["type"] == "enum" ? $value == -1 : $function == "orig") {
- return false;
- } elseif ($field["type"] == "enum" || $field["auto_increment"] ? !strlen($value) : $function == "NULL") {
- return "NULL";
- } elseif ($field["type"] == "enum") {
- return (isset($_GET["default"]) ? "'" . $dbh->escape_string($value) . "'" : intval($value));
- } elseif ($field["type"] == "set") {
- return (isset($_GET["default"]) ? "'" . implode(",", array_map(array($dbh, 'escape_string'), (array) $value)) . "'" : array_sum((array) $value));
- } elseif (preg_match('~binary|blob~', $field["type"])) {
- $file = get_file($idf);
- if (!is_string($file)) {
- return false; //! report errors
- }
- return "_binary'" . (is_string($file) ? $dbh->escape_string($file) : "") . "'";
- } elseif ($field["type"] == "timestamp" && $value == "CURRENT_TIMESTAMP") {
- return $value;
- } elseif (preg_match('~^(now|uuid)$~', $function)) {
- return "$function()";
- } elseif (preg_match('~^[+-]$~', $function)) {
- return idf_escape($name) . " $function '" . $dbh->escape_string($value) . "'";
- } elseif (preg_match('~^[+-] interval$~', $function)) {
- return idf_escape($name) . " $function " . (preg_match("~^([0-9]+|'[0-9.: -]') [A-Z_]+$~i", $value) ? $value : "'" . $dbh->escape_string($value) . "'") . "";
- } elseif (preg_match('~^(addtime|subtime)$~', $function)) {
- return "$function(" . idf_escape($name) . ", '" . $dbh->escape_string($value) . "')";
- } elseif (preg_match('~^(md5|sha1|password)$~', $function)) {
- return "$function('" . $dbh->escape_string($value) . "')";
- } else {
- return "'" . $dbh->escape_string($value) . "'";
- }
-}
-
-function edit_type($key, $field, $collations) {
- global $types, $unsigned, $inout;
- ?>
-
- " size="3" />
-(' . lang('collation') . ') ' . optionlist($collations, $field["collation"]) . '' . ($unsigned ? " ' . optionlist($unsigned, $field["unsigned"]) . ' ' : ''); ?>
-escape_string($field["collation"]) . "'" : "")
- ;
-}
-
-function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0) {
- global $inout;
- $column_comments = false;
- foreach ($fields as $field) {
- if (strlen($field["comment"])) {
- $column_comments = true;
- }
- }
- ?>
-
-
-
-
-
-
-
-
-
->
-
-
-
- $field) {
- $i++;
- $display = (isset($_POST["add"][$i-1]) || (isset($field["field"]) && !$_POST["drop_col"][$i]));
- ?>
->
-
- " maxlength="64" /> " />
-
-
- checked="checked" />
- checked="checked" />
-> " maxlength="255" />
-
- ";
- echo " ";
- echo " ";
- echo " ";
- echo "\n \n";
- }
- return $column_comments;
-}
-
-function process_fields(&$fields) {
- ksort($fields);
- $offset = 0;
- if ($_POST["up"]) {
- $last = 0;
- foreach ($fields as $key => $field) {
- if (key($_POST["up"]) == $key) {
- unset($fields[$key]);
- array_splice($fields, $last, 0, array($field));
- break;
- }
- if (isset($field["field"])) {
- $last = $offset;
- }
- $offset++;
- }
- }
- if ($_POST["down"]) {
- $found = false;
- foreach ($fields as $key => $field) {
- if (isset($field["field"]) && $found) {
- unset($fields[key($_POST["down"])]);
- array_splice($fields, $offset, 0, array($found));
- break;
- }
- if (key($_POST["down"]) == $key) {
- $found = $field;
- }
- $offset++;
- }
- }
- $fields = array_values($fields);
- if ($_POST["add"]) {
- array_splice($fields, key($_POST["add"]), 0, array(array()));
- }
-}
-
-function normalize_enum($match) {
- return "'" . str_replace("'", "''", addcslashes(stripcslashes(str_replace($match[0]{0} . $match[0]{0}, $match[0]{0}, substr($match[0], 1, -1))), '\\')) . "'";
-}
-
-function routine($name, $type) {
- global $dbh, $enum_length, $inout;
- $aliases = array("bit" => "tinyint", "bool" => "tinyint", "boolean" => "tinyint", "integer" => "int", "double precision" => "float", "real" => "float", "dec" => "decimal", "numeric" => "decimal", "fixed" => "decimal", "national char" => "char", "national varchar" => "varchar");
- $type_pattern = "([a-z]+)(?:\\s*\\(((?:[^'\")]*|$enum_length)+)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?";
- $pattern = "\\s*(" . ($type == "FUNCTION" ? "" : implode("|", $inout)) . ")?\\s*(?:`((?:[^`]+|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern";
- $create = $dbh->result($dbh->query("SHOW CREATE $type " . idf_escape($name)), 2);
- preg_match("~\\(((?:$pattern\\s*,?)*)\\)" . ($type == "FUNCTION" ? "\\s*RETURNS\\s+$type_pattern" : "") . "\\s*(.*)~is", $create, $match);
- $fields = array();
- preg_match_all("~$pattern\\s*,?~is", $match[1], $matches, PREG_SET_ORDER);
- foreach ($matches as $i => $param) {
- $data_type = strtolower($param[4]);
- $fields[$i] = array(
- "field" => str_replace("``", "`", $param[2]) . $param[3],
- "type" => (isset($aliases[$data_type]) ? $aliases[$data_type] : $data_type),
- "length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $param[5]),
- "unsigned" => strtolower(preg_replace('~\\s+~', ' ', trim("$param[7] $param[6]"))),
- "inout" => strtoupper($param[1]),
- "collation" => strtolower($param[8]),
- );
- }
- if ($type != "FUNCTION") {
- return array("fields" => $fields, "definition" => $match[10]);
- }
- $returns = array("type" => $match[10], "length" => $match[11], "unsigned" => $match[13], "collation" => $match[14]);
- return array("fields" => $fields, "returns" => $returns, "definition" => $match[15]);
-}
diff --git a/include/export.inc.php b/include/export.inc.php
deleted file mode 100644
index 02b16165..00000000
--- a/include/export.inc.php
+++ /dev/null
@@ -1,178 +0,0 @@
- $val) {
- if (preg_match("~[\"\n,]~", $val) || (isset($val) && !strlen($val))) {
- $row[$key] = '"' . str_replace('"', '""', $val) . '"';
- }
- }
- echo implode(",", $row) . "\n";
-}
-
-function dump_table($table, $style, $is_view = false) {
- global $dbh;
- if ($_POST["format"] == "csv") {
- echo "\xef\xbb\xbf";
- if ($style) {
- dump_csv(array_keys(fields($table)));
- }
- } elseif ($style) {
- $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table));
- if ($result) {
- if ($style == "DROP+CREATE") {
- echo "DROP " . ($is_view ? "VIEW" : "TABLE") . " IF EXISTS " . idf_escape($table) . ";\n";
- }
- $create = $dbh->result($result, 1);
- $result->free();
- echo ($style != "CREATE+ALTER" ? $create : ($is_view ? substr_replace($create, " OR REPLACE", 6, 0) : substr_replace($create, " IF NOT EXISTS", 12, 0))) . ";\n\n";
- }
- if ($style == "CREATE+ALTER" && !$is_view) {
- $query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '" . $dbh->escape_string($table) . "' ORDER BY ORDINAL_POSITION";
-?>
-DELIMITER ;;
-CREATE PROCEDURE adminer_alter () BEGIN
- DECLARE _column_name, _collation_name, _column_type, after varchar(64) DEFAULT '';
- DECLARE _column_default longtext;
- DECLARE _is_nullable char(3);
- DECLARE _extra varchar(20);
- DECLARE _column_comment varchar(255);
- DECLARE done, set_after bool DEFAULT 0;
- DECLARE add_columns text DEFAULT 'query($query);
-$after = "";
-while ($row = $result->fetch_assoc()) {
- $row["default"] = (isset($row["COLUMN_DEFAULT"]) ? "'" . $dbh->escape_string($row["COLUMN_DEFAULT"]) . "'" : "NULL");
- $row["after"] = $dbh->escape_string($after); //! rgt AFTER lft, lft AFTER id doesn't work
- $row["alter"] = $dbh->escape_string(idf_escape($row["COLUMN_NAME"])
- . " $row[COLUMN_TYPE]"
- . ($row["COLLATION_NAME"] ? " COLLATE $row[COLLATION_NAME]" : "")
- . (isset($row["COLUMN_DEFAULT"]) ? " DEFAULT $row[default]" : "")
- . ($row["IS_NULLABLE"] == "YES" ? "" : " NOT NULL")
- . ($row["EXTRA"] ? " $row[EXTRA]" : "")
- . ($row["COLUMN_COMMENT"] ? " COMMENT '" . $dbh->escape_string($row["COLUMN_COMMENT"]) . "'" : "")
- . ($after ? " AFTER " . idf_escape($after) : " FIRST")
- );
- echo ", ADD $row[alter]";
- $fields[] = $row;
- $after = $row["COLUMN_NAME"];
-}
-$result->free();
-?>';
- DECLARE columns CURSOR FOR ;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
- SET @alter_table = '';
- OPEN columns;
- REPEAT
- FETCH columns INTO _column_name, _column_default, _is_nullable, _collation_name, _column_type, _extra, _column_comment;
- IF NOT done THEN
- SET set_after = 1;
- CASE _column_nameescape_string($row["COLUMN_NAME"]) . "' THEN
- SET add_columns = REPLACE(add_columns, ', ADD $row[alter]', '');
- IF NOT (_column_default <=> $row[default]) OR _is_nullable != '$row[IS_NULLABLE]' OR _collation_name != '$row[COLLATION_NAME]' OR _column_type != '$row[COLUMN_TYPE]' OR _extra != '$row[EXTRA]' OR _column_comment != '" . $dbh->escape_string($row["COLUMN_COMMENT"]) . "' OR after != '$row[after]' THEN
- SET @alter_table = CONCAT(@alter_table, ', MODIFY $row[alter]');
- END IF;"; //! don't replace in comment
-}
-?>
-
- ELSE
- SET @alter_table = CONCAT(@alter_table, ', DROP ', _column_name);
- SET set_after = 0;
- END CASE;
- IF set_after THEN
- SET after = _column_name;
- END IF;
- END IF;
- UNTIL done END REPEAT;
- CLOSE columns;
- IF @alter_table != '' OR add_columns != '' THEN
- SET @alter_table = CONCAT('ALTER TABLE ', SUBSTR(CONCAT(add_columns, @alter_table), 2));
- PREPARE alter_command FROM @alter_table;
- EXECUTE alter_command;
- DROP PREPARE alter_command;
- END IF;
-END;;
-DELIMITER ;
-CALL adminer_alter;
-DROP PROCEDURE adminer_alter;
-
-server_info >= 5) {
- $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($table, "%_")) . "'");
- if ($result->num_rows) {
- echo "DELIMITER ;;\n\n";
- while ($row = $result->fetch_assoc()) {
- echo "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . idf_escape($row["Table"]) . " FOR EACH ROW $row[Statement];;\n\n";
- }
- echo "DELIMITER ;\n\n";
- }
- $result->free();
- }
- }
-}
-
-function dump_data($table, $style, $select = "") {
- global $dbh, $max_packet;
- if ($style) {
- if ($_POST["format"] != "csv" && $style == "TRUNCATE+INSERT") {
- echo "TRUNCATE " . idf_escape($table) . ";\n";
- }
- $result = $dbh->query(($select ? $select : "SELECT * FROM " . idf_escape($table))); //! enum and set as numbers, binary as _binary, microtime
- if ($result) {
- $length = 0;
- while ($row = $result->fetch_assoc()) {
- if ($_POST["format"] == "csv") {
- dump_csv($row);
- } else {
- $insert = "INSERT INTO " . idf_escape($table) . ($select ? " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ")" : "") . " VALUES ";
- $row2 = array();
- foreach ($row as $key => $val) {
- $row2[$key] = (isset($val) ? "'" . $dbh->escape_string($val) . "'" : "NULL");
- }
- if ($style == "INSERT+UPDATE") {
- $set = array();
- foreach ($row as $key => $val) {
- $set[] = idf_escape($key) . " = " . (isset($val) ? "'" . $dbh->escape_string($val) . "'" : "NULL");
- }
- echo "$insert (" . implode(", ", $row2) . ") ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n";
- } else {
- $s = "(" . implode(", ", $row2) . ")";
- if (!$length) {
- echo $insert, $s;
- $length = strlen($insert) + strlen($s);
- } else {
- $length += 2 + strlen($s);
- if ($length < $max_packet) {
- echo ", ", $s;
- } else {
- echo ";\n", $insert, $s;
- $length = strlen($insert) + strlen($s);
- }
- }
- }
- }
- }
- if ($_POST["format"] != "csv" && $style != "INSERT+UPDATE" && $result->num_rows) {
- echo ";\n";
- }
- $result->free();
- }
- }
-}
-
-function dump_headers($identifier, $multi_table = false) {
- $filename = (strlen($identifier) ? friendly_url($identifier) : "dump");
- $ext = ($_POST["format"] == "sql" ? "sql" : ($multi_table ? "tar" : "csv"));
- header("Content-Type: " . ($ext == "tar" ? "application/x-tar" : ($ext == "sql" || $_POST["output"] != "file" ? "text/plain" : "text/csv")) . "; charset=utf-8");
- header("Content-Disposition: " . ($_POST["output"] == "file" ? "attachment" : "inline") . "; filename=$filename.$ext");
- return $ext;
-}
-
-$dump_output = "" . lang('open') . " " . lang('save') . " ";
-$dump_format = "" . lang('SQL') . " " . lang('CSV') . " ";
-$max_packet = 0;
diff --git a/include/functions.inc.php b/include/functions.inc.php
deleted file mode 100644
index 9ef2b787..00000000
--- a/include/functions.inc.php
+++ /dev/null
@@ -1,252 +0,0 @@
- ':1', ']' => ':2', '[' => ':3');
- return strtr($idf, ($back ? array_flip($trans) : $trans));
-}
-
-function optionlist($options, $selected = null) {
- $return = "";
- foreach ($options as $k => $v) {
- if (is_array($v)) {
- $return .= '';
- }
- foreach ((is_array($v) ? $v : array($v)) as $val) {
- $return .= '' . htmlspecialchars($val) . ' ';
- }
- if (is_array($v)) {
- $return .= ' ';
- }
- }
- return $return;
-}
-
-function get_vals($query, $column = 0) {
- global $dbh;
- $return = array();
- $result = $dbh->query($query);
- if ($result) {
- while ($row = $result->fetch_row()) {
- $return[] = $row[$column];
- }
- $result->free();
- }
- return $return;
-}
-
-function unique_idf($row, $indexes) {
- foreach ($indexes as $index) {
- if ($index["type"] == "PRIMARY" || $index["type"] == "UNIQUE") {
- $return = array();
- foreach ($index["columns"] as $key) {
- if (!isset($row[$key])) {
- continue 2;
- }
- $return[] = urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($row[$key]);
- }
- return $return;
- }
- }
- $return = array();
- foreach ($row as $key => $val) {
- $return[] = (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key));
- }
- return $return;
-}
-
-function where($where) {
- global $dbh;
- $return = array();
- foreach ((array) $where["where"] as $key => $val) {
- $key = bracket_escape($key, "back");
- $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]+|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " = BINARY '" . $dbh->escape_string($val) . "'"; //! enum and set, columns looking like functions
- }
- foreach ((array) $where["null"] as $key) {
- $key = bracket_escape($key, "back");
- $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]+|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " IS NULL";
- }
- return $return;
-}
-
-function where_check($val) {
- parse_str($val, $check);
- return where($check);
-}
-
-function process_length($length) {
- global $enum_length;
- return (preg_match("~^\\s*(?:$enum_length)(?:\\s*,\\s*(?:$enum_length))*\\s*\$~", $length) && preg_match_all("~$enum_length~", $length, $matches) ? implode(",", $matches[0]) : preg_replace('~[^0-9,+-]~', '', $length));
-}
-
-function redirect($location, $message = null) {
- if (isset($message)) {
- $_SESSION["messages"][] = $message;
- }
- if (strlen(SID)) {
- $location .= (strpos($location, "?") === false ? "?" : "&") . SID;
- }
- header("Location: " . (strlen($location) ? $location : "."));
- exit;
-}
-
-function query_redirect($query, $location, $message, $redirect = true, $execute = true, $failed = false) {
- global $dbh, $error, $SELF;
- $id = "sql-" . count($_SESSION["messages"]);
- $sql = "";
- if ($query) {
- $sql = " " . lang('SQL command') . " " . htmlspecialchars($query) . '' . lang('Edit') . ' ';
- $_SESSION["history"][$_GET["server"]][$_GET["db"]][] = $query;
- }
- if ($execute) {
- $failed = !$dbh->query($query);
- }
- if ($failed) {
- $error = htmlspecialchars($dbh->error) . $sql;
- return false;
- }
- if ($redirect) {
- redirect($location, $message . $sql);
- }
- return true;
-}
-
-function queries($query = null) {
- global $dbh;
- static $queries = array();
- if (!isset($query)) {
- return implode(";\n", $queries);
- }
- $queries[] = $query;
- return $dbh->query($query);
-}
-
-function remove_from_uri($param = "") {
- $param = "($param|" . session_name() . ")";
- return preg_replace("~\\?$param=[^&]*&~", '?', preg_replace("~\\?$param=[^&]*\$|&$param=[^&]*~", '', $_SERVER["REQUEST_URI"]));
-}
-
-function print_page($page) {
- echo " " . ($page == $_GET["page"] ? $page + 1 : '' . ($page + 1) . " ");
-}
-
-function get_file($key) {
- if (isset($_POST["files"][$key])) {
- $length = strlen($_POST["files"][$key]);
- return ($length && $length < 4 ? intval($_POST["files"][$key]) : base64_decode($_POST["files"][$key]));
- }
- return (!$_FILES[$key] || $_FILES[$key]["error"] ? $_FILES[$key]["error"] : file_get_contents($_FILES[$key]["tmp_name"]));
-}
-
-function odd($s = ' class="odd"') {
- static $i = 0;
- if (!$s) { // reset counter
- $i = -1;
- }
- return ($i++ % 2 ? $s : '');
-}
-
-function select($result, $dbh2 = null) {
- global $SELF;
- if (!$result->num_rows) {
- echo "" . lang('No rows.') . "
\n";
- } else {
- echo "\n";
- $links = array();
- $indexes = array();
- $columns = array();
- $blobs = array();
- $types = array();
- odd('');
- for ($i=0; $row = $result->fetch_row(); $i++) {
- if (!$i) {
- echo "";
- for ($j=0; $j < count($row); $j++) {
- $field = $result->fetch_field();
- if (strlen($field->orgtable)) {
- if (!isset($indexes[$field->orgtable])) {
- $indexes[$field->orgtable] = array();
- foreach (indexes($field->orgtable, $dbh2) as $index) {
- if ($index["type"] == "PRIMARY") {
- $indexes[$field->orgtable] = array_flip($index["columns"]);
- break;
- }
- }
- $columns[$field->orgtable] = $indexes[$field->orgtable];
- }
- if (isset($columns[$field->orgtable][$field->orgname])) {
- unset($columns[$field->orgtable][$field->orgname]);
- $indexes[$field->orgtable][$field->orgname] = $j;
- $links[$j] = $field->orgtable;
- }
- }
- if ($field->charsetnr == 63) {
- $blobs[$j] = true;
- }
- $types[$j] = $field->type;
- echo "" . htmlspecialchars($field->name) . " ";
- }
- echo " \n";
- }
- echo "";
- foreach ($row as $key => $val) {
- if (!isset($val)) {
- $val = "NULL ";
- } else {
- if ($blobs[$key] && !is_utf8($val)) {
- $val = "" . lang('%d byte(s)', strlen($val)) . " "; //! link to download
- } elseif (!strlen(trim($val))) {
- $val = " ";
- } else {
- $val = nl2br(htmlspecialchars($val));
- if ($types[$key] == 254) {
- $val = "$val";
- }
- }
- if (isset($links[$key]) && !$columns[$links[$key]]) {
- $link = "edit=" . urlencode($links[$key]);
- foreach ($indexes[$links[$key]] as $col => $j) {
- $link .= "&where" . urlencode("[" . bracket_escape($col) . "]") . "=" . urlencode($row[$j]);
- }
- $val = '' . $val . ' ';
- }
- }
- echo "$val ";
- }
- echo " \n";
- }
- echo "
\n";
- }
- $result->free();
-}
-
-function is_utf8($val) {
- return (preg_match('~~u', $val) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $val));
-}
-
-function shorten_utf8($string, $length) {
- preg_match("~^(.{0,$length})(.?)~su", $string, $match);
- return nl2br(htmlspecialchars($match[1])) . ($match[2] ? "... " : "");
-}
-
-function friendly_url($val) {
- return preg_replace('~[^a-z0-9_]~i', '-', $val);
-}
-
-function hidden_fields($process, $ignore = array()) {
- while (list($key, $val) = each($process)) {
- if (is_array($val)) {
- foreach ($val as $k => $v) {
- $process[$key . "[$k]"] = $v;
- }
- } elseif (!in_array($key, $ignore)) {
- echo ' ';
- }
- }
-}
diff --git a/include/lang.inc.php b/include/lang.inc.php
deleted file mode 100644
index 36a58277..00000000
--- a/include/lang.inc.php
+++ /dev/null
@@ -1,68 +0,0 @@
- 'English', // Jakub Vrána - http://php.vrana.cz
- 'cs' => 'ÄeÅ¡tina', // Jakub Vrána - http://php.vrana.cz
- 'sk' => 'SlovenÄina', // Ivan Suchy - http://www.ivansuchy.com
- 'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be
- 'es' => 'Español', // Klemens Häckel - http://clickdimension.wordpress.com
- 'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com
- 'zh' => 'ç®ä½ä¸æ', // Mr. Lodar
- 'fr' => 'Français', // Francis Gagné
- 'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
- 'et' => 'Eesti', // Priit Kallas
- 'ru' => 'Ð ÑÑÑкий ÑзÑк', // Juraj Hajdúch
-);
-
-function lang($idf, $number = null) {
- global $LANG, $translations;
- $translation = $translations[$idf];
- if (is_array($translation) && $translation) {
- $pos = ($number == 1 ? 0 : ((!$number || $number >= 5) && ereg('cs|sk|ru', $LANG) ? 2 : 1));
- $translation = $translation[$pos];
- }
- $args = func_get_args();
- array_shift($args);
- return vsprintf((isset($translation) ? $translation : $idf), $args);
-}
-
-function switch_lang() {
- global $LANG, $langs;
- echo "\n";
- hidden_fields($_GET, array('lang'));
- echo lang('Language') . ":
";
- foreach ($langs as $lang => $val) {
- echo "$val ";
- }
- echo " \n
\n
\n \n";
-}
-
-if (isset($_GET["lang"])) {
- $_COOKIE["lang"] = $_GET["lang"];
- $_SESSION["lang"] = $_GET["lang"];
-}
-
-$LANG = "en";
-if (isset($langs[$_COOKIE["lang"]])) {
- setcookie("lang", $_GET["lang"], strtotime("+1 month"), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]));
- $LANG = $_COOKIE["lang"];
-} elseif (isset($langs[$_SESSION["lang"]])) {
- $LANG = $_SESSION["lang"];
-} else {
- $accept_language = array();
- preg_match_all('~([-a-z_]+)(;q=([0-9.]+))?~', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $accept_language[str_replace("_", "-", $match[1])] = (isset($match[3]) ? $match[3] : 1);
- }
- arsort($accept_language);
- foreach ($accept_language as $key => $q) {
- if (isset($langs[$key])) {
- $LANG = $key;
- break;
- }
- $key = preg_replace('~-.*~', '', $key);
- if (!isset($accept_language[$key]) && isset($langs[$key])) {
- $LANG = $key;
- break;
- }
- }
-}
diff --git a/include/mysql.inc.php b/include/mysql.inc.php
deleted file mode 100644
index 7b9fbb1f..00000000
--- a/include/mysql.inc.php
+++ /dev/null
@@ -1,317 +0,0 @@
-real_connect(
- (strlen($server) ? $host : ini_get("mysqli.default_host")),
- (strlen("$server$username") ? $username : ini_get("mysqli.default_user")),
- (strlen("$server$username$password") ? $password : ini_get("mysqli.default_pw")),
- null,
- (is_numeric($port) ? $port : ini_get("mysqli.default_port")),
- (!is_numeric($port) ? $port : null)
- );
- }
-
- function result($result, $field = 0) {
- if (!$result) {
- return false;
- }
- $row = $result->_result->fetch_array();
- return $row[$field];
- }
-
- // minification compatibility start
- function select_db($database) {
- return parent::select_db($database);
- }
-
- function query($query) {
- $result = parent::query($query);
- return (is_object($result) ? new Min_Result($result) : $result);
- }
-
- function multi_query($query) {
- return parent::multi_query($query);
- }
-
- function store_result() {
- $result = parent::store_result();
- return (is_object($result) ? new Min_Result($result) : $result);
- }
-
- function next_result() {
- return parent::next_result();
- }
-
- function escape_string($string) {
- return parent::escape_string($string);
- }
- }
-
- class Min_Result {
- var $_result, $num_rows;
-
- function __construct($result) {
- $this->_result = $result;
- $this->num_rows = $result->num_rows;
- }
-
- function fetch_assoc() {
- return $this->_result->fetch_assoc();
- }
-
- function fetch_row() {
- return $this->_result->fetch_row();
- }
-
- function fetch_field() {
- return $this->_result->fetch_field();
- }
-
- function free() {
- return $this->_result->free();
- }
- // minification compatibility end
- }
-
-} elseif (extension_loaded("mysql")) {
- class Min_DB {
- var $extension = "MySQL", $_link, $_result, $server_info, $affected_rows, $error;
-
- function connect($server, $username, $password) {
- $this->_link = @mysql_connect(
- (strlen($server) ? $server : ini_get("mysql.default_host")),
- (strlen("$server$username") ? $username : ini_get("mysql.default_user")),
- (strlen("$server$username$password") ? $password : ini_get("mysql.default_password")),
- true,
- 131072 // CLIENT_MULTI_RESULTS for CALL
- );
- if ($this->_link) {
- $this->server_info = mysql_get_server_info($this->_link);
- } else {
- $this->error = mysql_error();
- }
- return (bool) $this->_link;
- }
-
- function select_db($database) {
- return mysql_select_db($database, $this->_link);
- }
-
- function query($query) {
- $result = @mysql_query($query, $this->_link); // mute mysql.trace_mode
- if (!$result) {
- $this->error = mysql_error($this->_link);
- return false;
- } elseif ($result === true) {
- $this->affected_rows = mysql_affected_rows($this->_link);
- return true;
- }
- return new Min_Result($result);
- }
-
- function multi_query($query) {
- return $this->_result = $this->query($query);
- }
-
- function store_result() {
- return $this->_result;
- }
-
- function next_result() {
- return false;
- }
-
- function result($result, $field = 0) {
- if (!$result) {
- return false;
- }
- return mysql_result($result->_result, 0, $field);
- }
-
- function escape_string($string) {
- return mysql_real_escape_string($string, $this->_link);
- }
- }
-
- class Min_Result {
- var $_result, $_offset = 0, $num_rows;
-
- function Min_Result($result) {
- $this->_result = $result;
- $this->num_rows = mysql_num_rows($result);
- }
-
- function fetch_assoc() {
- return mysql_fetch_assoc($this->_result);
- }
-
- function fetch_row() {
- return mysql_fetch_row($this->_result);
- }
-
- function fetch_field() {
- $row = mysql_fetch_field($this->_result, $this->_offset++);
- $row->orgtable = $row->table;
- $row->orgname = $row->name;
- $row->charsetnr = ($row->blob ? 63 : 0);
- return $row;
- }
-
- function free() {
- return mysql_free_result($this->_result);
- }
- }
-
-} elseif (extension_loaded("pdo_mysql")) {
- class Min_DB extends Min_PDO {
- var $extension = "PDO_MySQL";
-
- function connect($server, $username, $password) {
- $this->dsn("mysql:host=" . str_replace(":", ";unix_socket=", preg_replace('~:([0-9])~', ';port=\\1', $server)), $username, $password);
- $this->server_info = $this->result($this->query("SELECT VERSION()"));
- return true;
- }
- }
-
-} else {
- page_header(lang('No MySQL extension'), lang('None of supported PHP extensions (%s) are available.', 'MySQLi, MySQL, PDO_MySQL'), null);
- page_footer("auth");
- exit;
-}
-
-$types = array(
- "tinyint" => 3, "smallint" => 5, "mediumint" => 8, "int" => 10, "bigint" => 20,
- "float" => 12, "double" => 21, "decimal" => 66,
- "date" => 10, "datetime" => 19, "timestamp" => 19, "time" => 10, "year" => 4,
- "char" => 255, "varchar" => 65535,
- "binary" => 255, "varbinary" => 65535,
- "tinytext" => 255, "text" => 65535, "mediumtext" => 16777215, "longtext" => 4294967295,
- "tinyblob" => 255, "blob" => 65535, "mediumblob" => 16777215, "longblob" => 4294967295,
- "enum" => 65535, "set" => 64,
-);
-$unsigned = array("", "unsigned", "zerofill", "unsigned zerofill");
-
-function connect() {
- $dbh = new Min_DB;
- return ($dbh->connect($_GET["server"], $_SESSION["usernames"][$_GET["server"]], $_SESSION["passwords"][$_GET["server"]]) ? $dbh : $dbh->error);
-}
-
-function get_databases() {
- $return = &$_SESSION["databases"][$_GET["server"]];
- if (!isset($return)) {
- flush();
- $return = get_vals("SHOW DATABASES");
- }
- return $return;
-}
-
-function table_status($table) {
- global $dbh;
- $result = $dbh->query("SHOW TABLE STATUS LIKE '" . $dbh->escape_string(addcslashes($table, "%_")) . "'");
- $return = $result->fetch_assoc();
- $result->free();
- return $return;
-}
-
-function fields($table) {
- global $dbh;
- $return = array();
- $result = $dbh->query("SHOW FULL COLUMNS FROM " . idf_escape($table));
- if ($result) {
- while ($row = $result->fetch_assoc()) {
- preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $row["Type"], $match);
- $return[$row["Field"]] = array(
- "field" => $row["Field"],
- "type" => $match[1],
- "length" => $match[2],
- "unsigned" => ltrim($match[3] . $match[4]),
- "default" => (strlen($row["Default"]) || ereg("char", $match[1]) ? $row["Default"] : null),
- "null" => ($row["Null"] == "YES"),
- "auto_increment" => ($row["Extra"] == "auto_increment"),
- "collation" => $row["Collation"],
- "privileges" => array_flip(explode(",", $row["Privileges"])),
- "comment" => $row["Comment"],
- "primary" => ($row["Key"] == "PRI"),
- );
- }
- $result->free();
- }
- return $return;
-}
-
-function indexes($table, $dbh2 = null) {
- global $dbh;
- if (!is_object($dbh2)) {
- $dbh2 = $dbh;
- }
- $return = array();
- $result = $dbh2->query("SHOW INDEX FROM " . idf_escape($table));
- if ($result) {
- while ($row = $result->fetch_assoc()) {
- $return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE")));
- $return[$row["Key_name"]]["columns"][$row["Seq_in_index"]] = $row["Column_name"];
- $return[$row["Key_name"]]["lengths"][$row["Seq_in_index"]] = $row["Sub_part"];
- }
- $result->free();
- }
- return $return;
-}
-
-function foreign_keys($table) {
- global $dbh, $on_actions;
- static $pattern = '(?:[^`]+|``)+';
- $return = array();
- $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table));
- if ($result) {
- $create_table = $dbh->result($result, 1);
- $result->free();
- preg_match_all("~CONSTRAINT `($pattern)` FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)(?: ON DELETE (" . implode("|", $on_actions) . "))?(?: ON UPDATE (" . implode("|", $on_actions) . "))?~", $create_table, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- preg_match_all("~`($pattern)`~", $match[2], $source);
- preg_match_all("~`($pattern)`~", $match[5], $target);
- $return[$match[1]] = array(
- "db" => idf_unescape(strlen($match[4]) ? $match[3] : $match[4]),
- "table" => idf_unescape(strlen($match[4]) ? $match[4] : $match[3]),
- "source" => array_map('idf_unescape', $source[1]),
- "target" => array_map('idf_unescape', $target[1]),
- "on_delete" => $match[6],
- "on_update" => $match[7],
- );
- }
- }
- return $return;
-}
-
-function view($name) {
- global $dbh;
- return array("select" => preg_replace('~^(?:[^`]+|`[^`]*`)* AS ~U', '', $dbh->result($dbh->query("SHOW CREATE VIEW " . idf_escape($name)), 1)));
-}
-
-function collations() {
- global $dbh;
- $return = array();
- $result = $dbh->query("SHOW COLLATION");
- while ($row = $result->fetch_assoc()) {
- if ($row["Default"] && $return[$row["Charset"]]) {
- array_unshift($return[$row["Charset"]], $row["Collation"]);
- } else {
- $return[$row["Charset"]][] = $row["Collation"];
- }
- }
- $result->free();
- return $return;
-}
-
-function table_comment(&$row) {
- if ($row["Engine"] == "InnoDB") {
- $row["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["Comment"]);
- }
-}
diff --git a/include/pdo.inc.php b/include/pdo.inc.php
deleted file mode 100644
index e7962d22..00000000
--- a/include/pdo.inc.php
+++ /dev/null
@@ -1,84 +0,0 @@
-setAttribute(13, array('Min_PDOStatement')); // PDO::ATTR_STATEMENT_CLASS
- }
-
- function select_db($database) {
- return $this->query("USE " . idf_escape($database));
- }
-
- function query($query) {
- $result = parent::query($query);
- if (!$result) {
- $errorInfo = $this->errorInfo();
- $this->error = $errorInfo[2];
- return false;
- }
- $this->_result = $result;
- if (!$result->columnCount()) {
- $this->affected_rows = $result->rowCount();
- return true;
- }
- $result->num_rows = $result->rowCount();
- return $result;
- }
-
- function multi_query($query) {
- return $this->query($query);
- }
-
- function store_result() {
- return ($this->_result->columnCount() ? $this->_result : true);
- }
-
- function next_result() {
- return $this->_result->nextRowset();
- }
-
- function result($result, $field = 0) {
- if (!$result) {
- return false;
- }
- $row = $result->fetch();
- return $row[$field];
- }
-
- function escape_string($string) {
- return substr($this->quote($string), 1, -1);
- }
- }
-
- class Min_PDOStatement extends PDOStatement {
- var $_offset = 0, $num_rows;
-
- function fetch_assoc() {
- return $this->fetch(2); // PDO::FETCH_ASSOC
- }
-
- function fetch_row() {
- return $this->fetch(3); // PDO::FETCH_NUM
- }
-
- function fetch_field() {
- $row = (object) $this->getColumnMeta($this->_offset++);
- $row->orgtable = $row->table;
- $row->orgname = $row->name;
- $row->charsetnr = (in_array("blob", $row->flags) ? 63 : 0);
- return $row;
- }
-
- function free() {
- // $this->__destruct() is not callable
- }
- }
-}
diff --git a/include/sqlite.inc.php b/include/sqlite.inc.php
deleted file mode 100644
index 156d3198..00000000
--- a/include/sqlite.inc.php
+++ /dev/null
@@ -1,264 +0,0 @@
-error = $error;
- return false;
- } elseif ($result === true) {
- $this->affected_rows = parent::changes();
- return true;
- }
- return new Min_Result($result);
- }
-
- function escape_string($string) {
- return sqlite_escape_string($string);
- }
-
- function result($result, $field = 0) {
- if (!$result) {
- return false;
- }
- $row = $result->_result->fetch();
- return $row[$field];
- }
- }
-
- class Min_Result {
- var $_result, $num_rows;
-
- function __construct($result) {
- $this->_result = $result;
- $this->num_rows = $result->numRows();
- }
-
- function fetch_assoc() {
- return $this->_result->fetch(SQLITE_ASSOC);
- }
-
- function fetch_row() {
- return $this->_result->fetch(SQLITE_NUM);
- }
-
- function fetch_field() {
- static $column = -1;
- $column++;
- return (object) array(
- "name" => parent::fieldName($column),
- //! type, orgtable, charsetnr
- );
- }
-
- function free() {
- }
- }
-
- } else {
-
- class Min_SQLite extends SQLite3 {
- var $extension = "SQLite3";
-
- function open($filename) {
- parent::__construct($filename);
- }
-
- function query($query) {
- $result = @parent::query($query);
- if (!$result) {
- $this->error = parent::lastErrorMsg();
- return false;
- } elseif ($result === true) {
- $this->affected_rows = parent::changes();
- return true;
- }
- return new Min_Result($result);
- }
-
- function escape_string($string) {
- return parent::escapeString($string);
- }
-
- function result($result, $field = 0) {
- if (!$result) {
- return false;
- }
- $row = $result->_result->fetchArray();
- return $row[$field];
- }
- }
-
- class Min_Result {
- var $_result, $num_rows;
-
- function __construct($result) {
- $this->_result = $result;
- //! $this->num_rows = ;
- }
-
- function fetch_assoc() {
- return $this->_result->fetchArray(SQLITE3_ASSOC);
- }
-
- function fetch_row() {
- return $this->_result->fetchArray(SQLITE3_NUM);
- }
-
- function fetch_field() {
- static $column = -1;
- $column++;
- return (object) array(
- "name" => parent::columnName($column),
- "type" => parent::columnType($column),
- //! orgtable, charsetnr
- );
- }
-
- function free() {
- return $this->_result->finalize();
- }
- }
-
- }
-
- class Min_DB extends Min_SQLite {
-
- function __construct() {
- }
-
- function select_db($filename) {
- set_exception_handler('connect_error'); // try/catch is not compatible with PHP 4
- $this->open($filename);
- restore_exception_handler();
- $this->server_info = $this->result($this->query("SELECT sqlite_version()"));
- return true;
- }
-
- function multi_query($query) {
- return $this->_result = $this->query($query);
- }
-
- function store_result() {
- return $this->_result;
- }
-
- function next_result() {
- return false;
- }
- }
-
-} elseif (extension_loaded("pdo_sqlite")) {
- class Min_DB extends Min_PDO {
- var $extension = "PDO_SQLite";
-
- function select_db($filename) {
- set_exception_handler('connect_error'); // try/catch is not compatible with PHP 4
- parent::__construct(($_GET["sqlite_version"] == 2 ? "sqlite2" : "sqlite") . ":$filename");
- restore_exception_handler();
- $this->setAttribute(13, array('Min_PDOStatement')); // PDO::ATTR_STATEMENT_CLASS
- $this->server_info = $this->result($this->query("SELECT sqlite_version()"));
- return true;
- }
- }
-
-}
-
-$types = array("text" => 0, "numeric" => 0, "integer" => 0, "real" => 0, "blob" => 0);
-$unsigned = array();
-
-function connect() {
- return new Min_DB;
-}
-
-function get_databases() {
- return array();
-}
-
-function table_status($table) {
- return array();
-}
-
-function fields($table) {
- global $dbh;
- $return = array();
- $result = $dbh->query("PRAGMA table_info(" . idf_escape($table) . ")");
- while ($row = $result->fetch_assoc()) {
- preg_match('~^([^( ]+)(?:\\((.+)\\))?$~', $row["Type"], $match);
- $return[$row["Field"]] = array(
- "field" => $row["name"],
- "type" => $match[1],
- "length" => $match[2],
- "default" => $row["dflt_value"],
- "null" => !$row["notnull"],
- "auto_increment" => false, //!
- "collation" => $row["Collation"], //!
- "comment" => "", //!
- "primary" => $row["pk"],
- );
- }
- $result->free();
- return $return;
-}
-
-function indexes($table, $dbh2 = null) {
- global $dbh;
- $return = array();
- $result = $dbh->query("PRAGMA index_list(" . idf_escape($table) . ")");
- while ($row = $result->fetch_assoc()) {
- $return[$row["name"]]["type"] = ($row["unique"] ? "UNIQUE" : "INDEX");
- $result1 = $dbh->query("PRAGMA index_info(" . idf_escape($row["name"]) . ")");
- while ($row1 = $result1->fetch_assoc()) {
- $return[$row["name"]]["columns"][$row1["seqno"]] = $row1["name"];
- }
- $result1->free();
- }
- $result->free();
- //! detect primary key from table definition
- return $return;
-}
-
-function foreign_keys($table) {
- global $dbh, $on_actions;
- static $pattern = '(?:[^`]+|``)+';
- $return = array();
- $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table));
- if ($result) {
- $create_table = $dbh->result($result, 1);
- $result->free();
- preg_match_all("~CONSTRAINT `($pattern)` FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)(?: ON DELETE (" . implode("|", $on_actions) . "))?(?: ON UPDATE (" . implode("|", $on_actions) . "))?~", $create_table, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- preg_match_all("~`($pattern)`~", $match[2], $source);
- preg_match_all("~`($pattern)`~", $match[5], $target);
- $return[$match[1]] = array(
- "db" => idf_unescape(strlen($match[4]) ? $match[3] : $match[4]),
- "table" => idf_unescape(strlen($match[4]) ? $match[4] : $match[3]),
- "source" => array_map('idf_unescape', $source[1]),
- "target" => array_map('idf_unescape', $target[1]),
- "on_delete" => $match[6],
- "on_update" => $match[7],
- );
- }
- }
- return $return;
-}
-
-function view($name) {
- global $dbh;
- return array("select" => preg_replace('~^(?:[^`]+|`[^`]*`)* AS ~iU', '', $dbh->result($dbh->query("SELECT sql FROM sqlite_master WHERE name = '" . $dbh->escape_string($name) . "'"), 0)));
-}
-
-function collations() {
- return get_vals("PRAGMA collation_list", 1);
-}
-
-function table_comment(&$row) {
-}
diff --git a/include/version.inc.php b/include/version.inc.php
deleted file mode 100644
index 5d1cd816..00000000
--- a/include/version.inc.php
+++ /dev/null
@@ -1,2 +0,0 @@
- $lines) {
- foreach ($lines as $l => $val) {
- if (!$_SESSION["coverage"][$filename][$l] || $val > 0) {
- $_SESSION["coverage"][$filename][$l] = $val;
- }
- }
- }
- }
- xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
- register_shutdown_function('save_coverage');
- if ($_GET["start"]) {
- return;
- }
-}
-if (get_magic_quotes_gpc()) {
- $process = array(&$_GET, &$_POST);
- while (list($key, $val) = each($process)) {
- foreach ($val as $k => $v) {
- unset($process[$key][$k]);
- if (is_array($v)) {
- $process[$key][stripslashes($k)] = $v;
- $process[] = &$process[$key][stripslashes($k)];
- } else {
- $process[$key][stripslashes($k)] = stripslashes($v);
- }
- }
- }
- unset($process);
-}
-set_magic_quotes_runtime(false);
-$SELF = preg_replace('~^[^?]*/([^?]*).*~', '\\1?', $_SERVER["REQUEST_URI"]) . (strlen($_GET["server"]) ? 'server=' . urlencode($_GET["server"]) . '&' : '') . (strlen($_GET["db"]) ? 'db=' . urlencode($_GET["db"]) . '&' : '');
-
-include "./include/version.inc.php";
-include "./include/functions.inc.php";
-include "./include/lang.inc.php";
-include "./lang/$LANG.inc.php";
-include "./include/design.inc.php";
-include "./include/pdo.inc.php";
-include "./include/mysql.inc.php";
-include "./include/auth.inc.php";
-include "./include/connect.inc.php";
-include "./include/editing.inc.php";
-include "./include/export.inc.php";
-
-if (isset($_GET["download"])) {
- include "./download.inc.php";
-} else { // outputs footer
- $on_actions = array("RESTRICT", "CASCADE", "SET NULL", "NO ACTION");
- $enum_length = '\'(?:\'\'|[^\'\\\\]+|\\\\.)*\'|"(?:""|[^"\\\\]+|\\\\.)*"';
- $inout = array("IN", "OUT", "INOUT");
- $confirm = " onclick=\"return confirm('" . lang('Are you sure?') . "');\"";
-
- $error = "";
- if (isset($_GET["table"])) {
- include "./table.inc.php";
- } elseif (isset($_GET["view"])) {
- include "./view.inc.php";
- } elseif (isset($_GET["schema"])) {
- include "./schema.inc.php";
- } elseif (isset($_GET["dump"])) {
- include "./dump.inc.php";
- } elseif (isset($_GET["privileges"])) {
- include "./privileges.inc.php";
- } else { // uses CSRF token
- $token = $_SESSION["tokens"][$_GET["server"]];
- if ($_POST) {
- if ($_POST["token"] != $token) {
- $error = lang('Invalid CSRF token. Send the form again.');
- }
- } elseif ($_SERVER["REQUEST_METHOD"] == "POST") {
- $error = lang('Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.');
- }
- if (isset($_GET["default"])) {
- $_GET["edit"] = $_GET["default"];
- }
- if (isset($_GET["select"]) && $_POST && (!$_POST["delete"] && !$_POST["export"] && !$_POST["import"] && !$_POST["save"])) {
- $_GET["edit"] = $_GET["select"];
- }
- if (isset($_GET["callf"])) {
- $_GET["call"] = $_GET["callf"];
- }
- if (isset($_GET["function"])) {
- $_GET["procedure"] = $_GET["function"];
- }
- if (isset($_GET["sql"])) {
- include "./sql.inc.php";
- } elseif (isset($_GET["edit"])) {
- include "./edit.inc.php";
- } elseif (isset($_GET["create"])) {
- include "./create.inc.php";
- } elseif (isset($_GET["indexes"])) {
- include "./indexes.inc.php";
- } elseif (isset($_GET["database"])) {
- include "./database.inc.php";
- } elseif (isset($_GET["call"])) {
- include "./call.inc.php";
- } elseif (isset($_GET["foreign"])) {
- include "./foreign.inc.php";
- } elseif (isset($_GET["createv"])) {
- include "./createv.inc.php";
- } elseif (isset($_GET["event"])) {
- include "./event.inc.php";
- } elseif (isset($_GET["procedure"])) {
- include "./procedure.inc.php";
- } elseif (isset($_GET["trigger"])) {
- include "./trigger.inc.php";
- } elseif (isset($_GET["user"])) {
- include "./user.inc.php";
- } elseif (isset($_GET["processlist"])) {
- include "./processlist.inc.php";
- } elseif (isset($_GET["select"])) {
- include "./select.inc.php";
- } else {
- include "./db.inc.php";
- }
- }
- page_footer();
-}
diff --git a/indexes.inc.php b/indexes.inc.php
deleted file mode 100644
index c8c3f3b8..00000000
--- a/indexes.inc.php
+++ /dev/null
@@ -1,88 +0,0 @@
- $column) {
- if (strlen($column)) {
- $length = $index["lengths"][$key];
- $set[] = idf_escape($column) . ($length ? "(" . intval($length) . ")" : "");
- $columns[count($columns) + 1] = $column;
- $lengths[count($lengths) + 1] = ($length ? $length : null);
- }
- }
- if ($columns) {
- foreach ($indexes as $name => $existing) {
- ksort($existing["columns"]);
- ksort($existing["lengths"]);
- if ($index["type"] == $existing["type"] && $existing["columns"] === $columns && $existing["lengths"] === $lengths) {
- unset($indexes[$name]);
- continue 2;
- }
- }
- $alter[] = "\nADD $index[type]" . ($index["type"] == "PRIMARY" ? " KEY" : "") . " (" . implode(", ", $set) . ")";
- }
- }
- }
- foreach ($indexes as $name => $existing) {
- $alter[] = "\nDROP INDEX " . idf_escape($name);
- }
- if (!$alter) {
- redirect($SELF . "table=" . urlencode($_GET["indexes"]));
- }
- query_redirect("ALTER TABLE " . idf_escape($_GET["indexes"]) . implode(",", $alter), $SELF . "table=" . urlencode($_GET["indexes"]), lang('Indexes has been altered.'));
-}
-page_header(lang('Indexes'), $error, array("table" => $_GET["indexes"]), $_GET["indexes"]);
-
-$fields = array_keys(fields($_GET["indexes"]));
-$row = array("indexes" => $indexes);
-if ($_POST) {
- $row = $_POST;
- if ($_POST["add"]) {
- foreach ($row["indexes"] as $key => $index) {
- if (strlen($index["columns"][count($index["columns"])])) {
- $row["indexes"][$key]["columns"][] = "";
- }
- }
- $index = end($row["indexes"]);
- if ($index["type"] || array_filter($index["columns"], 'strlen') || array_filter($index["lengths"], 'strlen')) {
- $row["indexes"][] = array("columns" => array(1 => ""));
- }
- }
-} else {
- foreach ($row["indexes"] as $key => $index) {
- $row["indexes"][$key]["columns"][] = "";
- }
- $row["indexes"][] = array("columns" => array(1 => ""));
-}
-?>
-
-
-
-
-
-
-
-
-
diff --git a/lang.php b/lang.php
new file mode 100644
index 00000000..f9de597b
--- /dev/null
+++ b/lang.php
@@ -0,0 +1,41 @@
+ 1) {
+ $_COOKIE["lang"] = $_SERVER["argv"][1];
+ include dirname(__FILE__) . "/adminer/include/lang.inc.php";
+ if ($_SERVER["argc"] != 2 || !isset($langs[$_COOKIE["lang"]])) {
+ echo "Usage: php lang.php [lang]\nPurpose: Update lang/*.inc.php from source code messages.\n";
+ exit(1);
+ }
+}
+
+$messages_all = array();
+foreach (array_merge(glob(dirname(__FILE__) . "/adminer/*.php"), glob(dirname(__FILE__) . "/adminer/include/*.php")) as $filename) {
+ $file = file_get_contents($filename);
+ if (preg_match_all("~lang\\(('(?:[^\\\\']+|\\\\.)*')([),])~", $file, $matches)) {
+ $messages_all += array_combine($matches[1], $matches[2]);
+ }
+}
+
+foreach (glob(dirname(__FILE__) . "/adminer/lang/" . ($_COOKIE["lang"] ? $_COOKIE["lang"] : "*") . ".inc.php") as $filename) {
+ $messages = $messages_all;
+ preg_match_all("~^(\\s*)(?:// )?(('(?:[^\\\\']+|\\\\.)*') => .*[^,\n]),?~m", file_get_contents($filename), $matches, PREG_SET_ORDER);
+ $s = "";
+ foreach ($matches as $match) {
+ if (isset($messages[$match[3]])) {
+ $s .= "$match[1]$match[2],\n";
+ unset($messages[$match[3]]);
+ } else {
+ $s .= "$match[1]// $match[2],\n";
+ }
+ }
+ foreach($messages as $idf => $val) {
+ if ($val == "," && strpos($idf, "%d")) {
+ $s .= "\t$idf => array(),\n";
+ } elseif (basename($filename) != "en.inc.php") {
+ $s .= "\t$idf => null,\n";
+ }
+ }
+ fwrite(fopen($filename, "w"), " 'PÅihlásit se',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'Odhlášenà probÄhlo v poÅádku.',
- 'Invalid credentials.' => 'Neplatné pÅihlaÅ¡ovacà údaje.',
- 'Server' => 'Server',
- 'Username' => 'Uživatel',
- 'Password' => 'Heslo',
- 'Select database' => 'Vybrat databázi',
- 'Invalid database.' => 'Nesprávná databáze.',
- 'Create new database' => 'VytvoÅit novou databázi',
- 'Table has been dropped.' => 'Tabulka byla odstranÄna.',
- 'Table has been altered.' => 'Tabulka byla zmÄnÄna.',
- 'Table has been created.' => 'Tabulka byla vytvoÅena.',
- 'Alter table' => 'PozmÄnit tabulku',
- 'Create table' => 'VytvoÅit tabulku',
- 'Table name' => 'Název tabulky',
- 'engine' => 'úložiÅ¡tÄ',
- 'collation' => 'porovnávánÃ',
- 'Column name' => 'Název sloupce',
- 'Type' => 'Typ',
- 'Length' => 'Délka',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto Increment',
- 'Options' => 'Volby',
- 'Save' => 'Uložit',
- 'Drop' => 'Odstranit',
- 'Database has been dropped.' => 'Databáze byla odstranÄna.',
- 'Database has been created.' => 'Databáze byla vytvoÅena.',
- 'Database has been renamed.' => 'Databáze byla pÅejmenována.',
- 'Database has been altered.' => 'Databáze byla zmÄnÄna.',
- 'Alter database' => 'PozmÄnit databázi',
- 'Create database' => 'VytvoÅit databázi',
- 'SQL command' => 'SQL pÅÃkaz',
- 'Dump' => 'Export',
- 'Logout' => 'Odhlásit',
- 'database' => 'databáze',
- 'Use' => 'Vybrat',
- 'No tables.' => 'Žádné tabulky.',
- 'select' => 'vypsat',
- 'Create new table' => 'VytvoÅit novou tabulku',
- 'Item has been deleted.' => 'Položka byla smazána.',
- 'Item has been updated.' => 'Položka byla aktualizována.',
- 'Item has been inserted.' => 'Položka byla vložena.',
- 'Edit' => 'Upravit',
- 'Insert' => 'Vložit',
- 'Save and insert next' => 'Uložit a vložit dalÅ¡Ã',
- 'Delete' => 'Smazat',
- 'Database' => 'Databáze',
- 'Routines' => 'Procedury a funkce',
- 'Indexes has been altered.' => 'Indexy byly zmÄnÄny.',
- 'Indexes' => 'Indexy',
- 'Alter indexes' => 'PozmÄnit indexy',
- 'Add next' => 'PÅidat dalÅ¡Ã',
- 'Language' => 'Jazyk',
- 'Select' => 'Vypsat',
- 'New item' => 'Nová položka',
- 'Search' => 'Vyhledat',
- 'Sort' => 'SetÅÃdit',
- 'ASC' => 'vzestupnÄ',
- 'DESC' => 'sestupnÄ',
- 'Limit' => 'Limit',
- 'No rows.' => 'Žádné Åádky.',
- 'Action' => 'Akce',
- 'edit' => 'upravit',
- 'Page' => 'Stránka',
- 'Query executed OK, %d row(s) affected.' => array('PÅÃkaz probÄhl v poÅádku, byl zmÄnÄn %d záznam.', 'PÅÃkaz probÄhl v poÅádku, byly zmÄnÄny %d záznamy.', 'PÅÃkaz probÄhl v poÅádku, bylo zmÄnÄno %d záznamů.'),
- 'Error in query' => 'Chyba v dotazu',
- 'Execute' => 'Provést',
- 'Table' => 'Tabulka',
- 'Foreign keys' => 'Cizà klÃÄe',
- 'Triggers' => 'Triggery',
- 'View' => 'Pohled',
- 'Unable to select the table' => 'NepodaÅilo se vypsat tabulku',
- 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formuláŠznovu.',
- 'Comment' => 'KomentáÅ',
- 'Default values has been set.' => 'Výchozà hodnoty byly nastaveny.',
- 'Default values' => 'Výchozà hodnoty',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Zobrazit komentáÅe sloupců',
- '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtů'),
- 'No commands to execute.' => 'Žádné pÅÃkazy k vykonánÃ.',
- 'Unable to upload a file.' => 'NepodaÅilo se nahrát soubor.',
- 'File upload' => 'Nahránà souboru',
- 'File uploads are disabled.' => 'Nahrávánà souborů nenà povoleno.',
- 'Routine has been called, %d row(s) affected.' => array('Procedura byla zavolána, byl zmÄnÄn %d záznam.', 'Procedura byla zavolána, byly zmÄnÄny %d záznamy.', 'Procedura byla zavolána, bylo zmÄnÄno %d záznamů.'),
- 'Call' => 'Zavolat',
- 'No MySQL extension' => 'Žádná MySQL extenze',
- 'None of supported PHP extensions (%s) are available.' => 'Nenà dostupná žádná z podporovaných PHP extenzà (%s).',
- 'Sessions must be enabled.' => 'Session promÄnné musà být povolené.',
- 'Session expired, please login again.' => 'Session vyprÅ¡ela, pÅihlaÅ¡te se prosÃm znovu.',
- 'Text length' => 'Délka textů',
- 'Foreign key has been dropped.' => 'Cizà klÃÄ byl odstranÄn.',
- 'Foreign key has been altered.' => 'Cizà klÃÄ byl zmÄnÄn.',
- 'Foreign key has been created.' => 'Cizà klÃÄ byl vytvoÅen.',
- 'Foreign key' => 'Cizà klÃÄ',
- 'Target table' => 'CÃlová tabulka',
- 'Change' => 'ZmÄnit',
- 'Source' => 'Zdroj',
- 'Target' => 'CÃl',
- 'Add column' => 'PÅidat sloupec',
- 'Alter' => 'ZmÄnit',
- 'Add foreign key' => 'PÅidat cizà klÃÄ',
- 'ON DELETE' => 'PÅi smazánÃ',
- 'ON UPDATE' => 'PÅi zmÄnÄ',
- 'Index Type' => 'Typ indexu',
- 'Column (length)' => 'Sloupec (délka)',
- 'View has been dropped.' => 'Pohled byl odstranÄn.',
- 'View has been altered.' => 'Pohled byl zmÄnÄn.',
- 'View has been created.' => 'Pohled byl vytvoÅen.',
- 'Alter view' => 'PozmÄnit pohled',
- 'Create view' => 'VytvoÅit pohled',
- 'Name' => 'Název',
- 'Process list' => 'Seznam procesů',
- '%d process(es) has been killed.' => array('Byl ukonÄen %d proces.', 'Byly ukonÄeny %d procesy.', 'Bylo ukonÄeno %d procesů.'),
- 'Kill' => 'UkonÄit',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Název parametru',
- 'Database schema' => 'Schéma databáze',
- 'Create procedure' => 'VytvoÅit proceduru',
- 'Create function' => 'VytvoÅit funkci',
- 'Routine has been dropped.' => 'Procedura byla odstranÄna.',
- 'Routine has been altered.' => 'Procedura byla zmÄnÄna.',
- 'Routine has been created.' => 'Procedura byla vytvoÅena.',
- 'Alter function' => 'ZmÄnit funkci',
- 'Alter procedure' => 'ZmÄnit proceduru',
- 'Return type' => 'Návratový typ',
- 'Add trigger' => 'PÅidat trigger',
- 'Trigger has been dropped.' => 'Trigger byl odstranÄn.',
- 'Trigger has been altered.' => 'Trigger byl zmÄnÄn.',
- 'Trigger has been created.' => 'Trigger byl vytvoÅen.',
- 'Alter trigger' => 'ZmÄnit trigger',
- 'Create trigger' => 'VytvoÅit trigger',
- 'Time' => 'Äas',
- 'Event' => 'Událost',
- 'MySQL version: %s through PHP extension %s' => 'Verze MySQL: %s pÅes PHP extenzi %s',
- '%d row(s)' => array('%d Åádek', '%d Åádky', '%d Åádků'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'PÅi zmÄnÄ aktuálnà Äas',
- 'Remove' => 'Odebrat',
- 'Are you sure?' => 'Opravdu?',
- 'Privileges' => 'OprávnÄnÃ',
- 'Create user' => 'VytvoÅit uživatele',
- 'User has been dropped.' => 'Uživatel byl odstranÄn.',
- 'User has been altered.' => 'Uživatel byl zmÄnÄn.',
- 'User has been created.' => 'Uživatel byl vytvoÅen.',
- 'Hashed' => 'Zahašované',
- 'Column' => 'Sloupec',
- 'Routine' => 'Procedura',
- 'Grant' => 'Povolit',
- 'Revoke' => 'Zakázat',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'PÅÃliÅ¡ velká POST data. ZmenÅ¡ete data nebo zvyÅ¡te hodnotu konfiguraÄnà direktivy "post_max_size".',
- 'Logged as: %s' => 'PÅihlášen jako: %s',
- 'Move up' => 'PÅesunout nahoru',
- 'Move down' => 'PÅesunout dolů',
- 'Functions' => 'Funkce',
- 'Aggregation' => 'Agregace',
- 'Export' => 'Export',
- 'Output' => 'Výstup',
- 'open' => 'otevÅÃt',
- 'save' => 'uložit',
- 'Format' => 'Formát',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Tables' => 'Tabulky',
- 'Data' => 'Data',
- 'Event has been dropped.' => 'Událost byla odstranÄna.',
- 'Event has been altered.' => 'Událost byla zmÄnÄna.',
- 'Event has been created.' => 'Událost byla vytvoÅena.',
- 'Alter event' => 'PozmÄnit událost',
- 'Create event' => 'VytvoÅit událost',
- 'At given time' => 'V daný Äas',
- 'Every' => 'Každých',
- 'Events' => 'Události',
- 'Schedule' => 'Plán',
- 'Start' => 'ZaÄátek',
- 'End' => 'Konec',
- 'Status' => 'Stav',
- 'On completion preserve' => 'Po dokonÄenà zachovat',
- 'Tables and views' => 'Tabulky a pohledy',
- 'Data Length' => 'Velikost dat',
- 'Index Length' => 'Velikost indexů',
- 'Data Free' => 'Volné mÃsto',
- 'Collation' => 'PorovnávánÃ',
- 'Analyze' => 'Analyzovat',
- 'Optimize' => 'Optimalizovat',
- 'Check' => 'Zkontrolovat',
- 'Repair' => 'Opravit',
- 'Truncate' => 'Promazat',
- 'Tables have been truncated.' => 'Tabulky byly promazány.',
- 'Rows' => 'Åádků',
- ',' => ' ',
- 'Tables have been moved.' => 'Tabulky byly pÅesunuty',
- 'Move to other database' => 'PÅesunout do jiné databáze',
- 'Move' => 'PÅesunout',
- 'Engine' => 'ÃložiÅ¡tÄ',
- 'Save and continue edit' => 'Uložit a pokraÄovat v editaci',
- 'clone' => 'klonovat',
- 'original' => 'původnÃ',
- '%d item(s) have been affected.' => array('Byl ovlivnÄn %d záznam.', 'Byly ovlivnÄny %d záznamy.', 'Bylo ovlivnÄno %d záznamů.'),
- 'whole result' => 'celý výsledek',
- 'Tables have been dropped.' => 'Tabulky byly odstranÄny.',
- 'Clone' => 'Klonovat',
- 'Partition by' => 'RozdÄlit podle',
- 'Partitions' => 'OddÃly',
- 'Partition name' => 'Název oddÃlu',
- 'Values' => 'Hodnoty',
- '%d row(s) has been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'),
- 'CSV Import' => 'Import CSV',
- 'Import' => 'Import',
- 'Table structure' => 'Struktura tabulky',
- 'Select table' => 'Vypsat tabulku',
- 'Stop on error' => 'Zastavit pÅi chybÄ',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Byl pÅekroÄen maximálnà povolený poÄet polÃ. ZvyÅ¡te prosÃm %s a %s.',
- '(anywhere)' => '(kdekoliv)',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/de.inc.php b/lang/de.inc.php
deleted file mode 100644
index 3a724772..00000000
--- a/lang/de.inc.php
+++ /dev/null
@@ -1,217 +0,0 @@
- 'Login',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'Abmeldung erfolgreich.',
- 'Invalid credentials.' => 'Ungültige Anmelde-Informationen.',
- 'Server' => 'Server',
- 'Username' => 'Benutzer',
- 'Password' => 'Passwort',
- 'Select database' => 'Datenbank auswählen',
- 'Invalid database.' => 'Datenbank ungültig.',
- 'Create new database' => 'Neue Datenbank',
- 'Table has been dropped.' => 'Tabelle entfernt.',
- 'Table has been altered.' => 'Tabelle geändert.',
- 'Table has been created.' => 'Tabelle erstellt.',
- 'Alter table' => 'Tabelle ändern',
- 'Create table' => 'Neue Tabelle erstellen',
- 'Table name' => 'Name der Tabelle',
- 'engine' => 'Motor',
- 'collation' => 'Kollation',
- 'Column name' => 'Spaltenname',
- 'Type' => 'Typ',
- 'Length' => 'Länge',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto-Inkrement',
- 'Options' => 'Optionen',
- 'Save' => 'Speichern',
- 'Drop' => 'Entfernen',
- 'Database has been dropped.' => 'Datenbank entfernt.',
- 'Database has been created.' => 'Datenbank erstellt.',
- 'Database has been renamed.' => 'Datenbank umbenannt.',
- 'Database has been altered.' => 'Datenbank geändert.',
- 'Alter database' => 'Datenbank ändern',
- 'Create database' => 'Neue Datenbank',
- 'SQL command' => 'SQL-Query',
- 'Dump' => 'Export',
- 'Logout' => 'Abmelden',
- 'database' => 'Datenbank',
- 'Use' => 'Benutzung',
- 'No tables.' => 'Keine Tabellen.',
- 'select' => 'zeigen',
- 'Create new table' => 'Neue Tabelle',
- 'Item has been deleted.' => 'Datensatz gelöscht.',
- 'Item has been updated.' => 'Datensatz geändert.',
- 'Item has been inserted.' => 'Datensatz hinzugefügt.',
- 'Edit' => 'Ãndern',
- 'Insert' => 'Hinzufügen',
- 'Save and insert next' => 'Speichern und nächsten hinzufügen',
- 'Delete' => 'Entfernen',
- 'Database' => 'Datenbank',
- 'Routines' => 'Prozeduren',
- 'Indexes has been altered.' => 'Indizes geändert.',
- 'Indexes' => 'Indizes',
- 'Alter indexes' => 'Indizes ändern',
- 'Add next' => 'Hinzufügen',
- 'Language' => 'Sprache',
- 'Select' => 'Daten zeigen von',
- 'New item' => 'Neuer Datensatz',
- 'Search' => 'Suchen',
- 'Sort' => 'Ordnen',
- 'DESC' => 'absteigend',
- 'Limit' => 'Begrenzung',
- 'No rows.' => 'Keine Daten.',
- 'Action' => 'Aktion',
- 'edit' => 'ändern',
- 'Page' => 'Seite',
- 'Query executed OK, %d row(s) affected.' => array('Abfrage ausgeführt, %d Datensatz betroffen.', 'Abfrage ausgeführt, %d Datensätze betroffen.'),
- 'Error in query' => 'Fehler in der SQL-Abfrage',
- 'Execute' => 'Ausführen',
- 'Table' => 'Tabelle',
- 'Foreign keys' => 'Fremdschlüssel',
- 'Triggers' => 'Trigger',
- 'View' => 'View',
- 'Unable to select the table' => 'Tabelle kann nicht ausgewählt werden',
- 'Invalid CSRF token. Send the form again.' => 'CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.',
- 'Comment' => 'Kommentar',
- 'Default values has been set.' => 'Standard Vorgabewerte sind erstellt worden.',
- 'Default values' => 'Vorgabewerte festlegen',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Spaltenkomentare zeigen',
- '%d byte(s)' => array('%d Byte', '%d Bytes'),
- 'No commands to execute.' => 'Kein Kommando vorhanden.',
- 'Unable to upload a file.' => 'Unmöglich Dateien hochzuladen.',
- 'File upload' => 'Datei importieren',
- 'File uploads are disabled.' => 'Importieren von Dateien abgeschaltet.',
- 'Routine has been called, %d row(s) affected.' => array('Kommando SQL ausgeführt, %d Datensatz betroffen.', 'Kommando SQL ausgeführt, %d Datensätze betroffen.'),
- 'Call' => 'Aufrufen',
- 'No MySQL extension' => 'Keine MySQL-Erweiterungen installiert',
- 'None of supported PHP extensions (%s) are available.' => 'Keine der unterstützten PHP-Erweiterungen (%s) ist vorhanden.',
- 'Sessions must be enabled.' => 'Sitzungen müssen aktiviert sein.',
- 'Session expired, please login again.' => 'Sitzungsdauer abgelaufen, bitte erneut anmelden.',
- 'Text length' => 'Textlänge',
- 'Foreign key has been dropped.' => 'Fremdschlüssel entfernt.',
- 'Foreign key has been altered.' => 'Fremdschlüssel geändert.',
- 'Foreign key has been created.' => 'Fremdschlüssel erstellt.',
- 'Foreign key' => 'Fremdschlüssel',
- 'Target table' => 'Zieltabelle',
- 'Change' => 'Ãndern',
- 'Source' => 'Ursprung',
- 'Target' => 'Ziel',
- 'Add column' => 'Spalte hinzufügen',
- 'Alter' => 'Ãndern',
- 'Add foreign key' => 'Fremdschlüssel hinzufügen',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'Index-Typ',
- 'Column (length)' => 'Spalte (Länge)',
- 'View has been dropped.' => 'View entfernt.',
- 'View has been altered.' => 'View geändert.',
- 'View has been created.' => 'View erstellt.',
- 'Alter view' => 'View ändern',
- 'Create view' => 'Neue View erstellen',
- 'Name' => 'Name',
- 'Process list' => 'Prozessliste',
- '%d process(es) has been killed.' => array('%d Prozess gestoppt.', '%d Prozesse gestoppt.'),
- 'Kill' => 'Anhalten',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Name des Parameters',
- 'Database schema' => 'Datenbankschema',
- 'Create procedure' => 'Neue Prozedur',
- 'Create function' => 'Neue Funktion',
- 'Routine has been dropped.' => 'Prozedur entfernt.',
- 'Routine has been altered.' => 'Prozedur geändert.',
- 'Routine has been created.' => 'Prozedur erstellt.',
- 'Alter function' => 'Funktion ändern',
- 'Alter procedure' => 'Prozedur ändern',
- 'Return type' => 'Typ des Rückgabewertes',
- 'Add trigger' => 'Trigger hinzufügen',
- 'Trigger has been dropped.' => 'Trigger entfernt.',
- 'Trigger has been altered.' => 'Trigger geändert.',
- 'Trigger has been created.' => 'Trigger erstellt.',
- 'Alter trigger' => 'Trigger ändern',
- 'Create trigger' => 'Trigger hinzufügen',
- 'Time' => 'Zeitpunkt',
- 'Event' => 'Ereignis',
- 'MySQL version: %s through PHP extension %s' => 'Version MySQL: %s, mit PHP-Erweiterung %s',
- '%d row(s)' => array('%d Datensatz', '%d Datensätze'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
- 'Remove' => 'Entfernen',
- 'Are you sure?' => 'Sind Sie sicher ?',
- 'Privileges' => 'Rechte',
- 'Create user' => 'Neuer Benutzer',
- 'User has been dropped.' => 'Benutzer entfernt.',
- 'User has been altered.' => 'Benutzer geändert.',
- 'User has been created.' => 'Benutzer erstellt.',
- 'Hashed' => 'Gehashed',
- 'Column' => 'Spalte',
- 'Routine' => 'Routine',
- 'Grant' => 'Erlauben',
- 'Revoke' => 'Verbieten',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST data zu gross. Reduzieren Sie die Grösse oder vergrössern Sie den Wert "post_max_size" in der Konfiguration.',
- 'Logged as: %s' => 'Angemeldet als: %s',
- 'Move up' => 'Nach oben',
- 'Move down' => 'Nach unten',
- 'Functions' => 'Funktionen',
- 'Aggregation' => 'Aggregationen',
- 'Export' => 'Exportieren',
- 'Output' => 'Ergebnis',
- 'open' => 'zeigen',
- 'save' => 'Datei',
- 'Format' => 'Format',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Tables' => 'Tabellen',
- 'Data' => 'Daten',
- 'Event has been dropped.' => 'Ereignis entfernt.',
- 'Event has been altered.' => 'Ereignis geändert.',
- 'Event has been created.' => 'Ereignis erstellt.',
- 'Alter event' => 'Ereignis ändern',
- 'Create event' => 'Ereignis erstellen',
- 'At given time' => 'Zur angegebenen Zeit',
- 'Every' => 'Jede',
- 'Events' => 'Ereignisse',
- 'Schedule' => 'Zeitplan',
- 'Start' => 'Start',
- 'End' => 'Ende',
- 'Status' => 'Status',
- 'On completion preserve' => 'Nach der Ausführung erhalten',
- 'Tables and views' => 'Tabellen und Views',
- 'Data Length' => 'Datengrösse',
- 'Index Length' => 'Indexgrösse',
- 'Data Free' => 'Freier Bereich',
- 'Collation' => 'Collation',
- 'Analyze' => 'Analysieren',
- 'Optimize' => 'Optimisieren',
- 'Check' => 'Prüfen',
- 'Repair' => 'Reparieren',
- 'Truncate' => 'Entleeren (truncate)',
- 'Tables have been truncated.' => 'Tabellen sind entleert worden (truncate).',
- 'Rows' => 'Datensätze',
- ',' => ' ',
- 'Tables have been moved.' => 'Tabellen verschoben.',
- 'Move to other database' => 'In andere Datenbank verschieben',
- 'Move' => 'Verschieben',
- 'Engine' => 'Motor',
- 'Save and continue edit' => 'Speichern und weiter bearbeiten',
- 'clone' => 'klonen',
- 'original' => 'original',
- 'Tables have been dropped.' => 'Tabellen wurden entfernt (drop).',
- '%d item(s) have been affected.' => array('%d Artikel betroffen.', '%d Artikel betroffen.'),
- 'whole result' => 'gesamtes Resultat',
- 'Clone' => 'Klonen',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Die maximal erlaubte Anzahl der Felder ist überschritten. Bitte %s und %s erhöhen.',
- 'Partition by' => 'Partitionieren um',
- 'Partitions' => 'Partitionen',
- 'Partition name' => 'Name der Partition',
- 'Values' => 'Werte',
- '%d row(s) has been imported.' => array('%d Datensatz importiert.', '%d Datensätze wurden importiert.'),
- 'Table structure' => 'Tabellensruktur',
- '(anywhere)' => '(beliebig)',
- 'CSV Import' => 'Importiere CSV',
- 'Import' => 'Importieren',
- 'Stop on error' => 'Bei Fehler anhaltan',
- 'Select table' => 'Tabelle auswählen',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/en.inc.php b/lang/en.inc.php
deleted file mode 100644
index 414c91a9..00000000
--- a/lang/en.inc.php
+++ /dev/null
@@ -1,10 +0,0 @@
- array('Query executed OK, %d row affected.', 'Query executed OK, %d rows affected.'),
- '%d byte(s)' => array('%d byte', '%d bytes'),
- 'Routine has been called, %d row(s) affected.' => array('Routine has been called, %d row affected.', 'Routine has been called, %d rows affected.'),
- '%d process(es) has been killed.' => array('%d process has been killed.', '%d processes have been killed.'),
- '%d row(s)' => array('%d row', '%d rows'),
- '%d item(s) have been affected.' => array('%d item have been affected.', '%d items have been affected.'),
- '%d row(s) has been imported.' => array('%d row has been imported.', '%d rows has been imported.'),
-);
diff --git a/lang/es.inc.php b/lang/es.inc.php
deleted file mode 100644
index 9b422c56..00000000
--- a/lang/es.inc.php
+++ /dev/null
@@ -1,217 +0,0 @@
- 'Login',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'Salida exitosa.',
- 'Invalid credentials.' => 'Autenticación fallada.',
- 'Server' => 'Servidor',
- 'Username' => 'Usuario',
- 'Password' => 'Contraseña',
- 'Select database' => 'Seleccionar Base de datos',
- 'Invalid database.' => 'Base de datos inválida.',
- 'Create new database' => 'Nueva Base de datos',
- 'Table has been dropped.' => 'Tabla eliminada.',
- 'Table has been altered.' => 'Tabla modificada.',
- 'Table has been created.' => 'Tabla creada.',
- 'Alter table' => 'Modificar tabla',
- 'Create table' => 'Crear tabla',
- 'Table name' => 'Nombre de tabla',
- 'engine' => 'motor',
- 'collation' => 'colación',
- 'Column name' => 'Nombre de columna',
- 'Type' => 'Tipo',
- 'Length' => 'Longitud',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto increment',
- 'Options' => 'Opciones',
- 'Save' => 'Guardar',
- 'Drop' => 'Eliminar',
- 'Database has been dropped.' => 'Base de datos eliminada.',
- 'Database has been created.' => 'Base de datos creada.',
- 'Database has been renamed.' => 'Base de datos renombrada.',
- 'Database has been altered.' => 'Base de datos modificada.',
- 'Alter database' => 'Modificar Base de datos',
- 'Create database' => 'Crear Base de datos',
- 'SQL command' => 'Comando SQL',
- 'Dump' => 'Export',
- 'Logout' => 'Logout',
- 'database' => 'base de datos',
- 'Use' => 'Uso',
- 'No tables.' => 'No existen tablas.',
- 'select' => 'registros',
- 'Create new table' => 'Nueva tabla',
- 'Item has been deleted.' => 'Registro eliminado.',
- 'Item has been updated.' => 'Registro modificado.',
- 'Item has been inserted.' => 'Registro insertado.',
- 'Edit' => 'Modificar',
- 'Insert' => 'Agregar',
- 'Save and insert next' => 'Guardar e insertar otro',
- 'Delete' => 'Eliminar',
- 'Database' => 'Base de datos',
- 'Routines' => 'Procedimientos',
- 'Indexes has been altered.' => 'Indices modificados.',
- 'Indexes' => 'Indices',
- 'Alter indexes' => 'Modificar indices',
- 'Add next' => 'Agregar',
- 'Language' => 'Idioma',
- 'Select' => 'Mostrar Registros',
- 'New item' => 'Nuevo Registro',
- 'Search' => 'Buscar',
- 'Sort' => 'Ordenar',
- 'DESC' => 'descendiente',
- 'Limit' => 'Limit',
- 'No rows.' => 'No hay filas.',
- 'Action' => 'Acción',
- 'edit' => 'modificar',
- 'Page' => 'Página',
- 'Query executed OK, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
- 'Error in query' => 'Error en consulta',
- 'Execute' => 'Ejecutar',
- 'Table' => 'Tabla',
- 'Foreign keys' => 'Claves foráneas',
- 'Triggers' => 'Triggers',
- 'View' => 'Vistas',
- 'Unable to select the table' => 'No posible seleccionar la tabla',
- 'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Vuelva a enviar los datos del formulario.',
- 'Comment' => 'Comentario',
- 'Default values has been set.' => 'Valores por omisión establecidos.',
- 'Default values' => 'Establecer valores por omisión',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Mostrar comentario de columnas',
- '%d byte(s)' => array('%d byte', '%d bytes'),
- 'No commands to execute.' => 'No hay comando a ejecutar.',
- 'Unable to upload a file.' => 'No posible subir archivos.',
- 'File upload' => 'Importar archivo',
- 'File uploads are disabled.' => 'Importación de archivos deshablilitado.',
- 'Routine has been called, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
- 'Call' => 'Llamar',
- 'No MySQL extension' => 'No hay extension MySQL',
- 'None of supported PHP extensions (%s) are available.' => 'Ninguna de las extensiones PHP soportadas (%s) está disponible.',
- 'Sessions must be enabled.' => 'Deben estar habilitadas las sesiones.',
- 'Session expired, please login again.' => 'Sesion expirada, favor loguéese de nuevo.',
- 'Text length' => 'Longitud de texto',
- 'Foreign key has been dropped.' => 'Clave foránea eliminada.',
- 'Foreign key has been altered.' => 'Clave foránea modificada.',
- 'Foreign key has been created.' => 'Clave foránea creada.',
- 'Foreign key' => 'Clave foránea',
- 'Target table' => 'Tabla destino',
- 'Change' => 'Modificar',
- 'Source' => 'Origen',
- 'Target' => 'Destino',
- 'Add column' => 'Agregar columna',
- 'Alter' => 'Modificar',
- 'Add foreign key' => 'Agregar clave foránea',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'Tipo de Ãndice',
- 'Column (length)' => 'Columna (longitud)',
- 'View has been dropped.' => 'Vista eliminada.',
- 'View has been altered.' => 'Vista modificada.',
- 'View has been created.' => 'Vista creada.',
- 'Alter view' => 'Modificar vista',
- 'Create view' => 'Cear vista',
- 'Name' => 'Nombre',
- 'Process list' => 'Lista de procesos',
- '%d process(es) has been killed.' => array('%d proceso detenido.', '%d procesos detenidos.'),
- 'Kill' => 'Detener',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Nombre de Parametro',
- 'Database schema' => 'Esquema de base de datos',
- 'Create procedure' => 'Crear procedimiento',
- 'Create function' => 'Crear función',
- 'Routine has been dropped.' => 'Procedimiento eliminado.',
- 'Routine has been altered.' => 'Procedimiento modificado.',
- 'Routine has been created.' => 'Procedimiento creado.',
- 'Alter function' => 'Modificar Función',
- 'Alter procedure' => 'Modificar procedimiento',
- 'Return type' => 'Tipo de valor retornado',
- 'Add trigger' => 'Agregar trigger',
- 'Trigger has been dropped.' => 'Trigger eliminado.',
- 'Trigger has been altered.' => 'Trigger modificado.',
- 'Trigger has been created.' => 'Trigger creado.',
- 'Alter trigger' => 'Modificar Trigger',
- 'Create trigger' => 'Agregar Trigger',
- 'Time' => 'Tiempo',
- 'Event' => 'Evento',
- 'MySQL version: %s through PHP extension %s' => 'Versión MySQL: %s a través de extensión PHP %s',
- '%d row(s)' => array('%d fila', '%d filas'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
- 'Remove' => 'Eliminar',
- 'Are you sure?' => 'Está seguro?',
- 'Privileges' => 'Privilegios',
- 'Create user' => 'Crear Usuario',
- 'User has been dropped.' => 'Usuario eliminado.',
- 'User has been altered.' => 'Usuario modificado.',
- 'User has been created.' => 'Usuario creado.',
- 'Hashed' => 'Hash',
- 'Column' => 'Columna',
- 'Routine' => 'Rutina',
- 'Grant' => 'Conceder',
- 'Revoke' => 'Impedir',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST data demasiado grande. Reduzca el tamaño o aumente la directiva de configuración "post_max_size".',
- 'Logged as: %s' => 'Logeado como: %s',
- 'Move up' => 'Mover arriba',
- 'Move down' => 'Mover abajo',
- 'Functions' => 'Funciones',
- 'Aggregation' => 'Agregaciones',
- 'Export' => 'Exportar',
- 'Output' => 'Salida',
- 'open' => 'mostrar',
- 'save' => 'archivo',
- 'Format' => 'Formato',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Tables' => 'Tablas',
- 'Data' => 'Datos',
- 'Event has been dropped.' => 'Evento eliminado.',
- 'Event has been altered.' => 'Evento modificado.',
- 'Event has been created.' => 'Evento creado.',
- 'Alter event' => 'Modificar Evento',
- 'Create event' => 'Crear Evento',
- 'At given time' => 'A hora determinada',
- 'Every' => 'Cada',
- 'Events' => 'Eventos',
- 'Schedule' => 'Agendamiento',
- 'Start' => 'Inicio',
- 'End' => 'Fin',
- 'Status' => 'Estado',
- 'On completion preserve' => 'Al completar preservar',
- 'Tables and views' => 'Tablas y vistas',
- 'Data Length' => 'Longitud de datos',
- 'Index Length' => 'Longitud de Ãndice',
- 'Data Free' => 'Espacio libre',
- 'Collation' => 'Collation',
- 'Analyze' => 'Analizar',
- 'Optimize' => 'Optimizar',
- 'Check' => 'Comprobar',
- 'Repair' => 'Reparar',
- 'Truncate' => 'Vaciar',
- 'Tables have been truncated.' => 'Tablas vaciadas (truncate).',
- 'Rows' => 'Filas',
- ',' => ' ',
- 'Tables have been moved.' => 'Se movieron las tablas.',
- 'Move to other database' => 'mover a otra base de datos',
- 'Move' => 'Mover',
- 'Engine' => 'Motor',
- 'Save and continue edit' => 'Guardar y continuar editando',
- 'clone' => 'clonar',
- 'original' => 'original',
- 'Tables have been dropped.' => 'Las tablas fueron eliminados.',
- '%d item(s) have been affected.' => array('%d item afectado.', '%d itemes afectados.'),
- 'whole result' => 'resultado completo',
- 'Clone' => 'Clonar',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Cantida máxima de campos permitidos excedidos. Favor aumente %s y %s.',
- 'Partition by' => 'Particionar por',
- 'Partitions' => 'Particiones',
- 'Partition name' => 'Nombre de Partición',
- 'Values' => 'Valores',
- '%d row(s) has been imported.' => array('%d fila importada.', '%d filas importada.'),
- 'Table structure' => 'Estructura de la Tabla',
- '(anywhere)' => '(cualquier lugar)',
- 'CSV Import' => 'Importar CSV',
- 'Import' => 'Importar',
- 'Stop on error' => 'Parar en caso de error',
- 'Select table' => 'Seleccionar tabla',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/et.inc.php b/lang/et.inc.php
deleted file mode 100644
index 23173c8d..00000000
--- a/lang/et.inc.php
+++ /dev/null
@@ -1,217 +0,0 @@
- 'Logi sisse',
- 'Adminer' => 'Andmebaasi haldaja',
- 'Logout successful.' => 'Väljalogimine õnnestus.',
- 'Invalid credentials.' => 'Ebasobivad andmed.',
- 'Server' => 'Server',
- 'Username' => 'Kasutajanimi',
- 'Password' => 'Parool',
- 'Select database' => 'Vali andmebaas',
- 'Invalid database.' => 'Sobimatu andmebaas.',
- 'Create new database' => 'Loo uus andmebaas',
- 'Table has been dropped.' => 'Tabel on edukalt kustutatud.',
- 'Table has been altered.' => 'Tabeli andmed on edukalt muudetud.',
- 'Table has been created.' => 'Tabel on edukalt loodud.',
- 'Alter table' => 'Muuda tabeli struktuuri',
- 'Create table' => 'Loo uus tabel',
- 'Table name' => 'Tabeli nimi',
- 'engine' => 'Mootor',
- 'collation' => 'Tähetabel',
- 'Column name' => 'Veeru nimi',
- 'Type' => 'Tüüp',
- 'Length' => 'Pikkus',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Automaatselt suurenev',
- 'Options' => 'Valikud',
- 'Save' => 'Sisesta',
- 'Drop' => 'Kustuta',
- 'Database has been dropped.' => 'Andmebaas on edukalt kustutatud.',
- 'Database has been created.' => 'Andmebaas on edukalt loodud.',
- 'Database has been renamed.' => 'Andmebaas on edukalt ümber nimetatud.',
- 'Database has been altered.' => 'Andmebaasi struktuuri uuendamine õnnestus.',
- 'Alter database' => 'Muuda andmebaasi',
- 'Create database' => 'Loo uus andmebaas',
- 'SQL command' => 'SQL-Päring',
- 'Dump' => 'Ekspordi',
- 'Logout' => 'Logi välja',
- 'database' => 'Andmebaas',
- 'Use' => 'Kasuta',
- 'No tables.' => 'Tabeleid ei leitud.',
- 'select' => 'kuva',
- 'Create new table' => 'Loo uus tabel',
- 'Item has been deleted.' => 'Kustutamine õnnestus.',
- 'Item has been updated.' => 'Uuendamine õnnestus.',
- 'Item has been inserted.' => 'Lisamine õnnestus.',
- 'Edit' => 'Muuda',
- 'Insert' => 'Sisesta',
- 'Save and insert next' => 'Sisesta ja lisa järgmine',
- 'Delete' => 'Kustuta',
- 'Database' => 'Andmebaas',
- 'Routines' => 'Protseduurid',
- 'Indexes has been altered.' => 'Indeksite andmed on edukalt uuendatud.',
- 'Indexes' => 'Indeksid',
- 'Alter indexes' => 'Muuda indekseid',
- 'Add next' => 'Lisa järgmine',
- 'Language' => 'Keel',
- 'Select' => 'Kuva',
- 'New item' => 'Lisa kirje',
- 'Search' => 'Otsi',
- 'Sort' => 'Sordi',
- 'DESC' => 'Kahanevalt',
- 'Limit' => 'Piira kirjete hulka',
- 'No rows.' => 'Sissekanded puuduvad.',
- 'Action' => 'Tegevus',
- 'edit' => 'muuda',
- 'Page' => 'Lehekülg',
- 'Query executed OK, %d row(s) affected.' => array('Päring õnnestus, mõjutatatud ridu: %d.', 'Päring õnnestus, mõjutatatud ridu: %d.'),
- 'Error in query' => 'SQL-päringus esines viga',
- 'Execute' => 'Käivita',
- 'Table' => 'Tabel',
- 'Foreign keys' => 'Võõrvõtmed (foreign key)',
- 'Triggers' => 'Päästikud (trigger)',
- 'View' => 'Vaata',
- 'Unable to select the table' => 'Tabeli valimine ebaõnnestus',
- 'Invalid CSRF token. Send the form again.' => 'Sobimatu CSRF, palun saadke vorm uuesti.',
- 'Comment' => 'Kommentaar',
- 'Default values has been set.' => 'Vaimimisi väärtused on edukalt määratud.',
- 'Default values' => 'Vaikimisi väärtused',
- 'BOOL' => 'Jah/Ei (BOOL)',
- 'Show column comments' => 'Kuva veeru kommentaarid',
- '%d byte(s)' => array('%d bait', '%d baiti'),
- 'No commands to execute.' => 'Käsk puudub.',
- 'Unable to upload a file.' => 'Faili üleslaadimine pole võimalik.',
- 'File upload' => 'Faili üleslaadimine',
- 'File uploads are disabled.' => 'Faili üleslaadimine on keelatud.',
- 'Routine has been called, %d row(s) affected.' => array('Protseduur täideti edukalt, mõjutatud ridu: %d.', 'Protseduur täideti edukalt, mõjutatud ridu: %d.'),
- 'Call' => 'Käivita',
- 'No MySQL extension' => 'Ei leitud MySQL laiendust',
- 'None of supported PHP extensions (%s) are available.' => 'Serveris pole ühtegi toetatud PHP laiendustest (%s).',
- 'Sessions must be enabled.' => 'Sessioonid peavad olema lubatud.',
- 'Session expired, please login again.' => 'Sessioon on aegunud, palun logige uuesti sisse.',
- 'Text length' => 'Teksti pikkus',
- 'Foreign key has been dropped.' => 'Võõrvõti on edukalt kustutatud.',
- 'Foreign key has been altered.' => 'Võõrvõtme andmed on edukalt muudetud.',
- 'Foreign key has been created.' => 'Võõrvõri on edukalt loodud.',
- 'Foreign key' => 'Võõrvõti',
- 'Target table' => 'Siht-tabel',
- 'Change' => 'Muuda',
- 'Source' => 'Allikas',
- 'Target' => 'Sihtkoht',
- 'Add column' => 'Lisa veerg',
- 'Alter' => 'Muuda',
- 'Add foreign key' => 'Lisa võõrvõti',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'Indeksi tüüp',
- 'Column (length)' => 'Veerg (pikkus)',
- 'View has been dropped.' => 'Vaade (VIEW) on edukalt kustutatud.',
- 'View has been altered.' => 'Vaade (VIEW) on edukalt muudetud.',
- 'View has been created.' => 'Vaade (VIEW) on edukalt loodud.',
- 'Alter view' => 'Muuda vaadet (VIEW)',
- 'Create view' => 'Loo uus vaade (VIEW)',
- 'Name' => 'Nimi',
- 'Process list' => 'Protsesside nimekiri',
- '%d process(es) has been killed.' => array('Protsess on edukalt peatatud (%d).', 'Valitud protsessid (%d) on edukalt peatatud.'),
- 'Kill' => 'Peata',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Parameetri nimi',
- 'Database schema' => 'Andmebaasi skeem',
- 'Create procedure' => 'Loo uus protseduur',
- 'Create function' => 'Loo uus funktsioon',
- 'Routine has been dropped.' => 'Protseduur on edukalt kustutatud.',
- 'Routine has been altered.' => 'Protseduuri andmed on edukalt muudetud.',
- 'Routine has been created.' => 'Protseduur on edukalt loodud.',
- 'Alter function' => 'Muuda funktsiooni',
- 'Alter procedure' => 'Muuda protseduuri',
- 'Return type' => 'Tagastustüüp',
- 'Add trigger' => 'Lisa päästik (TRIGGER)',
- 'Trigger has been dropped.' => 'Päästik on edukalt kustutatud.',
- 'Trigger has been altered.' => 'Päästiku andmed on edukalt uuendatud.',
- 'Trigger has been created.' => 'Uus päästik on edukalt loodud.',
- 'Alter trigger' => 'Muuda päästiku andmeid',
- 'Create trigger' => 'Loo uus päästik (TRIGGER)',
- 'Time' => 'Aeg',
- 'Event' => 'Sündmus',
- '%d row(s)' => array('%d rida', '%d rida'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
- 'Remove' => 'Eemalda',
- 'Are you sure?' => 'Kas oled kindel?',
- 'Privileges' => 'Ãigused',
- 'Create user' => 'Loo uus kasutaja',
- 'User has been dropped.' => 'Kasutaja on edukalt kustutatud.',
- 'User has been altered.' => 'Kasutaja andmed on edukalt muudetud.',
- 'User has been created.' => 'Kasutaja on edukalt lisatud.',
- 'Hashed' => 'Häshitud (Hashed)',
- 'Column' => 'Veerg',
- 'Routine' => 'Protseduur',
- 'Grant' => 'Anna',
- 'Revoke' => 'Eemalda',
- 'MySQL version: %s through PHP extension %s' => 'MySQL versioon: %s, kasutatud PHP moodul: %s',
- 'Logged as: %s' => 'Sisse logitud: %s',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST-andmete maht on liialt suur. Palun vähendage andmeid või suurendage "post_max_size" php-seadet.',
- 'Move up' => 'Liiguta ülespoole',
- 'Move down' => 'Liiguta allapoole',
- 'Export' => 'Ekspordi',
- 'Tables' => 'Tabelid',
- 'Data' => 'Andmed',
- 'Output' => 'Väljund',
- 'open' => 'näita brauseris',
- 'save' => 'salvesta failina',
- 'Format' => 'Formaat',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Functions' => 'Funktsioonid',
- 'Aggregation' => 'Liitmine',
- 'Event has been dropped.' => 'Sündmus on edukalt kustutatud.',
- 'Event has been altered.' => 'Sündmuse andmed on edukalt uuendatud.',
- 'Event has been created.' => 'Sündmus on edukalt loodud.',
- 'Alter event' => 'Muuda sündmuse andmeid',
- 'Create event' => 'Loo uus sündmus (EVENT)',
- 'Start' => 'Alusta',
- 'End' => 'Lõpeta',
- 'Every' => 'Iga',
- 'Status' => 'Staatus',
- 'On completion preserve' => 'Lõpetamisel jäta sündmus alles',
- 'Events' => 'Sündmused (EVENTS)',
- 'Schedule' => 'Ajakava',
- 'At given time' => 'Antud ajahetkel',
- 'Save and continue edit' => 'Salvesta ja jätka muutmist',
- 'original' => 'originaal',
- 'Tables have been truncated.' => 'Validud tabelid on edukalt tühjendatud.',
- 'Tables have been moved.' => 'Valitud tabelid on edukalt liigutatud.',
- 'Tables have been dropped.' => 'Valitud tabelid on edukalt kustutatud.',
- 'Tables and views' => 'Tabelid ja vaated',
- 'Engine' => 'Implementatsioon',
- 'Collation' => 'Tähetabel',
- 'Data Length' => 'Andmete pikkus',
- 'Index Length' => 'Indeksi pikkus',
- 'Data Free' => 'Vaba ruumi',
- 'Rows' => 'Ridu',
- ',' => ',',
- 'Analyze' => 'Analüüsi',
- 'Optimize' => 'Optimeeri',
- 'Check' => 'Kontrolli',
- 'Repair' => 'Paranda',
- 'Truncate' => 'Tühjenda',
- 'Move to other database' => 'Liiguta teise andmebaasi',
- 'Move' => 'Liiguta',
- '%d item(s) have been affected.' => array('Mõjutatud kirjeid: %d.', 'Mõjutatud kirjeid: %d.'),
- 'whole result' => 'Täielikud tulemused',
- 'clone' => 'Klooni',
- 'Clone' => 'Kloon',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Maksimaalne väljade arv ületatud. Palun suurendage %s ja %s.',
- 'Partition by' => 'Partitsiooni',
- 'Partitions' => 'Partitsioonid',
- 'Partition name' => 'Partitsiooni nimi',
- 'Values' => 'Väärtused',
- '%d row(s) has been imported.' => array('Imporditi %d rida', 'Imporditi %d rida'),
- 'Table structure' => 'Tabeli struktuur',
- '(anywhere)' => '(vahet pole)',
- 'CSV Import' => 'Impordi CSV',
- 'Import' => 'Impordi',
- 'Stop on error' => 'Peatuda vea esinemisel',
- 'Select table' => 'Vali tabel',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/fr.inc.php b/lang/fr.inc.php
deleted file mode 100644
index 49e49093..00000000
--- a/lang/fr.inc.php
+++ /dev/null
@@ -1,216 +0,0 @@
- 'Authentification',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'Aurevoir!',
- 'Invalid credentials.' => 'Authentification échoué',
- 'Server' => 'Serveur',
- 'Username' => 'Utilisateur',
- 'Password' => 'Mot de passe',
- 'Select database' => 'Selectionner la base de donnée',
- 'Invalid database.' => 'Base de donnée invalide',
- 'Create new database' => 'Créer une base de donnée',
- 'Table has been dropped.' => 'Table effacée',
- 'Table has been altered.' => 'Table modifiée',
- 'Table has been created.' => 'Table créée.',
- 'Alter table' => 'Modifier la table',
- 'Create table' => 'Créer une table',
- 'Table name' => 'Nom de la table',
- 'engine' => 'moteur',
- 'collation' => 'collation',
- 'Column name' => 'Nombre de colonne',
- 'Type' => 'Type',
- 'Length' => 'Longeur',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto increment',
- 'Options' => 'Options',
- 'Save' => 'Sauvegarder',
- 'Drop' => 'Effacer',
- 'Database has been dropped.' => 'Base de données effacée.',
- 'Database has been created.' => 'Base de données créée.',
- 'Database has been renamed.' => 'Base de données renommée.',
- 'Database has been altered.' => 'Base de données modifiée.',
- 'Alter database' => 'Modifier la base de données',
- 'Create database' => 'Créer une base de données',
- 'SQL command' => 'Requête SQL',
- 'Dump' => 'Exporter',
- 'Logout' => 'Déconnexion',
- 'database' => 'base de données',
- 'Use' => 'Utiliser',
- 'No tables.' => 'Aucunes tables.',
- 'select' => 'select',
- 'Create new table' => 'Créer une table',
- 'Item has been deleted.' => 'Ãlément supprimé.',
- 'Item has been updated.' => 'Ãlément modifié.',
- 'Item has been inserted.' => 'Ãlément inseré.',
- 'Edit' => 'Modifier',
- 'Insert' => 'Insérer',
- 'Save and insert next' => 'Sauvegarder et insérer le prochain',
- 'Delete' => 'Effacer',
- 'Database' => 'Base de données',
- 'Routines' => 'Routines',
- 'Indexes has been altered.' => 'Index modifiés.',
- 'Indexes' => 'Index',
- 'Alter indexes' => 'Modifier les index',
- 'Add next' => 'Ajouter le prochain',
- 'Language' => 'Langues',
- 'Select' => 'Select',
- 'New item' => 'Nouvel élément',
- 'Search' => 'Rechercher',
- 'Sort' => 'Ordonner',
- 'Limit' => 'Limit',
- 'No rows.' => 'Aucun résultat',
- 'Action' => 'Action',
- 'edit' => 'modifier',
- 'Page' => 'Page',
- 'Query executed OK, %d row(s) affected.' => array('Requête exécutée, %d ligne affecteé.', 'Requête exécutée, %d lignes affectées.'),
- 'Error in query' => 'Erreur dans la requête',
- 'Execute' => 'Exécuter',
- 'Table' => 'Table',
- 'Foreign keys' => 'Clé externe',
- 'Triggers' => 'Triggers',
- 'View' => 'Vue',
- 'Unable to select the table' => 'Impossible de sélectionner la table',
- 'Invalid CSRF token. Send the form again.' => 'Token CSRF invalide. Veuillez réenvoyer le formulaire.',
- 'Comment' => 'Commentaire',
- 'Default values has been set.' => 'Valeur par défaut établie .',
- 'Default values' => 'Valeurs par défaut',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Voir les commentaires sur les colonnes',
- '%d byte(s)' => array('%d byte', '%d bytes'),
- 'No commands to execute.' => 'Aucune commande à exécuter.',
- 'Unable to upload a file.' => 'Impossible d\'importer le fichier.',
- 'File upload' => 'Importer un fichier',
- 'File uploads are disabled.' => 'Import de fichier désactivé.',
- 'Routine has been called, %d row(s) affected.' => array('Routine exécutée, %d ligne modifiée.', 'Routine exécutée, %d lignes modifiées.'),
- 'Call' => 'Appeler',
- 'No MySQL extension' => 'Extension MySQL introuvable',
- 'None of supported PHP extensions (%s) are available.' => 'Aucune des extensions PHP supportées (%s) n\'est disponible.',
- 'Sessions must be enabled.' => 'Veuillez activer les sessions.',
- 'Session expired, please login again.' => 'Session expirée, veuillez vous enregistrer à nouveau.',
- 'Text length' => 'Longueur du texte',
- 'Foreign key has been dropped.' => 'Clé externe effacée.',
- 'Foreign key has been altered.' => 'Clé externe modifiée.',
- 'Foreign key has been created.' => 'Clé externe créée.',
- 'Foreign key' => 'Clé externe',
- 'Target table' => 'Table visée',
- 'Change' => 'Modifier',
- 'Source' => 'Source',
- 'Target' => 'Cible',
- 'Add column' => 'Ajouter une colonne',
- 'Alter' => 'Modifier',
- 'Add foreign key' => 'Ajouter une clé externe',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'Type d\'index',
- 'Column (length)' => 'Colonne (longueur)',
- 'View has been dropped.' => 'Vue effacée.',
- 'View has been altered.' => 'Vue modifiée.',
- 'View has been created.' => 'Vue créée.',
- 'Alter view' => 'Modifier une vue',
- 'Create view' => 'Créer une vue',
- 'Name' => 'Nom',
- 'Process list' => 'Liste de processus',
- '%d process(es) has been killed.' => array('%d processus arrêté.', '%d processus arrêtés.'),
- 'Kill' => 'Arrêter',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Nom du Paramêtre',
- 'Database schema' => 'Schéma de la base de données',
- 'Create procedure' => 'Créer une procédure',
- 'Create function' => 'Créer une fonction',
- 'Routine has been dropped.' => 'Procédure éliminée.',
- 'Routine has been altered.' => 'Procédure modifiée.',
- 'Routine has been created.' => 'Procédure créée.',
- 'Alter function' => 'Modifié la fonction',
- 'Alter procedure' => 'Modifié la procédure',
- 'Return type' => 'Type de retour',
- 'Add trigger' => 'Ajouter un trigger',
- 'Trigger has been dropped.' => 'Trigger éliminé.',
- 'Trigger has been altered.' => 'Trigger modifié.',
- 'Trigger has been created.' => 'Trigger créé.',
- 'Alter trigger' => 'Modifier un trigger',
- 'Create trigger' => 'Ajouter un trigger',
- 'Time' => 'Temps',
- 'Event' => 'Ãvènement',
- '%d row(s)' => array('%d ligne', '%d lignes'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
- 'Remove' => 'Effacer',
- 'Are you sure?' => 'Ãtes-vous certain?',
- 'Privileges' => 'Privilège',
- 'Create user' => 'Créer un utilisateur',
- 'User has been dropped.' => 'Utilisateur éffacé.',
- 'User has been altered.' => 'Utilisateur modifié.',
- 'User has been created.' => 'Utilisateur créé.',
- 'Hashed' => 'Haché',
- 'Column' => 'Colonne',
- 'Routine' => 'Routine',
- 'Grant' => 'Grant',
- 'Revoke' => 'Revoke',
- 'MySQL version: %s through PHP extension %s' => 'Version de MySQL: %s utilisant l\'extension %s',
- 'Logged as: %s' => 'Authentifié en tant que %s',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'Donnée POST trop grande . Réduire la taille des données ou modifier le "post_max_size" dans la configuration de PHP.',
- 'Move up' => 'Déplacer vers le haut',
- 'Move down' => 'Déplacer vers le bas',
- 'Export' => 'Exporter',
- 'Tables' => 'Tables',
- 'Data' => 'Donnée',
- 'Output' => 'Sortie',
- 'open' => 'ouvrir',
- 'save' => 'sauvegarder',
- 'Format' => 'Formatter',
- 'SQL' => 'SQL',
- 'CSV' => 'CVS',
- 'Functions' => 'Fonctions',
- 'Aggregation' => 'Agrégation',
- 'Event has been dropped.' => 'L\'évènement a été supprimé.',
- 'Event has been altered.' => 'L\'évènement a été modifié.',
- 'Event has been created.' => 'L\'évènement a été créé.',
- 'Alter event' => 'Modifier un évènement',
- 'Create event' => 'Créer un évènement',
- 'Start' => 'Démarrer',
- 'End' => 'Terminer',
- 'Every' => 'Chaque',
- 'Status' => 'Status',
- 'On completion preserve' => 'Conserver quand complété',
- 'Events' => 'Ãvènement',
- 'Schedule' => 'Horaire',
- 'At given time' => 'à un moment précis',
- 'Save and continue edit' => 'Sauvegarder et continuer l\'édition',
- 'original' => 'original',
- 'Tables have been truncated.' => 'Les tables ont été tronquées',
- 'Tables have been moved.' => 'Les tables ont été déplacées',
- 'Tables have been dropped.' => 'Les tables ont été effacées',
- 'Tables and views' => 'Tables et vues',
- 'Engine' => 'Moteur',
- 'Collation' => 'Collation',
- 'Data Length' => 'Longeur des données',
- 'Index Length' => 'Longeur de l\'index',
- 'Data Free' => 'Vide',
- 'Rows' => 'Rangés',
- ',' => ',',
- 'Analyze' => 'Analyser',
- 'Optimize' => 'Opitimiser',
- 'Check' => 'Vérifier',
- 'Repair' => 'Réparer',
- 'Truncate' => 'Tronquer',
- 'Move to other database' => 'Déplacer dans une autre base de données',
- 'Move' => 'Déplacer',
- '%d item(s) have been affected.' => array('%d élément ont été modifié.', '%d éléments ont été modifié.'),
- 'whole result' => 'résultat entier',
- 'clone' => 'cloner',
- 'Clone' => 'Cloner',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Le nombre de champs maximum est dépassé. Veuillez augmenter %s et %s',
- 'Partition by' => 'Partitionné par',
- 'Partitions' => 'Partitions',
- 'Partition name' => 'Nom de la partition',
- 'Values' => 'Valeurs',
- '%d row(s) has been imported.' => array('%d ligne a été importé','%d lignes ont été importé'),
- 'Table structure' => 'Structure de la table',
- '(anywhere)' => '(n\'importe où)',
- 'CSV Import' => 'Importation CVS',
- 'Import' => 'Importer',
- 'Stop on error' => 'Arrêt sur erreur',
- 'Select table' => 'Selectionner la table',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/it.inc.php b/lang/it.inc.php
deleted file mode 100644
index 31a0e548..00000000
--- a/lang/it.inc.php
+++ /dev/null
@@ -1,216 +0,0 @@
- 'Autenticazione',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'Uscita effettuata con successo.',
- 'Invalid credentials.' => 'Credenziali non valide.',
- 'Server' => 'Server',
- 'Username' => 'Utente',
- 'Password' => 'Password',
- 'Select database' => 'Seleziona database',
- 'Invalid database.' => 'Database non valido.',
- 'Create new database' => 'Crea nuovo database',
- 'Table has been dropped.' => 'Tabella eliminata.',
- 'Table has been altered.' => 'Tabella modificata.',
- 'Table has been created.' => 'Tabella creata.',
- 'Alter table' => 'Modifica tabella',
- 'Create table' => 'Crea tabella',
- 'Table name' => 'Nome tabella',
- 'engine' => 'motore',
- 'collation' => 'collazione',
- 'Column name' => 'Nome colonna',
- 'Type' => 'Tipo',
- 'Length' => 'Lunghezza',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto incremento',
- 'Options' => 'Opzioni',
- 'Save' => 'Salva',
- 'Drop' => 'Elimina',
- 'Database has been dropped.' => 'Database eliminato.',
- 'Database has been created.' => 'Database creato.',
- 'Database has been renamed.' => 'Database rinominato.',
- 'Database has been altered.' => 'Database modificato.',
- 'Alter database' => 'Modifica database',
- 'Create database' => 'Crea database',
- 'SQL command' => 'Comando SQL',
- 'Dump' => 'Dump',
- 'Logout' => 'Esci',
- 'database' => 'database',
- 'Use' => 'Usa',
- 'No tables.' => 'No tabelle.',
- 'select' => 'seleziona',
- 'Create new table' => 'Crea nuova tabella',
- 'Item has been deleted.' => 'Elemento eliminato.',
- 'Item has been updated.' => 'Elemento aggiornato.',
- 'Item has been inserted.' => 'Elemento inserito.',
- 'Edit' => 'Modifica',
- 'Insert' => 'Inserisci',
- 'Save and insert next' => 'Salva e inserisci un altro',
- 'Delete' => 'Elimina',
- 'Database' => 'Database',
- 'Routines' => 'Routine',
- 'Indexes has been altered.' => 'Indici modificati.',
- 'Indexes' => 'Indici',
- 'Alter indexes' => 'Modifica indici',
- 'Add next' => 'Aggiungi altro',
- 'Language' => 'Lingua',
- 'Select' => 'Seleziona',
- 'New item' => 'Nuovo elemento',
- 'Search' => 'Cerca',
- 'Sort' => 'Ordina',
- 'Limit' => 'Limite',
- 'No rows.' => 'Nessuna riga.',
- 'Action' => 'Azione',
- 'edit' => 'modifica',
- 'Page' => 'Pagina',
- 'Query executed OK, %d row(s) affected.' => array('Esecuzione della query OK, %d riga interessata.', 'Esecuzione della query OK, %d righe interessate.'),
- 'Error in query' => 'Errore nella query',
- 'Execute' => 'Esegui',
- 'Table' => 'Tabella',
- 'Foreign keys' => 'Chiavi esterne',
- 'Triggers' => 'Trigger',
- 'View' => 'Vedi',
- 'Unable to select the table' => 'Selezione della tabella non riuscita',
- 'Invalid CSRF token. Send the form again.' => 'Token CSRF non valido. Reinvia la richiesta.',
- 'Comment' => 'Commento',
- 'Default values has been set.' => 'Valore predefinito impostato.',
- 'Default values' => 'Valori predefiniti',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Mostra i commenti delle colonne',
- '%d byte(s)' => array('%d byte', '%d bytes'),
- 'No commands to execute.' => 'Nessun commando da eseguire.',
- 'Unable to upload a file.' => 'Caricamento del file non riuscito.',
- 'File upload' => 'Caricamento file',
- 'File uploads are disabled.' => 'Caricamento file disabilitato.',
- 'Routine has been called, %d row(s) affected.' => array('Routine chiamata, %d riga interessata.', 'Routine chiamata, %d righe interessate.'),
- 'Call' => 'Chiama',
- 'No MySQL extension' => 'Estensioni MySQL non presenti',
- 'None of supported PHP extensions (%s) are available.' => 'Nessuna delle estensioni PHP supportate (%s) disponibile.',
- 'Sessions must be enabled.' => 'Le sessioni devono essere abilitate.',
- 'Session expired, please login again.' => 'Sessione scaduta, autenticarsi di nuovo.',
- 'Text length' => 'Lunghezza testo',
- 'Foreign key has been dropped.' => 'Foreign key eliminata.',
- 'Foreign key has been altered.' => 'Foreign key modificata.',
- 'Foreign key has been created.' => 'Foreign key creata.',
- 'Foreign key' => 'Foreign key',
- 'Target table' => 'Tabella obiettivo',
- 'Change' => 'Cambia',
- 'Source' => 'Sorgente',
- 'Target' => 'Obiettivo',
- 'Add column' => 'Aggiungi colonna',
- 'Alter' => 'Modifica',
- 'Add foreign key' => 'Aggiungi foreign key',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'Tipo indice',
- 'Column (length)' => 'Colonna (lunghezza)',
- 'View has been dropped.' => 'Vista eliminata.',
- 'View has been altered.' => 'Vista modificata.',
- 'View has been created.' => 'Vista creata.',
- 'Alter view' => 'Modifica vista',
- 'Create view' => 'Crea vista',
- 'Name' => 'Nome',
- 'Process list' => 'Elenco processi',
- '%d process(es) has been killed.' => array('%d processo interrotto.', '%d processi interrotti.'),
- 'Kill' => 'Interrompi',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Nome parametro',
- 'Database schema' => 'Schema database',
- 'Create procedure' => 'Crea procedura',
- 'Create function' => 'Crea funzione',
- 'Routine has been dropped.' => 'Routine eliminata.',
- 'Routine has been altered.' => 'Routine modificata.',
- 'Routine has been created.' => 'Routine creata.',
- 'Alter function' => 'Modifica funzione',
- 'Alter procedure' => 'Modifica procedura',
- 'Return type' => 'Return type',
- 'Add trigger' => 'Aggiungi trigger',
- 'Trigger has been dropped.' => 'Trigger eliminato.',
- 'Trigger has been altered.' => 'Trigger modificato.',
- 'Trigger has been created.' => 'Trigger creato.',
- 'Alter trigger' => 'Modifica trigger',
- 'Create trigger' => 'Crea trigger',
- 'Time' => 'Orario',
- 'Event' => 'Evento',
- 'MySQL version: %s through PHP extension %s' => 'Versione MySQL: %s via estensione PHP %s',
- '%d row(s)' => array('%d riga', '%d righe'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
- 'Remove' => 'Rimuovi',
- 'Are you sure?' => 'Sicuro?',
- 'Privileges' => 'Privilegi',
- 'Create user' => 'Crea utente',
- 'User has been dropped.' => 'Utente eliminato.',
- 'User has been altered.' => 'Utente modificato.',
- 'User has been created.' => 'Utente creato.',
- 'Hashed' => 'Hashed',
- 'Column' => 'Colonna',
- 'Routine' => 'Routine',
- 'Grant' => 'Permetti',
- 'Revoke' => 'Revoca',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'Troppi dati via POST. Ridurre i dati o aumentare la direttiva di configurazione "post_max_size".',
- 'Logged as: %s' => 'Autenticato come: %s',
- 'Move up' => 'Sposta su',
- 'Move down' => 'Sposta giu',
- 'Functions' => 'Funzioni',
- 'Aggregation' => 'Aggregazione',
- 'Export' => 'Esporta',
- 'Output' => 'Risultato',
- 'open' => 'apri',
- 'save' => 'salva',
- 'Format' => 'Formato',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Tables' => 'Tabelle',
- 'Data' => 'Dati',
- 'Event has been dropped.' => 'Evento eliminato.',
- 'Event has been altered.' => 'Evento modificato.',
- 'Event has been created.' => 'Evento creato.',
- 'Alter event' => 'Modifica evento',
- 'Create event' => 'Crea evento',
- 'Start' => 'Inizio',
- 'End' => 'Fine',
- 'Every' => 'Ogni',
- 'Status' => 'Stato',
- 'On completion preserve' => 'Al termine preservare',
- 'Events' => 'Eventi',
- 'Schedule' => 'Pianifica',
- 'At given time' => 'A tempo prestabilito',
- 'Save and continue edit' => 'Salva e continua',
- 'original' => 'originale',
- 'Tables have been truncated.' => 'Le tabelle sono state svuotate.',
- 'Tables have been moved.' => 'Le tabelle sono state spostate.',
- 'Tables have been dropped.' => 'Le tabelle sono state eliminate.',
- 'Tables and views' => 'Tabelle e viste',
- 'Engine' => 'Motore',
- 'Collation' => 'Collazione',
- 'Data Length' => 'Lunghezza dato',
- 'Index Length' => 'Lunghezza indice',
- 'Data Free' => 'Dati liberi',
- 'Rows' => 'Righe',
- ',' => '.',
- 'Analyze' => 'Analizza',
- 'Optimize' => 'Ottimizza',
- 'Check' => 'Controlla',
- 'Repair' => 'Ripara',
- 'Truncate' => 'Svuota',
- 'Move to other database' => 'Sposta in altro database',
- 'Move' => 'Sposta',
- '%d item(s) have been affected.' => array('Il risultato consiste in %d elemento', 'Il risultato consiste in %d elementi'),
- 'whole result' => 'intero risultato',
- 'clone' => 'clona',
- 'Clone' => 'Clona',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Troppi campi. Per favore aumentare %s e %s.',
- 'Partition by' => 'Partiziona per',
- 'Partitions' => 'Partizioni',
- 'Partition name' => 'Nome partizione',
- 'Values' => 'Valori',
- '%d row(s) has been imported.' => array('%d riga importata.','%d righe importate.'),
- 'Table structure' => 'Struttura tabella',
- '(anywhere)' => '(ovunque)',
- 'CSV Import' => 'Importa da CSV',
- 'Import' => 'Importa',
- 'Stop on error' => 'Stop su errore',
- 'Select table' => 'Scegli tabella',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/nl.inc.php b/lang/nl.inc.php
deleted file mode 100644
index 2fe16f6e..00000000
--- a/lang/nl.inc.php
+++ /dev/null
@@ -1,217 +0,0 @@
- 'Inloggen',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'Uitloggen geslaagd.',
- 'Invalid credentials.' => 'Ongeldige logingegevens.',
- 'Server' => 'Server',
- 'Username' => 'Gebruikersnaam',
- 'Password' => 'Wachtwoord',
- 'Select database' => 'Database selecteren',
- 'Invalid database.' => 'Ongeldige database.',
- 'Create new database' => 'Nieuwe database',
- 'Table has been dropped.' => 'Tabel verwijderd.',
- 'Table has been altered.' => 'Tabel aangepast.',
- 'Table has been created.' => 'Tabel aangemaakt.',
- 'Alter table' => 'Tabel aanpassen',
- 'Create table' => 'Tabel aanmaken',
- 'Table name' => 'Tabelnaam',
- 'engine' => 'engine',
- 'collation' => 'collation',
- 'Column name' => 'Kolomnaam',
- 'Type' => 'Type',
- 'Length' => 'Lengte',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto nummering',
- 'Options' => 'Opties',
- 'Save' => 'Opslaan',
- 'Drop' => 'Verwijderen',
- 'Database has been dropped.' => 'Database verwijderd.',
- 'Database has been created.' => 'Database aangemaakt.',
- 'Database has been renamed.' => 'Database hernoemd.',
- 'Database has been altered.' => 'Database aangepast.',
- 'Alter database' => 'Database aanpassen',
- 'Create database' => 'Database aanmaken',
- 'SQL command' => 'SQL opdracht',
- 'Dump' => 'Exporteer',
- 'Logout' => 'Uitloggen',
- 'database' => 'database',
- 'Use' => 'Gebruik',
- 'No tables.' => 'Geen tabellen.',
- 'select' => 'kies',
- 'Create new table' => 'Nieuwe tabel',
- 'Item has been deleted.' => 'Item verwijderd.',
- 'Item has been updated.' => 'Item aangepast.',
- 'Item has been inserted.' => 'Item toegevoegd.',
- 'Edit' => 'Bewerk',
- 'Insert' => 'Toevoegen',
- 'Save and insert next' => 'Opslaan, daarna toevoegen',
- 'Delete' => 'Verwijderen',
- 'Database' => 'Database',
- 'Routines' => 'Procedures',
- 'Indexes has been altered.' => 'Index aangepast.',
- 'Indexes' => 'Indexen',
- 'Alter indexes' => 'Indexen aanpassen',
- 'Add next' => 'Volgende toevoegen',
- 'Language' => 'Taal',
- 'Select' => 'Kies',
- 'New item' => 'Nieuw item',
- 'Search' => 'Zoeken',
- 'Sort' => 'Sorteren',
- 'DESC' => 'Aflopend',
- 'Limit' => 'Beperk',
- 'No rows.' => 'Geen rijen.',
- 'Action' => 'Acties',
- 'edit' => 'bewerk',
- 'Page' => 'Pagina',
- 'Query executed OK, %d row(s) affected.' => array('Query uitgevoerd, %d rij geraakt.', 'Query uitgevoerd, %d rijen geraakt.'),
- 'Error in query' => 'Fout in query',
- 'Execute' => 'Uitvoeren',
- 'Table' => 'Tabel',
- 'Foreign keys' => 'Foreign keys',
- 'Triggers' => 'Triggers',
- 'View' => 'View',
- 'Unable to select the table' => 'Onmogelijk tabel te selecteren',
- 'Invalid CSRF token. Send the form again.' => 'Ongeldig CSRF token. Verstuur het formulier opnieuw.',
- 'Comment' => 'Commentaar',
- 'Default values has been set.' => 'Standaard waarde ingesteld.',
- 'Default values' => 'Standaard waarden',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Kolomcommentaar weergeven',
- '%d byte(s)' => array('%d byte', '%d bytes'),
- 'No commands to execute.' => 'Geen opdrachten uit te voeren.',
- 'Unable to upload a file.' => 'Onmogelijk bestand te uploaden.',
- 'File upload' => 'Bestand uploaden',
- 'File uploads are disabled.' => 'Bestanden uploaden is uitgeschakeld.',
- 'Routine has been called, %d row(s) affected.' => array('Procedure uitgevoerd, %d rij geraakt.', 'Procedure uitgevoerd, %d rijen geraakt.'),
- 'Call' => 'Uitvoeren',
- 'No MySQL extension' => 'Geen MySQL extensie',
- 'None of supported PHP extensions (%s) are available.' => 'Geen geldige PHP extensies beschikbaar (%s).',
- 'Sessions must be enabled.' => 'Siessies moeten geactiveerd zijn.',
- 'Session expired, please login again.' => 'Uw sessie is verlopen. Gelieve opnieuw in te loggen.',
- 'Text length' => 'Tekst lengte',
- 'Foreign key has been dropped.' => 'Foreign key verwijderd.',
- 'Foreign key has been altered.' => 'Foreign key aangepast.',
- 'Foreign key has been created.' => 'Foreign key aangemaakt.',
- 'Foreign key' => 'Foreign key',
- 'Target table' => 'Doeltabel',
- 'Change' => 'Veranderen',
- 'Source' => 'Bron',
- 'Target' => 'Doel',
- 'Add column' => 'Kolom toevoegen',
- 'Alter' => 'Aanpassen',
- 'Add foreign key' => 'Foreign key aanmaken',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'Index type',
- 'Column (length)' => 'Kolom (lengte)',
- 'View has been dropped.' => 'View verwijderd.',
- 'View has been altered.' => 'View aangepast.',
- 'View has been created.' => 'View aangemaakt.',
- 'Alter view' => 'View aanpassen',
- 'Create view' => 'View aanmaken',
- 'Name' => 'Naam',
- 'Process list' => 'Proceslijst',
- '%d process(es) has been killed.' => array('%d proces gestopt.', '%d processen gestopt.'),
- 'Kill' => 'Stoppen',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Parameternaam',
- 'Database schema' => 'Database schema',
- 'Create procedure' => 'Procedure aanmaken',
- 'Create function' => 'Functie aanmaken',
- 'Routine has been dropped.' => 'Procedure verwijderd.',
- 'Routine has been altered.' => 'Procedure aangepast.',
- 'Routine has been created.' => 'Procedure aangemaakt.',
- 'Alter function' => 'Functie aanpassen',
- 'Alter procedure' => 'Procedure aanpassen',
- 'Return type' => 'Return type',
- 'Add trigger' => 'Trigger aanmaken',
- 'Trigger has been dropped.' => 'Trigger verwijderd.',
- 'Trigger has been altered.' => 'Trigger aangepast.',
- 'Trigger has been created.' => 'Trigger aangemaakt.',
- 'Alter trigger' => 'Trigger aanpassen',
- 'Create trigger' => 'Trigger aanmaken',
- 'Time' => 'Time',
- 'Event' => 'Event',
- 'MySQL version: %s through PHP extension %s' => 'MySQL versie: %s met PHP extensie %s',
- '%d row(s)' => array('%d rij', '%d rijen'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
- 'Remove' => 'Verwijderen',
- 'Are you sure?' => 'Weet u het zeker?',
- 'Privileges' => 'Rechten',
- 'Create user' => 'Gebruiker aanmaken',
- 'User has been dropped.' => 'Gebruiker verwijderd.',
- 'User has been altered.' => 'Gebruiker aangepast.',
- 'User has been created.' => 'Gebruiker aangemaakt.',
- 'Hashed' => 'Gehashed',
- 'Column' => 'Kolom',
- 'Routine' => 'Routine',
- 'Grant' => 'Toekennen',
- 'Revoke' => 'Intrekken',
- 'Logged as: %s' => 'Aangemeld als: %s',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST-data is te groot. Verklein de hoeveelheid data of verhoog de "post_max_size" configuratie.',
- 'Move up' => 'Omhoog',
- 'Move down' => 'Omlaag',
- 'Export' => 'Exporteren',
- 'Tables' => 'Tabellen',
- 'Data' => 'Data',
- 'Output' => 'Uitvoer',
- 'open' => 'openen',
- 'save' => 'opslaan',
- 'Format' => 'Formaat',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Functions' => 'Functies',
- 'Aggregation' => 'Totalen',
- 'Event has been dropped.' => 'Event werd verwijderd.',
- 'Event has been altered.' => 'Event werd aangepast.',
- 'Event has been created.' => 'Event werd aangemaakt.',
- 'Alter event' => 'Event aanpassen',
- 'Create event' => 'Event aanmaken',
- 'Start' => 'Start',
- 'End' => 'Stop',
- 'Every' => 'Iedere',
- 'Status' => 'Status',
- 'On completion preserve' => 'Bewaren na voltooiing',
- 'Events' => 'Events',
- 'Schedule' => 'Schedule',
- 'At given time' => 'Op aangegeven tijd',
- 'Save and continue edit' => 'Opslaan en verder bewerken',
- 'original' => 'origineel',
- 'Tables have been truncated.' => 'Tabellen werden geleegd.',
- 'Tables have been moved.' => 'Tabellen werden verplaatst.',
- 'Tables have been dropped.' => 'Tabellen werden verwijderd.',
- 'Tables and views' => 'Tabellen en views',
- 'Engine' => 'Engine',
- 'Collation' => 'Collatie',
- 'Data Length' => 'Data lengte',
- 'Index Length' => 'Index lengte',
- 'Data Free' => 'Data Vrij',
- 'Rows' => 'Rijen',
- ',' => '.',
- 'Analyze' => 'Analyseer',
- 'Optimize' => 'Optimaliseer',
- 'Check' => 'Controleer',
- 'Repair' => 'Herstel',
- 'Truncate' => 'Legen',
- 'Move to other database' => 'Verplaats naar andere database',
- 'Move' => 'Verplaats',
- '%d item(s) have been affected.' => array('%d item aangepast.', '%d items aangepast.'),
- 'whole result' => 'volledig resultaat',
- 'clone' => 'dupliceer',
- 'Clone' => 'Dupliceer',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Maximum aantal velden bereikt. Verhoog %s en %s.',
- 'Partition by' => 'Partitioneren op',
- 'Partitions' => 'Partities',
- 'Partition name' => 'Partitie naam',
- 'Values' => 'Waarden',
- '%d row(s) has been imported.' => array('%d rij werd geïmporteerd.', '%d rijen werden geïmporteerd.'),
- 'Table structure' => 'Tabelstructuur',
- '(anywhere)' => '(overal)',
- 'CSV Import' => 'CSV Import',
- 'Import' => 'Importeren',
- 'Stop on error' => 'Stoppen bij fout',
- 'Select table' => 'Selecteer tabel',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/ru.inc.php b/lang/ru.inc.php
deleted file mode 100644
index 902ac544..00000000
--- a/lang/ru.inc.php
+++ /dev/null
@@ -1,217 +0,0 @@
- 'ÐапиÑаÑÑÑÑ',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'ÐогаÑÑ Ð² поÑÑдке.',
- 'Invalid credentials.' => 'ÐедейÑÑвиÑелÑное заÑвиÑелÑное ÑакÑÑ.',
- 'Server' => 'СеÑвеÑ',
- 'Username' => 'ÐмÑ',
- 'Password' => 'ÐаÑолÑ',
- 'Select database' => 'ÐÑбÑаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
- 'Invalid database.' => 'ÐлоÑ
Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ
.',
- 'Create new database' => 'СоздаÑÑ Ð½Ð¾Ð²ÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
- 'Table has been dropped.' => 'ТаблиÑа бÑла ÑнÑÑа.',
- 'Table has been altered.' => 'ТаблиÑа бÑла изменена.',
- 'Table has been created.' => 'ТаблиÑа бÑла Ñоздана.',
- 'Alter table' => 'ÐзмениÑÑ ÑаблиÑÑ',
- 'Create table' => 'СоздаÑÑ ÑаблиÑÑ',
- 'Table name' => 'ÐÐ¼Ñ ÑаблиÑÑ',
- 'engine' => 'Ñип',
- 'collation' => 'ÑÑавнение',
- 'Column name' => 'ÐÐ¼Ñ Ð¿Ð¾Ð»Ñ',
- 'Type' => 'Тип',
- 'Length' => 'Ðлина',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto Increment',
- 'Options' => 'ÐейÑÑвие',
- 'Save' => 'СоÑ
ÑаниÑÑ',
- 'Drop' => 'УÑÑÑаниÑÑ',
- 'Database has been dropped.' => 'Ðаза даннÑÑ
бÑла ÑнÑÑа.',
- 'Database has been created.' => 'Ðаза даннÑÑ
бÑла Ñоздана.',
- 'Database has been renamed.' => 'Ðаза даннÑÑ
бÑла пеÑеименована.',
- 'Database has been altered.' => 'Ðаза даннÑÑ
бÑла изменена.',
- 'Alter database' => 'ÐзмениÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
- 'Create database' => 'СоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
- 'SQL command' => 'SQL запÑоÑ',
- 'Dump' => 'ÐкÑпоÑÑ',
- 'Logout' => 'ÐÑпиÑаÑÑÑÑ',
- 'database' => 'база даннÑÑ
',
- 'Use' => 'ÐÑбÑаÑÑ',
- 'No tables.' => 'Ðикакое ÑаблиÑе.',
- 'select' => 'вÑпиÑаÑÑ',
- 'Create new table' => 'СоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑаблиÑÑ',
- 'Item has been deleted.' => 'ÐапиÑÑ Ð±Ñл ÑÑеÑеннÑй.',
- 'Item has been updated.' => 'ÐапиÑÑ Ð±Ñл акÑÑализиÑованнÑй.',
- 'Item has been inserted.' => 'ÐапиÑÑ Ð±Ñл вÑÑавннÑй.',
- 'Edit' => 'ÐбÑабоÑаÑÑ',
- 'Insert' => 'ÐÑÑавиÑÑ',
- 'Save and insert next' => 'УложиÑÑ Ð¸ вÑÑавиÑÑ Ð´ÑÑгой',
- 'Delete' => 'СÑеÑеÑÑ',
- 'Database' => 'Ðаза даннÑÑ
',
- 'Routines' => 'ÐÑоÑедÑÑÑ Ð¸ ÑÑнкÑии',
- 'Indexes has been altered.' => 'ÐндекÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ.',
- 'Indexes' => 'ÐндекÑÑ',
- 'Alter indexes' => 'ÐзмениÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ',
- 'Add next' => 'ÐобавиÑÑ Ð´ÑÑгое',
- 'Language' => 'ЯзÑк',
- 'Select' => 'ÐÑпиÑаÑÑ',
- 'New item' => 'ÐовÑй запиÑÑ',
- 'Search' => 'ÐоиÑк',
- 'Sort' => 'СоÑÑиÑоваÑÑ',
- 'DESC' => 'в ниÑÑ
одÑÑем поÑÑдке',
- 'Limit' => 'ÐимиÑ',
- 'No rows.' => 'Ðикакое запиÑи.',
- 'Action' => 'ÐейÑÑвие',
- 'edit' => 'обÑабоÑаÑÑ',
- 'Page' => 'СÑÑаниÑа',
- 'Query executed OK, %d row(s) affected.' => array('ÐапÑÐ¾Ñ Ð² поÑÑдке, изменен %d запиÑÑ.', 'ÐапÑÐ¾Ñ Ð² поÑÑдке, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ %d запиÑи.', 'ÐапÑÐ¾Ñ Ð² поÑÑдке, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ %d запиÑи.'),
- 'Error in query' => 'ÐÑибка в запÑоÑe',
- 'Execute' => 'СделаÑÑ',
- 'Table' => 'ТаблиÑа',
- 'Foreign keys' => 'ÐноÑÑÑаннÑе клÑÑи',
- 'Triggers' => 'ТÑиггеÑÑ',
- 'View' => 'ÐзглÑд',
- 'Unable to select the table' => 'Ðе ÑдалоÑÑ Ð²ÑпиÑаÑÑ ÑаблиÑÑ',
- 'Invalid CSRF token. Send the form again.' => 'ÐедейÑÑвиÑелÑнÑй Ñокен CSRF. ÐÑпÑавиÑе ÑоÑмÑлÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ Ñаз.',
- 'Comment' => 'ÐомменÑаÑий',
- 'Default values has been set.' => 'ÐÑÑ
однÑе даннÑе бÑли заÑикÑиÑованÑ.',
- 'Default values' => 'ÐÑÑ
однÑе даннÑе',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'ÐзобÑазиÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸',
- '%d byte(s)' => array('%d байÑ', '%d байÑÑ', '%d байÑов'),
- 'No commands to execute.' => 'Ðикакое запÑоÑÑ Ð´Ð»Ñ Ð²Ñполнение командÑ.',
- 'Unable to upload a file.' => 'Ðе ÑдалоÑÑ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ñайл.',
- 'File upload' => 'ÐапиÑаÑÑ Ñайл',
- 'File uploads are disabled.' => 'ÐапиÑÑваÑÑ ÑÐ°Ð¹Ð»Ñ Ð·Ð°Ð¿ÑеÑено.',
- 'Routine has been called, %d row(s) affected.' => array('ÐÑоÑедÑÑа бÑла вÑзвана, бÑл изменен %d запиÑÑ.', 'ÐÑоÑедÑÑа бÑла вÑзвана, бÑли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ %d запиÑÑ.', 'ÐÑоÑедÑÑа бÑла вÑзвана, бÑло изменено %d запиÑов.'),
- 'Call' => 'ÐÑзваÑÑ',
- 'No MySQL extension' => 'ÐÐ¸ÐºÐ°ÐºÐ°Ñ MySQL ÑаÑÑÑжка',
- 'None of supported PHP extensions (%s) are available.' => 'ÐÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ°Ñ Ð¸Ð· пооÑÑениÑ
PHP ÑаÑÑÑжении (%s).',
- 'Sessions must be enabled.' => 'СеÑÑион должно бÑÑÑ ÑазÑеÑенное.',
- 'Session expired, please login again.' => 'СеÑÑион пÑоÑла, запиÑаÑÑÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ Ñаз.',
- 'Text length' => 'Ðлина ÑекÑÑов',
- 'Foreign key has been dropped.' => 'ÐноÑÑÑаннÑй клÑÑ Ð±Ñл Ñдалена.',
- 'Foreign key has been altered.' => 'ÐноÑÑÑаннÑй клÑÑ Ð±Ñл акÑÑализиÑованнÑй.',
- 'Foreign key has been created.' => 'ÐноÑÑÑаннÑй клÑÑ Ð±Ñл Ñоздан.',
- 'Foreign key' => 'ÐноÑÑÑаннÑй клÑÑ',
- 'Target table' => 'ФиниÑÐ½Ð°Ñ ÑаблиÑа',
- 'Change' => 'ÐзмениÑÑ',
- 'Source' => 'ÐÑÑоÑник',
- 'Target' => 'ЦелÑ',
- 'Add column' => 'ÐобавиÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÑ',
- 'Alter' => 'ÐзмениÑÑ',
- 'Add foreign key' => 'ÐобавиÑÑ Ð¸Ð½Ð¾ÑÑÑаннÑй клÑÑ',
- 'ON DELETE' => 'ÐÑи ÑÑиÑание',
- 'ON UPDATE' => 'ÐÑи акÑÑализаÑии',
- 'Index Type' => 'Тип индекÑа',
- 'Column (length)' => 'Ðолонка (длина)',
- 'View has been dropped.' => 'ÐзглÑд бÑл Ñдален.',
- 'View has been altered.' => 'ÐзглÑд бÑл изменен.',
- 'View has been created.' => 'ÐзглÑд бÑл Ñоздан.',
- 'Alter view' => 'ÐзмениÑÑ Ð²Ð·Ð³Ð»Ñд',
- 'Create view' => 'СоздаÑÑ Ð²Ð·Ð³Ð»Ñд',
- 'Name' => 'ÐмÑ',
- 'Process list' => 'СпиÑок пÑоÑеÑÑов',
- '%d process(es) has been killed.' => array('ÐÑл завеÑÑÑн %d пÑоÑеÑÑ.', 'ÐÑло завеÑÑÑно %d пÑоÑеÑÑов.', 'ÐÑло завеÑÑÑно %d пÑоÑеÑÑов.'),
- 'Kill' => 'ÐавеÑÑиÑÑ',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'ÐÐ¼Ñ Ð¿Ð°ÑамеÑÑа',
- 'Database schema' => 'СÑ
ема Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
- 'Create procedure' => 'СоздаÑÑ Ð¿ÑоÑедÑÑÑ',
- 'Create function' => 'СоздаÑÑ ÑÑнкÑиÑ',
- 'Routine has been dropped.' => 'ÐÑоÑедÑÑа бÑла Ñдалена.',
- 'Routine has been altered.' => 'ÐÑоÑедÑÑа бÑла изменена.',
- 'Routine has been created.' => 'ÐÑоÑедÑÑа бÑла Ñоздана.',
- 'Alter function' => 'ÐзмениÑÑ ÑÑнкÑиÑ',
- 'Alter procedure' => 'ÐзмениÑÑ Ð¿ÑоÑедÑÑÑ',
- 'Return type' => 'ÐозвÑаÑнÑй Ñип',
- 'Add trigger' => 'ÐобавиÑÑ ÑÑиггеÑ',
- 'Trigger has been dropped.' => 'ТÑÐ¸Ð³Ð³ÐµÑ Ð±Ñл Ñдален.',
- 'Trigger has been altered.' => 'ТÑÐ¸Ð³Ð³ÐµÑ Ð±Ñл изменен.',
- 'Trigger has been created.' => 'ТÑÐ¸Ð³Ð³ÐµÑ Ð±Ñл Ñоздан.',
- 'Alter trigger' => 'ÐзмениÑÑ ÑÑиггеÑ',
- 'Create trigger' => 'СоздаÑÑ ÑÑиггеÑ',
- 'Time' => 'ÐÑемÑ',
- 'Event' => 'СобÑÑие',
- 'MySQL version: %s through PHP extension %s' => 'ÐеÑÑÐ¸Ñ MySQL: %s ÑеÑез PHP ÑаÑÑÑжение %s',
- '%d row(s)' => array('%d ÑÑÑока', '%d ÑÑÑоки', '%d ÑÑÑоков'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ÐÑи пеÑемене акÑÑалÑного вÑемÑ',
- 'Remove' => 'ÐзÑÑÑÑ',
- 'Are you sure?' => 'УвеÑен?',
- 'Privileges' => 'ÐолномоÑие',
- 'Create user' => 'СоздаÑÑ Ð¿Ð¾Ð»ÑзоваÑела',
- 'User has been dropped.' => 'ÐолÑзоваÑÐµÐ»Ñ Ð±Ñл Ñдален.',
- 'User has been altered.' => 'ÐолÑзоваÑÐµÐ»Ñ Ð±Ñл изменен.',
- 'User has been created.' => 'ÐолÑзоваÑÐµÐ»Ñ Ð±Ñл Ñоздан.',
- 'Hashed' => 'ÑÑо Ñ
ÑÑ',
- 'Column' => 'Ðолонка',
- 'Routine' => 'ÐÑоÑедÑÑа',
- 'Grant' => 'ÐозволиÑÑ',
- 'Revoke' => 'ÐапÑеÑиÑÑ',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'ÐÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑое POST даннÑе. УменÑÑиÑе даннÑе или ÑвелиÑиÑе паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑной диÑекÑÐ¸Ð²Ñ "post_max_size".',
- 'Logged as: %s' => 'ÐапиÑаннÑй как: %s',
- 'Move up' => 'ÐеÑемеÑÑиÑÑ Ð²Ð²ÐµÑÑ
',
- 'Move down' => 'ÐеÑемеÑÑиÑÑ Ð²Ð½Ð¸Ð·',
- 'Functions' => 'ФÑнкÑии',
- 'Aggregation' => 'ÐгÑегаÑиÑ',
- 'Export' => 'ÐкÑпоÑÑ',
- 'Output' => 'ÐÑÑ
од',
- 'open' => 'оÑкÑÑÑÑ',
- 'save' => 'ÑложиÑÑ',
- 'Format' => 'ФоÑмаÑ',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Tables' => 'ТаблиÑÑ',
- 'Data' => 'ÐаннÑе',
- 'Event has been dropped.' => 'СобÑÑие бÑла Ñдален.',
- 'Event has been altered.' => 'СобÑÑие бÑла изменена.',
- 'Event has been created.' => 'СобÑÑие бÑла Ñоздана.',
- 'Alter event' => 'ÐзмениÑÑ ÑобÑÑие',
- 'Create event' => 'СоздаÑÑ ÑобÑÑие',
- 'At given time' => 'Рданное вÑемÑ',
- 'Every' => 'ЧеÑез каждÑÑ
',
- 'Events' => 'СобÑÑиÑ',
- 'Schedule' => 'Ðлан',
- 'Start' => 'ÐаÑало',
- 'End' => 'ÐонеÑ',
- 'Status' => 'СоÑÑоÑние',
- 'On completion preserve' => 'Ðо доделке ÑоÑ
ÑаниÑÑ',
- 'Tables and views' => 'ТаблиÑÑ Ð¸ взглÑдÑ',
- 'Data Length' => 'ÐбÑÑм даннÑÑ
',
- 'Index Length' => 'ÐбÑÑм индекÑов',
- 'Data Free' => 'СвободнÑе меÑÑо',
- 'Collation' => 'СÑавнение',
- 'Analyze' => 'ÐнализиÑоваÑÑ',
- 'Optimize' => 'ÐпÑимизиÑоваÑÑ',
- 'Check' => 'ÐÑовеÑиÑÑ',
- 'Repair' => 'ÐопÑавиÑÑ',
- 'Truncate' => 'ÐеÑемазаÑÑ',
- 'Tables have been truncated.' => 'ТаблиÑÑ Ð±Ñли пеÑемазание.',
- 'Rows' => 'СÑÑоков',
- ',' => ' ',
- 'Tables have been moved.' => 'ТаблиÑÑ Ð±Ñли пеÑемеÑÑенÑ.',
- 'Move to other database' => 'ÐеÑемеÑÑиÑÑ Ð² дÑÑÐ³Ð¾Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
',
- 'Move' => 'ÐеÑемеÑÑиÑÑ',
- 'Engine' => 'Тип',
- 'Save and continue edit' => 'УложиÑÑ Ð¸ пÑодолжаÑÑ ÑедакÑиÑование',
- 'clone' => 'клониÑоваÑÑ',
- 'original' => 'иÑÑ
однÑй',
- '%d item(s) have been affected.' => array('ÐÑл пÑиÑинено %d запиÑÑ.', 'ÐÑли пÑиÑÐ¸Ð½ÐµÐ½Ñ %d запиÑÑ.', 'ÐÑло пÑиÑинено %d запиÑов.'),
- 'whole result' => 'веÑÑ ÑезÑлÑÑаÑ',
- 'Tables have been dropped.' => 'ТаблиÑÑ Ð±Ñли ÑÑÑÑаненÑ.',
- 'Clone' => 'ÐлониÑоваÑÑ',
- 'Partition by' => 'РазделиÑÑ Ð¿Ð¾',
- 'Partitions' => 'РазделÑ',
- 'Partition name' => 'ÐÐ¼Ñ Ñаздела',
- 'Values' => 'ÐаÑамеÑÑÑ',
- '%d row(s) has been imported.' => array('ÐÑл импоÑÑиÑован %d v.', 'ÐÑли импоÑÑиÑÐ¾Ð²Ð°Ð½Ñ %d запиÑÑ.', 'ÐÑло импоÑÑиÑовано %d запиÑов.'),
- 'CSV Import' => 'ÐмпоÑÑ CSV',
- 'Import' => 'ÐмпоÑÑ',
- 'Table structure' => 'СÑÑÑкÑÑÑа ÑаблиÑи',
- 'Select table' => 'ÐÑпиÑаÑÑ ÑаблиÑÑ',
- 'Stop on error' => 'ÐÑекÑаÑиÑÑ Ð¿Ñи оÑибке',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'ÐÑло пеÑеÑеÑено макÑималÑнÑе колиÑеÑÑво полÑ. ÐаÑаÑÑиÑе %s и %s.',
- '(anywhere)' => '(в лÑбом меÑÑе)',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/sk.inc.php b/lang/sk.inc.php
deleted file mode 100644
index d5cc6c4e..00000000
--- a/lang/sk.inc.php
+++ /dev/null
@@ -1,217 +0,0 @@
- 'Prihlásiť sa',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => 'Odhlásenie prebehlo v poriadku.',
- 'Invalid credentials.' => 'Neplatné prihlasovacie údaje.',
- 'Server' => 'Server',
- 'Username' => 'PoužÃvateľ',
- 'Password' => 'Heslo',
- 'Select database' => 'Vybrať databázu',
- 'Invalid database.' => 'Nesprávna databáza.',
- 'Create new database' => 'Vytvoriť novú databázu',
- 'Table has been dropped.' => 'Tabuľka bola odstránená.',
- 'Table has been altered.' => 'Tabuľka bola zmenená.',
- 'Table has been created.' => 'Tabuľka bola vytvorená.',
- 'Alter table' => 'Zmeniť tabuľku',
- 'Create table' => 'Vytvoriť tabuľku',
- 'Table name' => 'Názov tabuľky',
- 'engine' => 'úložisko',
- 'collation' => 'porovnávanie',
- 'Column name' => 'Názov stĺpca',
- 'Type' => 'Typ',
- 'Length' => 'Dĺžka',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto Increment',
- 'Options' => 'Voľby',
- 'Save' => 'Uložiť',
- 'Drop' => 'Odstrániť',
- 'Database has been dropped.' => 'Databáza bola odstránená.',
- 'Database has been created.' => 'Databáza bola vytvorená.',
- 'Database has been renamed.' => 'Databáza bola premenovaná.',
- 'Database has been altered.' => 'Databáza bola zmenená.',
- 'Alter database' => 'Zmeniť databázu',
- 'Create database' => 'Vytvoriť databázu',
- 'SQL command' => 'SQL prÃkaz',
- 'Dump' => 'Export',
- 'Logout' => 'Odhlásiť',
- 'database' => 'databáza',
- 'Use' => 'Vybrať',
- 'No tables.' => 'Žiadne tabuľky.',
- 'select' => 'vypÃsaÅ¥',
- 'Create new table' => 'Vytvoriť novú tabuľku',
- 'Item has been deleted.' => 'Položka bola vymazaná.',
- 'Item has been updated.' => 'Položka bola aktualizovaná.',
- 'Item has been inserted.' => 'Položka bola vložená.',
- 'Edit' => 'Upraviť',
- 'Insert' => 'Vložiť',
- 'Save and insert next' => 'UložiÅ¥ a vložiÅ¥ ÄalÅ¡Ã',
- 'Delete' => 'Zmazať',
- 'Database' => 'Databáza',
- 'Routines' => 'Procedúry',
- 'Indexes has been altered.' => 'Indexy boli zmenené.',
- 'Indexes' => 'Indexy',
- 'Alter indexes' => 'Zmeniť indexy',
- 'Add next' => 'PridaÅ¥ ÄalÅ¡Ã',
- 'Language' => 'Jazyk',
- 'Select' => 'VypÃsaÅ¥',
- 'New item' => 'Nová položka',
- 'Search' => 'Vyhľadať',
- 'Sort' => 'Zotriediť',
- 'DESC' => 'zostupne',
- 'Limit' => 'Limit',
- 'No rows.' => 'Žiadne riadky.',
- 'Action' => 'Akcia',
- 'edit' => 'upraviť',
- 'Page' => 'Stránka',
- 'Query executed OK, %d row(s) affected.' => array('PrÃkaz prebehol v poriadku, bol zmenený %d záznam.', 'PrÃkaz prebehol v poriadku boli zmenené %d záznamy.', 'PrÃkaz prebehol v poriadku bolo zmenených %d záznamov.'),
- 'Error in query' => 'Chyba v dotaze',
- 'Execute' => 'Vykonať',
- 'Table' => 'Tabuľka',
- 'Foreign keys' => 'Cudzie kľúÄe',
- 'Triggers' => 'Triggery',
- 'View' => 'Pohľad',
- 'Unable to select the table' => 'Tabuľku sa nepodarilo vypÃsaÅ¥',
- 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odošlite formulár znova.',
- 'Comment' => 'Komentár',
- 'Default values has been set.' => 'Východzie hodnoty boli nastavené.',
- 'Default values' => 'Východzie hodnoty',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Zobraziť komentáre stĺpcov',
- '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtov'),
- 'No commands to execute.' => 'Žiadne prÃkazy na vykonanie.',
- 'Unable to upload a file.' => 'Súbor sa nepodarilo nahrať.',
- 'File upload' => 'Nahranie súboru',
- 'File uploads are disabled.' => 'Nahrávánie súborov nie je povolené.',
- 'Routine has been called, %d row(s) affected.' => array('Procedúra bola zavolaná, bol zmenený %d záznam.', 'Procedúra bola zavolaná, boli zmenené %d záznamy.', 'Procedúra bola zavolaná, bolo zmenených %d záznamov.'),
- 'Call' => 'Zavolať',
- 'No MySQL extension' => 'Žiadne MySQL rozÅ¡Ãrenie',
- 'None of supported PHP extensions (%s) are available.' => 'Nie je dostupné žiadne z podporovaných rozÅ¡Ãrenà (%s).',
- 'Sessions must be enabled.' => 'Session premenné musia byť povolené.',
- 'Session expired, please login again.' => 'Session vyprÅ¡ala, prihláste sa prosÃm znova.',
- 'Text length' => 'Dĺžka textov',
- 'Foreign key has been dropped.' => 'Cudzà kÄ¾ÃºÄ bol odstránený.',
- 'Foreign key has been altered.' => 'Cudzà kÄ¾ÃºÄ bol zmenený.',
- 'Foreign key has been created.' => 'Cudzà kÄ¾ÃºÄ bol vytvorený.',
- 'Foreign key' => 'Cudzà kľúÄ',
- 'Target table' => 'Cieľová tabuľka',
- 'Change' => 'Zmeniť',
- 'Source' => 'Zdroj',
- 'Target' => 'Cieľ',
- 'Add column' => 'Pridať stĺpec',
- 'Alter' => 'Zmeniť',
- 'Add foreign key' => 'PridaÅ¥ cudzà kľúÄ',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'Typ indexu',
- 'Column (length)' => 'Stĺpec (dĺžka)',
- 'View has been dropped.' => 'Pohľad bol odstránený.',
- 'View has been altered.' => 'Pohľad bol zmenený.',
- 'View has been created.' => 'Pohľad bol vytvorený.',
- 'Alter view' => 'Zmeniť pohľad',
- 'Create view' => 'Vytvoriť pohľad',
- 'Name' => 'Názov',
- 'Process list' => 'Zoznam procesov',
- '%d process(es) has been killed.' => array('Bol ukonÄený %d proces.', 'Boli ukonÄené %d procesy.', 'Bolo ukonÄených %d procesov.'),
- 'Kill' => 'UkonÄiÅ¥',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Názov parametra',
- 'Database schema' => 'Schéma databázy',
- 'Create procedure' => 'Vytvoriť procedúru',
- 'Create function' => 'Vytvoriť funkciu',
- 'Routine has been dropped.' => 'Procedúra bola odstránená.',
- 'Routine has been altered.' => 'Procedúra bola zmenená.',
- 'Routine has been created.' => 'Procedúra bola vytvorená.',
- 'Alter function' => 'Zmeniť funkciu',
- 'Alter procedure' => 'Zmeniť procedúru',
- 'Return type' => 'Návratový typ',
- 'Add trigger' => 'Pridať trigger',
- 'Trigger has been dropped.' => 'Trigger bol odstránený.',
- 'Trigger has been altered.' => 'Trigger bol zmenený.',
- 'Trigger has been created.' => 'Trigger bol vytvorený.',
- 'Alter trigger' => 'Zmeniť trigger',
- 'Create trigger' => 'Vytvoriť trigger',
- 'Time' => 'Äas',
- 'Event' => 'Udalosť',
- 'MySQL version: %s through PHP extension %s' => 'Verzia MySQL: %s cez PHP rozÅ¡Ãrenie %s',
- '%d row(s)' => array('%d riadok', '%d riadky', '%d riadkov'),
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'Pri zmene aktuálny Äas',
- 'Remove' => 'Odobrať',
- 'Are you sure?' => 'Naozaj?',
- 'Privileges' => 'Oprávnenia',
- 'Create user' => 'VytvoriÅ¥ použÃvateľa',
- 'User has been dropped.' => 'PoužÃvateľ bol odstránený.',
- 'User has been altered.' => 'PoužÃvateľ bol zmenený.',
- 'User has been created.' => 'PoužÃvateľ bol vytvorený.',
- 'Hashed' => 'Zahašované',
- 'Column' => 'Stĺpec',
- 'Routine' => 'Procedúra',
- 'Grant' => 'Povoliť',
- 'Revoke' => 'Zakázať',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'PrÃliÅ¡ veľké POST dáta. ZmenÅ¡ite dáta alebo zvýšte hodnotu konfiguraÄej direktÃvy "post_max_size".',
- 'Logged as: %s' => 'Prihlásený ako: %s',
- 'Move up' => 'Presunúť hore',
- 'Move down' => 'Presunúť dolu',
- 'Functions' => 'Funkcie',
- 'Aggregation' => 'Agregácia',
- 'Export' => 'Export',
- 'Output' => 'Výstup',
- 'open' => 'otvoriť',
- 'save' => 'uložiť',
- 'Format' => 'Formát',
- 'SQL' => 'SQL',
- 'CSV' => 'CSV',
- 'Tables' => 'Tabuľky',
- 'Data' => 'Dáta',
- 'Event has been dropped.' => 'Udalosť bola odstránená.',
- 'Event has been altered.' => 'Udalosť bola zmenená.',
- 'Event has been created.' => 'Udalosť bola vytvorená.',
- 'Alter event' => 'Upraviť udalosť',
- 'Create event' => 'Vytvoriť udalosť',
- 'At given time' => 'V stanovený Äas',
- 'Every' => 'Každých',
- 'Events' => 'Udalosti',
- 'Schedule' => 'Plán',
- 'Start' => 'ZaÄiatok',
- 'End' => 'Koniec',
- 'Status' => 'Stav',
- 'On completion preserve' => 'Po dokonÄenà zachovat',
- 'Save and continue edit' => 'UložiÅ¥ a pokraÄovaÅ¥ v úpravách',
- 'original' => 'originál',
- 'Tables have been truncated.' => 'Tabuľka bola vyprázdnená',
- 'Tables have been moved.' => 'Tabuľka bola presunutá',
- 'Tables have been dropped.' => 'Tabuľka bola odstránená',
- 'Tables and views' => 'Tabuľky a pohľady',
- 'Engine' => 'Typ',
- 'Collation' => 'Porovnávanie',
- 'Data Length' => 'Veľkosť dát',
- 'Index Length' => 'Veľkosť indexu',
- 'Data Free' => 'Voľné miesto',
- 'Rows' => 'Riadky',
- ',' => ' ',
- 'Analyze' => 'Analyzovať',
- 'Optimize' => 'Optimalizovať',
- 'Check' => 'Skontrolovať',
- 'Repair' => 'Opraviť',
- 'Truncate' => 'Vyprázdniť',
- 'Move to other database' => 'Presunúť do inej databázy',
- 'Move' => 'Presunúť',
- '%d item(s) have been affected.' => '%d položiek bolo ovplyvnených.',
- 'whole result' => 'celý výsledok',
- 'clone' => 'klonovať',
- 'Clone' => 'Klonovať',
- 'Partition by' => 'Rozdeliť podľa',
- 'Partitions' => 'Oddiely',
- 'Partition name' => 'Názov oddielu',
- 'Values' => 'Hodnoty',
- '%d row(s) has been imported.' => array('Bol importovaný %d záznam.', 'Boli importované %d záznamy.', 'Bolo importovaných %d záznamov.'),
- 'CSV Import' => 'Import CSV',
- 'Import' => 'Import',
- 'Table structure' => 'Štruktúra tabuľky',
- 'Select table' => 'VypÃsaÅ¥ tabuľku',
- 'Stop on error' => 'Zastaviť pri chybe',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Bol prekroÄený maximálny poÄet povolených polÃ. Zvýšte prosÃm %s a %s.',
- '(anywhere)' => '(kdekoľvek)',
- '%.3f s' => '%.3f s',
-);
diff --git a/lang/zh.inc.php b/lang/zh.inc.php
deleted file mode 100644
index 3c217ef3..00000000
--- a/lang/zh.inc.php
+++ /dev/null
@@ -1,217 +0,0 @@
- 'ç»å½',
- 'Adminer' => 'Adminer',
- 'Logout successful.' => '注éæåã',
- 'Invalid credentials.' => 'æ æåæ®ã',
- 'Server' => 'æå¡å¨',
- 'Username' => 'ç¨æ·å',
- 'Password' => 'å¯ç ',
- 'Select database' => 'éæ©æ°æ®åº',
- 'Invalid database.' => 'æ ææ°æ®åºã',
- 'Create new database' => 'åå»ºæ°æ°æ®åº',
- 'Table has been dropped.' => '已丢å¼è¡¨ã',
- 'Table has been altered.' => 'å·²æ´æ¹è¡¨ã',
- 'Table has been created.' => 'å·²å建表ã',
- 'Alter table' => 'æ´æ¹è¡¨',
- 'Create table' => 'å建表',
- 'Table name' => '表å',
- 'engine' => '弿',
- 'collation' => 'æ ¡å¯¹',
- 'Column name' => 'åå',
- 'Type' => 'ç±»å',
- 'Length' => 'é¿åº¦',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'èªå¨å¢é',
- 'Options' => 'é项',
- 'Save' => 'ä¿å',
- 'Drop' => '丢å¼',
- 'Database has been dropped.' => '已䏢弿°æ®åºã',
- 'Database has been created.' => 'å·²åå»ºæ°æ®åºã',
- 'Database has been renamed.' => 'å·²éå½åæ°æ®åºã',
- 'Database has been altered.' => 'å·²æ´æ¹æ°æ®åºã',
- 'Alter database' => 'æ´æ¹æ°æ®åº',
- 'Create database' => 'åå»ºæ°æ®åº',
- 'SQL command' => 'SQLå½ä»¤',
- 'Dump' => '导å
¥/导åº',
- 'Logout' => '注é',
- 'database' => 'æ°æ®åº',
- 'Use' => '使ç¨',
- 'No tables.' => '没æè¡¨ã',
- 'select' => 'éæ©',
- 'Create new table' => 'å建æ°è¡¨',
- 'Item has been deleted.' => 'å·²å é¤é¡¹ç®ã',
- 'Item has been updated.' => 'å·²æ´æ°é¡¹ç®ã',
- 'Item has been inserted.' => 'å·²æå
¥é¡¹ç®ã',
- 'Edit' => 'ç¼è¾',
- 'Insert' => 'æå
¥',
- 'Save and insert next' => 'ä¿åå¹¶æå
¥ä¸ä¸ä¸ª',
- 'Delete' => 'å é¤',
- 'Database' => 'æ°æ®åº',
- 'Routines' => 'åç¨åº',
- 'Indexes has been altered.' => 'å·²æ´æ¹ç´¢å¼ã',
- 'Indexes' => 'ç´¢å¼',
- 'Alter indexes' => 'æ´æ¹ç´¢å¼',
- 'Add next' => 'æ·»å ä¸ä¸ä¸ª',
- 'Language' => 'è¯è¨',
- 'Select' => 'éæ©',
- 'New item' => 'æ°å»ºé¡¹',
- 'Search' => 'æç´¢',
- 'Sort' => 'æåº',
- 'DESC' => 'éåº',
- 'Limit' => 'éå®',
- 'No rows.' => '没æè¡ã',
- 'Action' => 'å¨ä½',
- 'edit' => 'ç¼è¾',
- 'Page' => '页é¢',
- 'Query executed OK, %d row(s) affected.' => 'æ§è¡æ¥è¯¢OKï¼%d è¡åå½±å',
- 'Error in query' => 'æ¥è¯¢åºé',
- 'Execute' => 'æ§è¡',
- 'Table' => '表',
- 'Foreign keys' => 'å¤é®',
- 'Triggers' => '触åå¨',
- 'View' => 'è§å¾',
- 'Unable to select the table' => 'ä¸è½éæ©è¯¥è¡¨',
- 'Invalid CSRF token. Send the form again.' => 'æ æ CSRF 令çãéæ°åé表åã',
- 'Comment' => '注é',
- 'Default values has been set.' => 'é»è®¤å¼å·²è®¾ç½®ã',
- 'Default values' => 'é»è®¤å¼',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'æ¾ç¤ºå注é',
- '%d byte(s)' => '%d åè',
- 'No commands to execute.' => '没æå½ä»¤æ§è¡ã',
- 'Unable to upload a file.' => 'ä¸è½ä¸ä¼ æä»¶ã',
- 'File upload' => 'æä»¶ä¸ä¼ ',
- 'File uploads are disabled.' => 'æä»¶ä¸ä¼ 被ç¦ç¨ã',
- 'Routine has been called, %d row(s) affected.' => 'åç¨åºè¢«è°ç¨ï¼%d è¡è¢«å½±å',
- 'Call' => 'è°ç¨',
- 'No MySQL extension' => '没æMySQLæ©å±',
- 'None of supported PHP extensions (%s) are available.' => 'æ²¡ææ¯æç PHP æ©å±å¯ç¨ï¼%sï¼ã',
- 'Sessions must be enabled.' => 'ä¼è¯å¿
须被å¯ç¨ã',
- 'Session expired, please login again.' => 'ä¼è¯å·²è¿æï¼è¯·éæ°ç»å½ã',
- 'Text length' => 'ææ¬é¿åº¦',
- 'Foreign key has been dropped.' => 'å·²å é¤å¤é®ã',
- 'Foreign key has been altered.' => 'å·²æ´æ¹å¤é®ã',
- 'Foreign key has been created.' => 'å·²å建å¤é®ã',
- 'Foreign key' => 'å¤é®',
- 'Target table' => 'ç®æ 表',
- 'Change' => 'æ´æ¹',
- 'Source' => 'æº',
- 'Target' => 'ç®æ ',
- 'Add column' => 'å¢å å',
- 'Alter' => 'æ´æ¹',
- 'Add foreign key' => 'æ·»å å¤é®',
- 'ON DELETE' => 'ON DELETE',
- 'ON UPDATE' => 'ON UPDATE',
- 'Index Type' => 'ç´¢å¼ç±»å',
- 'Column (length)' => 'åï¼é¿åº¦ï¼',
- 'View has been dropped.' => '已丢å¼è§å¾ã',
- 'View has been altered.' => 'å·²æ´æ¹è§å¾ã',
- 'View has been created.' => 'å·²å建è§å¾ã',
- 'Alter view' => 'æ´æ¹è§å¾',
- 'Create view' => 'å建è§å¾',
- 'Name' => 'åç§°',
- 'Process list' => 'è¿ç¨å表',
- '%d process(es) has been killed.' => '%d 个è¿ç¨è¢«ç»æ¢',
- 'Kill' => 'ç»æ¢',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'åæ°å',
- 'Database schema' => 'æ°æ®åºæ¦è¦',
- 'Create procedure' => 'å建è¿ç¨',
- 'Create function' => 'åå»ºå½æ°',
- 'Routine has been dropped.' => '已丢å¼åç¨åºã',
- 'Routine has been altered.' => 'å·²æ´æ¹åç¨åºã',
- 'Routine has been created.' => 'å·²å建åç¨åºã',
- 'Alter function' => 'æ´æ¹å½æ°',
- 'Alter procedure' => 'æ´æ¹è¿ç¨',
- 'Return type' => 'è¿åç±»å',
- 'Add trigger' => 'å建触åå¨',
- 'Trigger has been dropped.' => '已丢å¼è§¦åå¨ã',
- 'Trigger has been altered.' => 'å·²æ´æ¹è§¦åå¨ã',
- 'Trigger has been created.' => 'å·²å建触åå¨ã',
- 'Alter trigger' => 'æ´æ¹è§¦åå¨',
- 'Create trigger' => 'å建触åå¨',
- 'Time' => 'æ¶é´',
- 'Event' => 'äºä»¶',
- 'MySQL version: %s through PHP extension %s' => 'MySQL çæ¬ï¼%s éè¿ PHP æ©å± %s',
- '%d row(s)' => '%d è¡',
- '~ %s' => '~ %s',
- 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP',
- 'Remove' => 'ç§»é¤',
- 'Are you sure?' => 'ä½ ç¡®å®åï¼',
- 'Privileges' => 'æé',
- 'Create user' => 'åå»ºç¨æ·',
- 'User has been dropped.' => '已丢å¼ç¨æ·ã',
- 'User has been altered.' => 'å·²æ´æ¹ç¨æ·ã',
- 'User has been created.' => 'å·²åå»ºç¨æ·ã',
- 'Hashed' => 'Hashed',
- 'Column' => 'å',
- 'Routine' => 'åç¨åº',
- 'Grant' => 'ææ',
- 'Revoke' => 'åºé¤',
- 'Logged as: %s' => 'ç»å½ä¸ºï¼%s',
- 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => '太大ç POST æ°æ®ãåå°æ°æ®æè
å¢å âpost_max_sizeâ é
ç½®å½ä»¤ã',
- 'Move up' => 'ä¸ç§»',
- 'Move down' => 'ä¸ç§»',
- 'Export' => '导åº',
- 'Tables' => '表',
- 'Data' => 'æ°æ®',
- 'Output' => 'è¾åº',
- 'open' => 'æå¼',
- 'save' => 'ä¿å',
- 'Format' => 'æ ¼å¼',
- 'SQL' => 'SQL',
- 'CSV' => 'CVS',
- 'Functions' => '彿°',
- 'Aggregation' => 'éå',
- 'Event has been dropped.' => '已丢å¼äºä»¶ã',
- 'Event has been altered.' => 'å·²æ´æ¹äºä»¶ã',
- 'Event has been created.' => 'å·²å建äºä»¶ã',
- 'Alter event' => 'æ´æ¹äºä»¶',
- 'Create event' => 'å建äºä»¶',
- 'Start' => 'å¼å§',
- 'End' => 'ç»æ',
- 'Every' => 'æ¯',
- 'Status' => 'ç¶æ',
- 'On completion preserve' => '宿åä¿å',
- 'Events' => 'äºä»¶',
- 'Schedule' => 'è°åº¦',
- 'At given time' => '卿宿¶é´',
- 'Tables have been truncated.' => 'å·²æ¸
空表ã',
- 'Tables have been moved.' => '已转移表ã',
- 'Tables and views' => '表åè§å¾',
- 'Engine' => '弿',
- 'Collation' => 'æ ¡å¯¹',
- 'Data Length' => 'æ°æ®é¿åº¦',
- 'Index Length' => 'ç´¢å¼é¿åº¦',
- 'Data Free' => 'æ°æ®ç©ºé²',
- 'Rows' => 'è¡æ°',
- ',' => ',',
- 'Analyze' => 'åæ',
- 'Optimize' => 'ä¼å',
- 'Check' => 'æ£æ¥',
- 'Repair' => 'ä¿®å¤',
- 'Truncate' => 'æ¸
空',
- 'Move to other database' => '转移å°å
¶å®æ°æ®åº',
- 'Move' => '转移',
- 'Save and continue edit' => 'ä¿åå¹¶ç»§ç»ç¼è¾',
- 'original' => 'åå§',
- '%d item(s) have been affected.' => '%d 个项ç®åå°å½±åã',
- 'whole result' => 'ææç»æ',
- 'clone' => 'å
é',
- 'Tables have been dropped.' => '已丢å¼è¡¨ã',
- 'Clone' => 'å
é',
- 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'è¶
è¿æå¤§å
许çåçå¼ã请å¢å %s å %s ã',
- 'Partition by' => 'ååºç±»å',
- 'Partitions' => 'ååº',
- 'Partition name' => 'ååºå',
- 'Values' => 'å¼',
- '%d row(s) has been imported.' => '%d è¡å·²å¯¼å
¥ã',
- 'Table structure' => 'è¡¨ç»æ',
- '(anywhere)' => 'ï¼ä»»æä½ç½®ï¼',
- 'CSV Import' => 'CSV 导å
¥',
- 'Import' => '导å
¥',
- 'Stop on error' => 'åºéæ¶åæ¢',
- 'Select table' => 'éæ©è¡¨',
- '%.3f s' => '%.3f s',
-);
diff --git a/plus.gif b/plus.gif
deleted file mode 100644
index f16de917..00000000
Binary files a/plus.gif and /dev/null differ
diff --git a/privileges.inc.php b/privileges.inc.php
deleted file mode 100644
index c026b378..00000000
--- a/privileges.inc.php
+++ /dev/null
@@ -1,23 +0,0 @@
-' . lang('Create user') . " ";
-$result = $dbh->query("SELECT User, Host FROM mysql.user ORDER BY Host, User");
-if (!$result) {
- ?>
-
- " />
- :
- :
-
-
-
-query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");
-}
-echo "\n";
-echo " " . lang('Username') . " " . lang('Server') . " \n";
-while ($row = $result->fetch_assoc()) {
- echo '' . lang('edit') . ' ' . htmlspecialchars($row["User"]) . " " . htmlspecialchars($row["Host"]) . " \n";
-}
-echo "
\n";
-$result->free();
diff --git a/procedure.inc.php b/procedure.inc.php
deleted file mode 100644
index 2b9d198b..00000000
--- a/procedure.inc.php
+++ /dev/null
@@ -1,52 +0,0 @@
- array());
-if ($_POST) {
- $row = $_POST;
- $row["fields"] = (array) $row["fields"];
- process_fields($row["fields"]);
-} elseif (strlen($_GET["procedure"])) {
- $row = routine($_GET["procedure"], $routine);
- $row["name"] = $_GET["procedure"];
-}
-?>
-
-
-
-
-
-
-
-: " maxlength="64" />
-
- />
-
-
diff --git a/processlist.inc.php b/processlist.inc.php
deleted file mode 100644
index aea5c2c4..00000000
--- a/processlist.inc.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/schema.inc.php b/schema.inc.php
deleted file mode 100644
index 0d78224e..00000000
--- a/schema.inc.php
+++ /dev/null
@@ -1,113 +0,0 @@
- $match) {
- $table_pos[$match[1]] = array($match[2], $match[3]);
- $table_pos_js[] = "\n\t'" . addcslashes($match[1], "\r\n'\\") . "': [ $match[2], $match[3] ]";
-}
-
-$top = 0;
-$base_left = -1;
-$schema = array();
-$referenced = array();
-$lefts = array();
-$result = $dbh->query("SHOW TABLE STATUS");
-while ($row = $result->fetch_assoc()) {
- if (!isset($row["Engine"])) { // view
- continue;
- }
- $pos = 0;
- $schema[$row["Name"]]["fields"] = array();
- foreach (fields($row["Name"]) as $name => $field) {
- $pos += 1.25;
- $field["pos"] = $pos;
- $schema[$row["Name"]]["fields"][$name] = $field;
- }
- $schema[$row["Name"]]["pos"] = ($table_pos[$row["Name"]] ? $table_pos[$row["Name"]] : array($top, 0));
- if ($row["Engine"] == "InnoDB") {
- foreach (foreign_keys($row["Name"]) as $val) {
- if (!$val["db"]) {
- $left = $base_left;
- if ($table_pos[$row["Name"]][1] || $table_pos[$row["Name"]][1]) {
- $left = min($table_pos[$row["Name"]][1], $table_pos[$val["table"]][1]) - 1;
- } else {
- $base_left -= .1;
- }
- while ($lefts[(string) $left]) {
- $left -= .0001;
- }
- $schema[$row["Name"]]["references"][$val["table"]][(string) $left] = array($val["source"], $val["target"]);
- $referenced[$val["table"]][$row["Name"]][(string) $left] = $val["target"];
- $lefts[(string) $left] = true;
- }
- }
- }
- $top = max($top, $schema[$row["Name"]]["pos"][0] + 2.5 + $pos);
-}
-$result->free();
-
-?>
-
-
- $table) {
- echo "
";
- echo '
' . htmlspecialchars($name) . " \n";
- foreach ($table["fields"] as $field) {
- $val = htmlspecialchars($field["field"]);
- if (preg_match('~char|text~', $field["type"])) {
- $val = "
$val ";
- } elseif (preg_match('~date|time|year~', $field["type"])) {
- $val = "
$val ";
- } elseif (preg_match('~binary|blob~', $field["type"])) {
- $val = "
$val ";
- } elseif (preg_match('~enum|set~', $field["type"])) {
- $val = "
$val ";
- }
- echo ($field["primary"] ? "
$val " : $val) . "
\n";
- }
- foreach ((array) $table["references"] as $target_name => $refs) {
- foreach ($refs as $left => $ref) {
- $left1 = $left - $table_pos[$name][1];
- $i = 0;
- foreach ($ref[0] as $source) {
- echo '
\n";
- }
- }
- }
- foreach ((array) $referenced[$name] as $target_name => $refs) {
- foreach ($refs as $left => $columns) {
- $left1 = $left - $table_pos[$name][1];
- $i = 0;
- foreach ($columns as $target) {
- echo '
\n";
- }
- }
- }
- echo "
\n";
-}
-foreach ($schema as $name => $table) {
- foreach ((array) $table["references"] as $target_name => $refs) {
- foreach ($refs as $left => $ref) {
- $min_pos = $top;
- $max_pos = -10;
- foreach ($ref[0] as $key => $source) {
- $pos1 = $table["pos"][0] + $table["fields"][$source]["pos"];
- $pos2 = $schema[$target_name]["pos"][0] + $schema[$target_name]["fields"][$ref[1][$key]]["pos"];
- $min_pos = min($min_pos, $pos1, $pos2);
- $max_pos = max($max_pos, $pos1, $pos2);
- }
- echo "
\n";
- }
- }
-}
-?>
-
diff --git a/select.inc.php b/select.inc.php
deleted file mode 100644
index f35fa927..00000000
--- a/select.inc.php
+++ /dev/null
@@ -1,306 +0,0 @@
-", "<=", ">=", "!=", "LIKE", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL");
-if (eregi('^(MyISAM|Maria)$', $table_status["Engine"])) {
- $operators[] = "AGAINST";
-}
-$fields = fields($_GET["select"]);
-$rights = array();
-$columns = array();
-unset($text_length);
-foreach ($fields as $key => $field) {
- if (isset($field["privileges"]["select"])) {
- $columns[] = $key;
- if (preg_match('~text|blob~', $field["type"])) {
- $text_length = (isset($_GET["text_length"]) ? $_GET["text_length"] : "100");
- }
- }
- $rights += $field["privileges"];
-}
-
-$select = array();
-$group = array();
-foreach ((array) $_GET["columns"] as $key => $val) {
- if ($val["fun"] == "count" || (in_array($val["col"], $columns, true) && (!$val["fun"] || in_array($val["fun"], $functions) || in_array($val["fun"], $grouping)))) {
- $select[$key] = (in_array($val["col"], $columns, true) ? (!$val["fun"] ? idf_escape($val["col"]) : ($val["fun"] == "distinct" ? "COUNT(DISTINCT " : strtoupper("$val[fun](")) . idf_escape($val["col"]) . ")") : "COUNT(*)");
- if (!in_array($val["fun"], $grouping)) {
- $group[] = $select[$key];
- }
- }
-}
-$where = array();
-foreach ($indexes as $i => $index) {
- if ($index["type"] == "FULLTEXT" && strlen($_GET["fulltext"][$i])) {
- $where[] = "MATCH (" . implode(", ", array_map('idf_escape', $index["columns"])) . ") AGAINST ('" . $dbh->escape_string($_GET["fulltext"][$i]) . "'" . (isset($_GET["boolean"][$i]) ? " IN BOOLEAN MODE" : "") . ")";
- }
-}
-foreach ((array) $_GET["where"] as $val) {
- if (strlen("$val[col]$val[val]") && in_array($val["op"], $operators)) {
- if ($val["op"] == "AGAINST") {
- $where[] = "MATCH (" . idf_escape($val["col"]) . ") AGAINST ('" . $dbh->escape_string($val["val"]) . "' IN BOOLEAN MODE)";
- } elseif (ereg('IN$', $val["op"]) && !strlen($in = process_length($val["val"]))) {
- $where[] = "0";
- } else {
- $cond = " $val[op]" . (ereg('NULL$', $val["op"]) ? "" : (ereg('IN$', $val["op"]) ? " ($in)" : " '" . $dbh->escape_string($val["val"]) . "'")); //! this searches in numeric values too
- if (strlen($val["col"])) {
- $where[] = idf_escape($val["col"]) . $cond;
- } else {
- $cols = array();
- foreach ($fields as $name => $field) {
- if (is_numeric($val["val"]) || !ereg('int|float|double|decimal', $field["type"])) {
- $cols[] = $name;
- }
- }
- $where[] = ($cols ? "(" . implode("$cond OR ", array_map('idf_escape', $cols)) . "$cond)" : "0");
- }
- }
- }
-}
-$order = array();
-foreach ((array) $_GET["order"] as $key => $val) {
- if (in_array($val, $columns, true) || in_array($val, $select, true)) {
- $order[] = idf_escape($val) . (isset($_GET["desc"][$key]) ? " DESC" : "");
- }
-}
-$limit = (isset($_GET["limit"]) ? $_GET["limit"] : "30");
-$from = "FROM " . idf_escape($_GET["select"]) . ($where ? " WHERE " . implode(" AND ", $where) : "") . ($group && count($group) < count($select) ? " GROUP BY " . implode(", ", $group) : "") . ($order ? " ORDER BY " . implode(", ", $order) : "") . (strlen($limit) ? " LIMIT " . intval($limit) . (intval($_GET["page"]) ? " OFFSET " . ($limit * $_GET["page"]) : "") : "");
-
-if ($_POST && !$error) {
- if ($_POST["export"]) {
- dump_headers($_GET["select"]);
- dump_table($_GET["select"], "");
- $query = "SELECT " . ($select ? implode(", ", $select) : "*") . " FROM " . idf_escape($_GET["select"]);
- if (is_array($_POST["check"])) {
- foreach ($_POST["check"] as $val) {
- dump_data($_GET["select"], "INSERT", "$query WHERE " . implode(" AND ", where_check($val)) . " LIMIT 1");
- }
- } else {
- dump_data($_GET["select"], "INSERT", $query . ($where ? " WHERE " . implode(" AND ", $where) : ""));
- }
- exit;
- }
- if (!$_POST["import"]) { // edit
- $result = true;
- $affected = 0;
- $command = ($_POST["delete"] ? ($_POST["all"] && !$where ? "TRUNCATE " : "DELETE FROM ") : ($_POST["clone"] ? "INSERT INTO " : "UPDATE ")) . idf_escape($_GET["select"]);
- if (!$_POST["delete"]) {
- $set = array();
- foreach ($fields as $name => $field) {
- $val = process_input($name, $field);
- if ($_POST["clone"]) {
- $set[] = ($val !== false ? $val : idf_escape($name));
- } elseif ($val !== false) {
- $set[] = "\n" . idf_escape($name) . " = $val";
- }
- }
- $command .= ($_POST["clone"] ? "\nSELECT " . implode(", ", $set) . " FROM " . idf_escape($_GET["select"]) : " SET" . implode(",", $set));
- }
- if (!$_POST["delete"] && !$set) {
- // nothing
- } elseif ($_POST["all"]) {
- $result = queries($command . ($where ? " WHERE " . implode(" AND ", $where) : ""));
- $affected = $dbh->affected_rows;
- } else {
- foreach ((array) $_POST["check"] as $val) {
- parse_str($val, $check);
- $result = queries($command . " WHERE " . implode(" AND ", where($check)) . " LIMIT 1");
- if (!$result) {
- break;
- }
- $affected += $dbh->affected_rows;
- }
- }
- query_redirect(queries(), remove_from_uri("page"), lang('%d item(s) have been affected.', $affected), $result, false, !$result);
- //! display edit page in case of an error
- } elseif (is_string($file = get_file("csv_file"))) {
- $file = preg_replace("~^\xEF\xBB\xBF~", '', $file); //! character set
- $cols = "";
- $rows = array(); //! packet size
- preg_match_all('~("[^"]*"|[^"\\n]+)+~', $file, $matches);
- foreach ($matches[0] as $key => $val) {
- $row = array();
- preg_match_all('~(("[^"]*")+|[^,]*),~', "$val,", $matches2);
- if (!$key && !array_diff($matches2[1], array_keys($fields))) { //! doesn't work with column names containing ",\n
- $cols = " (" . implode(", ", array_map('idf_escape', $matches2[1])) . ")";
- } else {
- foreach ($matches2[1] as $col) {
- $row[] = (!strlen($col) ? "NULL" : "'" . $dbh->escape_string(str_replace('""', '"', preg_replace('~^".*"$~s', '', $col))) . "'");
- }
- $rows[] = "(" . implode(", ", $row) . ")";
- }
- }
- $result = queries("INSERT INTO " . idf_escape($_GET["select"]) . "$cols VALUES " . implode(", ", $rows));
- query_redirect(queries(), remove_from_uri("page"), lang('%d row(s) has been imported.', $dbh->affected_rows), $result, false, !$result);
- } else {
- $error = lang('Unable to upload a file.');
- }
-}
-page_header(lang('Select') . ": " . htmlspecialchars($_GET["select"]), $error);
-
-echo "";
-if (isset($rights["insert"])) {
- //! pass search values forth and back
- echo '' . lang('New item') . ' ';
-}
-echo '' . lang('Table structure') . ' ';
-echo "
\n";
-
-if (!$columns) {
- echo "" . lang('Unable to select the table') . ($fields ? "" : ": " . htmlspecialchars($dbh->error)) . ".
\n";
-} else {
- echo "\n";
- echo "" . lang('Select') . " \n";
- if (strlen($_GET["server"])) {
- echo ' ';
- }
- echo ' ';
- echo ' ';
- echo "\n";
- $i = 0;
- $fun_group = array(lang('Functions') => $functions, lang('Aggregation') => $grouping);
- foreach ($select as $key => $val) {
- $val = $_GET["columns"][$key];
- echo " " . optionlist($fun_group, $val["fun"]) . " ";
- echo " " . optionlist($columns, $val["col"]) . "
\n";
- $i++;
- }
- echo " " . optionlist($fun_group) . " ";
- echo " " . optionlist($columns) . "
\n";
- echo " \n";
-
- echo "" . lang('Search') . " \n";
- foreach ($indexes as $i => $index) {
- if ($index["type"] == "FULLTEXT") {
- echo "(" . implode(" , ", array_map('htmlspecialchars', $index["columns"])) . " ) AGAINST";
- echo ' ';
- echo " " . lang('BOOL') . " ";
- echo " \n";
- }
- }
- $i = 0;
- foreach ((array) $_GET["where"] as $val) {
- if (strlen("$val[col]$val[val]") && in_array($val["op"], $operators)) {
- echo "" . lang('(anywhere)') . " " . optionlist($columns, $val["col"]) . " ";
- echo "" . optionlist($operators, $val["op"]) . " ";
- echo "
\n";
- $i++;
- }
- }
- echo "" . lang('(anywhere)') . " " . optionlist($columns) . " ";
- echo "" . optionlist($operators) . " ";
- echo "
\n";
- echo " \n";
-
- echo "" . lang('Limit') . " ";
- echo hidden_fields(array("order" => (array) $_GET["order"], "desc" => (array) $_GET["desc"]));
- echo "
\n";
-
- if (isset($text_length)) {
- echo "" . lang('Text length') . "
\n";
- }
-
- echo "" . lang('Action') . "
\n";
- echo " \n";
-
- $query = "SELECT " . ($select ? (count($group) < count($select) ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $select) : "*") . " $from";
- echo "" . htmlspecialchars($query) . " " . lang('Edit') . "
\n";
-
- $result = $dbh->query($query);
- if (!$result) {
- echo "" . htmlspecialchars($dbh->error) . "
\n";
- } else {
- echo "\n";
- if (!$result->num_rows) {
- echo "" . lang('No rows.') . "
\n";
- } else {
- $foreign_keys = array();
- foreach (foreign_keys($_GET["select"]) as $foreign_key) {
- foreach ($foreign_key["source"] as $val) {
- $foreign_keys[$val][] = $foreign_key;
- }
- }
-
- echo "\n";
-
- echo "";
- $found_rows = (intval($limit) ? $dbh->result($dbh->query(count($group) < count($select) ? " SELECT FOUND_ROWS()" : "SELECT COUNT(*) FROM " . idf_escape($_GET["select"]) . ($where ? " WHERE " . implode(" AND ", $where) : ""))) : $result->num_rows);
- if (intval($limit) && $found_rows > $limit) {
- $max_page = floor(($found_rows - 1) / $limit);
- echo lang('Page') . ":";
- print_page(0);
- if ($_GET["page"] > 3) {
- echo " ...";
- }
- for ($i = max(1, $_GET["page"] - 2); $i < min($max_page, $_GET["page"] + 3); $i++) {
- print_page($i);
- }
- if ($_GET["page"] + 3 < $max_page) {
- echo " ...";
- }
- print_page($max_page);
- }
- echo " (" . lang('%d row(s)', $found_rows) . ') ' . lang('whole result') . "
\n";
-
- echo ($_GET["db"] != "information_schema" ? "" . lang('Edit') . "
\n" : "");
- echo "" . lang('Export') . " $dump_output $dump_format
\n";
- }
- $result->free();
- echo "" . lang('CSV Import') . "
\n";
- echo " \n";
- }
-}
diff --git a/sql.inc.php b/sql.inc.php
deleted file mode 100644
index d85f7d60..00000000
--- a/sql.inc.php
+++ /dev/null
@@ -1,89 +0,0 @@
-select_db($_GET["db"]);
- }
- while (rtrim($query)) {
- if (!$offset && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) {
- $delimiter = $match[1];
- $query = substr($query, strlen($match[0]));
- } elseif (preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset)) {
- if ($match[0][0] && $match[0][0] != $delimiter) {
- $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']+|\\\\.)*(' . $match[0][0] . '|$)~s'));
- preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $match[0][1] + 1);
- $offset = $match[0][1] + strlen($match[0][0]);
- } else {
- $empty = false;
- echo "" . htmlspecialchars(trim(substr($query, 0, $match[0][1]))) . " \n";
- flush();
- $start = explode(" ", microtime());
- //! don't allow changing of character_set_results, convert encoding of displayed query
- if (!$dbh->multi_query(substr($query, 0, $match[0][1]))) {
- echo "" . lang('Error in query') . ": " . htmlspecialchars($dbh->error) . "
\n";
- if ($_POST["error_stops"]) {
- break;
- }
- } else {
- $end = explode(" ", microtime());
- echo "" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "
\n";
- do {
- $result = $dbh->store_result();
- if (is_object($result)) {
- select($result, $dbh2);
- } else {
- if (preg_match("~^$space*(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU", $query)) {
- unset($_SESSION["databases"][$_GET["server"]]);
- }
- echo "" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "
\n";
- }
- } while ($dbh->next_result());
- }
- $query = substr($query, $match[0][1] + strlen($match[0][0]));
- $offset = 0;
- }
- }
- }
- if ($empty) {
- echo "" . lang('No commands to execute.') . "
\n";
- }
- } else {
- echo "" . lang('Unable to upload a file.') . "
\n";
- }
-}
-?>
-
-
-
-
-
-
- />
-
-
-
-" . lang('File uploads are disabled.') . "\n";
-} else { ?>
-
-
-:
-
-
-
-
-
diff --git a/table.inc.php b/table.inc.php
deleted file mode 100644
index 682730bd..00000000
--- a/table.inc.php
+++ /dev/null
@@ -1,76 +0,0 @@
-query("SHOW COLUMNS FROM " . idf_escape($_GET["table"]));
-if (!$result) {
- $error = htmlspecialchars($dbh->error);
-}
-page_header(lang('Table') . ": " . htmlspecialchars($_GET["table"]), $error);
-
-if ($result) {
- $table_status = table_status($_GET["table"]);
- $auto_increment_only = true;
- echo "\n";
- while ($row = $result->fetch_assoc()) {
- if (!$row["auto_increment"]) {
- $auto_increment_only = false;
- }
- echo "" . htmlspecialchars($row["Field"]) . " $row[Type]" . ($row["Null"] == "YES" ? " NULL " : "") . " \n";
- }
- echo "
\n";
- $result->free();
-
- echo "";
- echo '' . lang('Alter table') . ' ';
- echo ($auto_increment_only ? '' : ' ' . lang('Default values') . ' ');
- echo ' ' . lang('Select table') . ' ';
- echo ' ' . lang('New item') . ' ';
- echo "
\n";
-
- echo "" . lang('Indexes') . " \n";
- $indexes = indexes($_GET["table"]);
- if ($indexes) {
- echo "\n";
- foreach ($indexes as $index) {
- ksort($index["columns"]);
- $print = array();
- foreach ($index["columns"] as $key => $val) {
- $print[] = "" . htmlspecialchars($val) . " " . ($index["lengths"][$key] ? "(" . $index["lengths"][$key] . ")" : "");
- }
- echo "$index[type] " . implode(", ", $print) . " \n";
- }
- echo "
\n";
- }
- echo '' . lang('Alter indexes') . "
\n";
-
- if ($table_status["Engine"] == "InnoDB") {
- echo "" . lang('Foreign keys') . " \n";
- $foreign_keys = foreign_keys($_GET["table"]);
- if ($foreign_keys) {
- echo "\n";
- foreach ($foreign_keys as $name => $foreign_key) {
- echo "";
- echo "" . implode(" , ", array_map('htmlspecialchars', $foreign_key["source"])) . " ";
- $link = (strlen($foreign_key["db"]) ? "" . htmlspecialchars($foreign_key["db"]) . " ." : "") . htmlspecialchars($foreign_key["table"]);
- echo '$link ";
- echo "(" . implode(" , ", array_map('htmlspecialchars', $foreign_key["target"])) . " ) ";
- echo '' . (!strlen($foreign_key["db"]) ? '' . lang('Alter') . ' ' : ' ') . ' ';
- echo " \n";
- }
- echo "
\n";
- }
- echo '' . lang('Add foreign key') . "
\n";
- }
-}
-
-if ($dbh->server_info >= 5) {
- echo "" . lang('Triggers') . " \n";
- $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($_GET["table"], "%_")) . "'");
- if ($result->num_rows) {
- echo "\n";
- while ($row = $result->fetch_assoc()) {
- echo "$row[Timing] $row[Event] " . htmlspecialchars($row["Trigger"]) . " ' . lang('Alter') . " \n";
- }
- echo "
\n";
- }
- $result->free();
- echo '' . lang('Add trigger') . "
\n";
-}
diff --git a/tests/0-login.html b/tests/0-login.html
index bf3dfc40..aac7c98a 100644
--- a/tests/0-login.html
+++ b/tests/0-login.html
@@ -13,12 +13,12 @@
open
- /adminer/_coverage.php?start=1
+ /adminer/coverage.php?start=1
open
- /adminer/?lang=en&username=
+ /adminer/adminer/?lang=en&username=
diff --git a/tests/1-create-database.html b/tests/1-create-database.html
index 91068c6c..6d841511 100644
--- a/tests/1-create-database.html
+++ b/tests/1-create-database.html
@@ -13,7 +13,7 @@
open
- /adminer/
+ /adminer/adminer/
diff --git a/tests/10-clone.html b/tests/10-clone.html
index 953c3942..3f6ad33b 100644
--- a/tests/10-clone.html
+++ b/tests/10-clone.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&select=albums
+ /adminer/adminer/?db=selenium&select=albums
diff --git a/tests/11-reference.html b/tests/11-reference.html
index d196aefb..184a66c0 100644
--- a/tests/11-reference.html
+++ b/tests/11-reference.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&select=albums
+ /adminer/adminer/?db=selenium&select=albums
diff --git a/tests/12-update.html b/tests/12-update.html
index 4c607802..cea1564b 100644
--- a/tests/12-update.html
+++ b/tests/12-update.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&edit=albums&where%5Bid%5D=2
+ /adminer/adminer/?db=selenium&edit=albums&where%5Bid%5D=2
diff --git a/tests/13-delete.html b/tests/13-delete.html
index 4c7f9f50..9e5585a0 100644
--- a/tests/13-delete.html
+++ b/tests/13-delete.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&edit=albums&where%5Bid%5D=2
+ /adminer/adminer/?db=selenium&edit=albums&where%5Bid%5D=2
diff --git a/tests/14-truncate.html b/tests/14-truncate.html
index 1ee23570..5fed08fd 100644
--- a/tests/14-truncate.html
+++ b/tests/14-truncate.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&select=albums
+ /adminer/adminer/?db=selenium&select=albums
diff --git a/tests/15-privileges.html b/tests/15-privileges.html
index ebbd948b..5f5b7519 100644
--- a/tests/15-privileges.html
+++ b/tests/15-privileges.html
@@ -13,7 +13,7 @@
open
- /adminer/?user=
+ /adminer/adminer/?user=
diff --git a/tests/16-processlist.html b/tests/16-processlist.html
index 3af8f801..e9c58348 100644
--- a/tests/16-processlist.html
+++ b/tests/16-processlist.html
@@ -13,7 +13,7 @@
open
- /adminer/?processlist=
+ /adminer/adminer/?processlist=
diff --git a/tests/17-export.html b/tests/17-export.html
index b3aa14d5..07b5a805 100644
--- a/tests/17-export.html
+++ b/tests/17-export.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&dump=
+ /adminer/adminer/?db=selenium&dump=
diff --git a/tests/18-events.html b/tests/18-events.html
index 1c501c48..dfbd4fa2 100644
--- a/tests/18-events.html
+++ b/tests/18-events.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&event=
+ /adminer/adminer/?db=selenium&event=
diff --git a/tests/19-procedures.html b/tests/19-procedures.html
index 0d09e087..0d249ee3 100644
--- a/tests/19-procedures.html
+++ b/tests/19-procedures.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&procedure=
+ /adminer/adminer/?db=selenium&procedure=
diff --git a/tests/2-create-table.html b/tests/2-create-table.html
index 3ced7a21..1c1e02f7 100644
--- a/tests/2-create-table.html
+++ b/tests/2-create-table.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium
+ /adminer/adminer/?db=selenium
diff --git a/tests/20-partitioning.html b/tests/20-partitioning.html
index 37fea341..2e459cec 100644
--- a/tests/20-partitioning.html
+++ b/tests/20-partitioning.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&table=interprets
+ /adminer/adminer/?db=selenium&table=interprets
diff --git a/tests/3-create-index.html b/tests/3-create-index.html
index 2c22dbbb..fe858b2e 100644
--- a/tests/3-create-index.html
+++ b/tests/3-create-index.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&table=interprets
+ /adminer/adminer/?db=selenium&table=interprets
diff --git a/tests/4-create-table-2.html b/tests/4-create-table-2.html
index 628c1e16..87afb8bd 100644
--- a/tests/4-create-table-2.html
+++ b/tests/4-create-table-2.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&table=interprets&lang=en
+ /adminer/adminer/?db=selenium&table=interprets&lang=en
diff --git a/tests/5-foreign-key.html b/tests/5-foreign-key.html
index 0c357dbc..1eabcee8 100644
--- a/tests/5-foreign-key.html
+++ b/tests/5-foreign-key.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&table=albums
+ /adminer/adminer/?db=selenium&table=albums
diff --git a/tests/6-alter-table.html b/tests/6-alter-table.html
index eb8a1f91..37703ab0 100644
--- a/tests/6-alter-table.html
+++ b/tests/6-alter-table.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&table=interprets
+ /adminer/adminer/?db=selenium&table=interprets
diff --git a/tests/7-create-trigger.html b/tests/7-create-trigger.html
index fd7aaa71..92e1c3a1 100644
--- a/tests/7-create-trigger.html
+++ b/tests/7-create-trigger.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&trigger=albums
+ /adminer/adminer/?db=selenium&trigger=albums
diff --git a/tests/8-create-view.html b/tests/8-create-view.html
index f0e24f5b..ff9d30a8 100644
--- a/tests/8-create-view.html
+++ b/tests/8-create-view.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&createv=
+ /adminer/adminer/?db=selenium&createv=
diff --git a/tests/9-insert.html b/tests/9-insert.html
index 48b8c990..ce639aac 100644
--- a/tests/9-insert.html
+++ b/tests/9-insert.html
@@ -13,7 +13,7 @@
open
- /adminer/?db=selenium&edit=interprets
+ /adminer/adminer/?db=selenium&edit=interprets
@@ -33,7 +33,7 @@
open
- /adminer/?db=selenium&edit=albums
+ /adminer/adminer/?db=selenium&edit=albums
diff --git a/tests/logout.html b/tests/logout.html
index 45398feb..1e1480cd 100644
--- a/tests/logout.html
+++ b/tests/logout.html
@@ -13,7 +13,7 @@
open
- /adminer/
+ /adminer/adminer/
@@ -38,7 +38,7 @@
open
- /adminer/_coverage.php
+ /adminer/coverage.php
diff --git a/trigger.inc.php b/trigger.inc.php
deleted file mode 100644
index 9a86fdf9..00000000
--- a/trigger.inc.php
+++ /dev/null
@@ -1,45 +0,0 @@
- $_GET["trigger"]));
-
-$row = array("Trigger" => "$_GET[trigger]_bi");
-if ($_POST) {
- $row = $_POST;
-} elseif (strlen($_GET["name"])) {
- $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($_GET["trigger"], "%_")) . "'");
- while ($row = $result->fetch_assoc()) {
- if ($row["Trigger"] === $_GET["name"]) {
- break;
- }
- }
- $result->free();
-}
-?>
-
-
-
-
-
-
-
-
- />
-
-
diff --git a/up.gif b/up.gif
deleted file mode 100644
index 08980336..00000000
Binary files a/up.gif and /dev/null differ
diff --git a/user.inc.php b/user.inc.php
deleted file mode 100644
index 59fa922c..00000000
--- a/user.inc.php
+++ /dev/null
@@ -1,174 +0,0 @@
- array("All privileges" => ""));
-$result = $dbh->query("SHOW PRIVILEGES");
-while ($row = $result->fetch_assoc()) {
- if ($row["Privilege"] == "Grant option") {
- $privileges[""]["Grant option"] = $row["Comment"];
- } else {
- foreach (explode(",", $row["Context"]) as $context) {
- $privileges[$context][$row["Privilege"]] = $row["Comment"];
- }
- }
-}
-$result->free();
-$privileges["Server Admin"] += $privileges["File access on server"];
-$privileges["Databases"]["Create routine"] = $privileges["Procedures"]["Create routine"];
-$privileges["Columns"] = array();
-foreach (array("Select", "Insert", "Update", "References") as $val) {
- $privileges["Columns"][$val] = $privileges["Tables"][$val];
-}
-unset($privileges["Server Admin"]["Usage"]);
-unset($privileges["Procedures"]["Create routine"]);
-foreach ($privileges["Tables"] as $key => $val) {
- unset($privileges["Databases"][$key]);
-}
-
-function grant($grant, $columns) {
- return preg_replace('~(GRANT OPTION)\\([^)]*\\)~', '\\1', implode("$columns, ", $grant) . $columns);
-}
-
-$new_grants = array();
-if ($_POST) {
- foreach ($_POST["objects"] as $key => $val) {
- $new_grants[$val] = ((array) $new_grants[$val]) + ((array) $_POST["grants"][$key]);
- }
-}
-$grants = array();
-$old_pass = "";
-if (isset($_GET["host"]) && ($result = $dbh->query("SHOW GRANTS FOR '" . $dbh->escape_string($_GET["user"]) . "'@'" . $dbh->escape_string($_GET["host"]) . "'"))) { //! Use information_schema for MySQL 5 - column names in column privileges are not escaped
- while ($row = $result->fetch_row()) {
- if (preg_match('~GRANT (.*) ON (.*) TO ~', $row[0], $match) && preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~', $match[1], $matches, PREG_SET_ORDER)) { //! escape the part between ON and TO
- foreach ($matches as $val) {
- $grants["$match[2]$val[2]"][$val[1]] = true;
- if (preg_match('~ WITH GRANT OPTION~', $row[0])) { //! don't check inside strings and identifiers
- $grants["$match[2]$val[2]"]["GRANT OPTION"] = true;
- }
- }
- }
- if (preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~", $row[0], $match)) {
- $old_pass = $match[1];
- }
- }
- $result->free();
-}
-
-if ($_POST && !$error) {
- $old_user = (isset($_GET["host"]) ? $dbh->escape_string($_GET["user"]) . "'@'" . $dbh->escape_string($_GET["host"]) : "");
- $new_user = $dbh->escape_string($_POST["user"]) . "'@'" . $dbh->escape_string($_POST["host"]);
- $pass = $dbh->escape_string($_POST["pass"]);
- if ($_POST["drop"]) {
- query_redirect("DROP USER '$old_user'", $SELF . "privileges=", lang('User has been dropped.'));
- } else {
- if ($old_user == $new_user) {
- queries("SET PASSWORD FOR '$new_user' = " . ($_POST["hashed"] ? "'$pass'" : "PASSWORD('$pass')"));
- } else {
- $error = !queries(($dbh->server_info < 5 ? "GRANT USAGE ON *.* TO" : "CREATE USER") . " '$new_user' IDENTIFIED BY" . ($_POST["hashed"] ? " PASSWORD" : "") . " '$pass'");
- }
- if (!$error) {
- $revoke = array();
- foreach ($new_grants as $object => $grant) {
- if (isset($_GET["grant"])) {
- $grant = array_filter($grant);
- }
- $grant = array_keys($grant);
- if (isset($_GET["grant"])) {
- $revoke = array_diff(array_keys(array_filter($new_grants[$object], 'strlen')), $grant);
- } elseif ($old_user == $new_user) {
- $old_grant = array_keys((array) $grants[$object]);
- $revoke = array_diff($old_grant, $grant);
- $grant = array_diff($grant, $old_grant);
- unset($grants[$object]);
- }
- if (preg_match('~^(.+)\\s*(\\(.*\\))?$~U', $object, $match) && (
- ($grant && !queries("GRANT " . grant($grant, $match[2]) . " ON $match[1] TO '$new_user'")) //! SQL injection
- || ($revoke && !queries("REVOKE " . grant($revoke, $match[2]) . " ON $match[1] FROM '$new_user'"))
- )) {
- $error = true;
- break;
- }
- }
- }
- if (!$error && isset($_GET["host"])) {
- if ($old_user != $new_user) {
- queries("DROP USER '$old_user'");
- } elseif (!isset($_GET["grant"])) {
- foreach ($grants as $object => $revoke) {
- if (preg_match('~^(.+)(\\(.*\\))?$~U', $object, $match)) {
- queries("REVOKE " . grant(array_keys($revoke), $match[2]) . " ON $match[1] FROM '$new_user'");
- }
- }
- }
- }
- query_redirect(queries(), $SELF . "privileges=", (isset($_GET["host"]) ? lang('User has been altered.') : lang('User has been created.')), !$error, false, $error);
- if ($old_user != $new_user) {
- $dbh->query("DROP USER '$new_user'");
- }
- }
-}
-page_header((isset($_GET["host"]) ? lang('Username') . ": " . htmlspecialchars("$_GET[user]@$_GET[host]") : lang('Create user')), $error, array("privileges" => lang('Privileges')));
-
-if ($_POST) {
- $row = $_POST;
- $grants = $new_grants;
-} else {
- $row = $_GET + array("host" => "localhost");
- $row["pass"] = $old_pass;
- if (strlen($old_pass)) {
- $row["hashed"] = true;
- }
- $grants[""] = true;
-}
-
-?>
-
-
-
-\n";
-echo "" . lang('Privileges') . " ";
-$i = 0;
-foreach ($grants as $object => $grant) {
- echo '' . ($object != "*.*" ? ' ' : ' *.*') . ' '; //! separate db, table, columns, PROCEDURE|FUNCTION, routine
- //! JS checkbox for all
- $i++;
-}
-echo " \n";
-foreach (array(
- "" => "",
- "Server Admin" => lang('Server'),
- "Databases" => lang('Database'),
- "Tables" => lang('Table'),
- "Columns" => lang('Column'),
- "Procedures" => lang('Routine'),
-) as $context => $desc) {
- foreach ((array) $privileges[$context] as $privilege => $comment) {
- echo "$desc ' . htmlspecialchars($privilege) . " ";
- $i = 0;
- foreach ($grants as $object => $grant) {
- $name = '"grants[' . $i . '][' . htmlspecialchars(strtoupper($privilege)) . ']"';
- $value = $grant[strtoupper($privilege)];
- if ($context == "Server Admin" && $object != (isset($grants["*.*"]) ? "*.*" : "")) {
- echo " ";
- } elseif (isset($_GET["grant"])) {
- echo "" . lang('Grant') . " " . lang('Revoke') . " ";
- } else {
- echo " ";
- }
- $i++;
- }
- echo " \n";
- }
-}
-echo "\n";
-?>
-
-
-
- />
-
-
diff --git a/view.inc.php b/view.inc.php
deleted file mode 100644
index c4d8ec7c..00000000
--- a/view.inc.php
+++ /dev/null
@@ -1,5 +0,0 @@
-" . htmlspecialchars($view["select"]) . "\n";
-echo '' . lang('Alter view') . "
\n";