+++ /dev/null
-<?php
-include dirname(__FILE__) . "/include/version.inc.php";
-include dirname(__FILE__) . "/externals/jsmin-php/jsmin.php";
-
-function add_apo_slashes($s) {
- return addcslashes($s, "\\'");
-}
-
-function remove_lang($match) {
- global $translations;
- $idf = strtr($match[2], array("\\'" => "'", "\\\\" => "\\"));
- $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) ? "<?php" : "");
- } elseif (preg_match('~\\s*(\\$pos = .*)~', $return, $match2)) {
- return "function lang(\$translation, \$number) {\n\t" . str_replace('$LANG', "'$_COOKIE[lang]'", $match2[1]) . "\n\treturn sprintf(\$translation[\$pos], \$number);\n}\n";
- } else {
- echo "lang() not found\n";
- }
-}
-
-function short_identifier($number, $chars) {
- $return = '';
- while ($number >= 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("<?php switch_lang(); ?>\n", "", $file);
- $file = str_replace('<?php echo $LANG; ?>', $_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~', '<?php echo ' . $replace . '"; ?>', $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")) . '<?php
- } elseif ($_GET["file"] == "functions.js") {
- header("Content-Type: text/javascript");
- ?>' . JSMin::minify(file_get_contents(dirname(__FILE__) . "/functions.js")) . '<?php
- } else {
- header("Content-Type: image/gif");
- switch ($_GET["file"]) {
- case "arrow.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/arrow.gif")) . '"); break;
- case "up.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/up.gif")) . '"); break;
- case "down.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/down.gif")) . '"); break;
- case "plus.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/plus.gif")) . '"); break;
- case "cross.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/cross.gif")) . '"); break;
- }
- }
- exit;
-}', $file);
-$file = str_replace("externals/jush/", "http://jush.sourceforge.net/", $file);
-$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
-$file = php_shrink($file);
-fwrite(fopen($filename, "w"), $file);
-echo "$filename created.\n";
+++ /dev/null
-<?php
-error_reporting(E_ALL & ~E_NOTICE);
-if (!ini_get("session.auto_start")) {
- session_name("adminer_sid");
- session_set_cookie_params(ini_get("session.cookie_lifetime"), preg_replace('~_coverage\\.php(\\?.*)?$~', '', $_SERVER["REQUEST_URI"]));
- session_start();
-}
-
-function xhtml_open_tags($s) {
- $return = array();
- preg_match_all('~<([^>]+)~', $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 "<p>Xdebug has to be enabled.</p>\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("<br />", 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 "<div" . ($prev_color ? " style='background-color: $prev_color;'" : "") . ">" . $s;
- $open_tags = xhtml_open_tags($s);
- foreach (array_reverse($open_tags) as $tag) {
- echo "</" . preg_replace('~ .*~', '', $tag) . ">";
- }
- echo "</div>\n";
- $s = ($open_tags ? "<" . implode("><", $open_tags) . ">" : "");
- $prev_color = $color;
- }
- $s .= "$line<br />\n";
- }
-} else {
- echo "<table border='0' cellspacing='0' cellpadding='1'>\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 "<tr><td align='right' style='background-color: " . ($ratio < 50 ? "Red" : ($ratio < 75 ? "#FFEA20" : "#A7FC9D")) . ";'>$ratio%</td><td><a href='_coverage.php?filename=$filename'>$filename</a></td></tr>\n";
- }
- }
- echo "</table>\n";
- echo "<p><a href='_coverage.php?start=1'>Start new coverage</a> (requires <a href='http://www.xdebug.org'>Xdebug</a>)</p>\n";
-}
+++ /dev/null
-<?php
-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 _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"), "<?php\n\$translations = array(\n$s);\n");
- echo "$filename updated.\n";
-}
--- /dev/null
+<?php
+page_header(lang('Call') . ": " . htmlspecialchars($_GET["call"]), $error);
+
+$routine = routine($_GET["call"], (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE"));
+$in = array();
+$out = array();
+foreach ($routine["fields"] as $i => $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 "<p class='error'>" . htmlspecialchars($dbh->error) . "</p>\n";
+ } else {
+ do {
+ $result = $dbh->store_result();
+ if (is_object($result)) {
+ select($result);
+ } else {
+ echo "<p class='message'>" . lang('Routine has been called, %d row(s) affected.', $dbh->affected_rows) . "</p>\n";
+ }
+ } while ($dbh->next_result());
+ if ($out) {
+ select($dbh->query("SELECT " . implode(", ", $out)));
+ }
+ }
+}
+?>
+
+<form action="" method="post">
+<?php
+if ($in) {
+ echo "<table cellspacing='0'>\n";
+ foreach ($in as $key) {
+ $field = $routine["fields"][$key];
+ echo "<tr><th>" . htmlspecialchars($field["field"]) . "</th>";
+ $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 "</td></tr>\n";
+ }
+ echo "</table>\n";
+}
+?>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Call'); ?>" />
+</p>
+</form>
--- /dev/null
+<?php
+$partition_by = array('HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY', 'RANGE', 'LIST');
+
+if (strlen($_GET["create"])) {
+ $orig_fields = fields($_GET["create"]);
+}
+
+if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) {
+ if ($_POST["drop"]) {
+ query_redirect("DROP TABLE " . idf_escape($_GET["create"]), substr($SELF, 0, -1), lang('Table has been dropped.'));
+ } else {
+ $auto_increment_index = " PRIMARY KEY";
+ if (strlen($_GET["create"]) && strlen($_POST["fields"][$_POST["auto_increment_col"]]["orig"])) {
+ foreach (indexes($_GET["create"]) as $index) {
+ foreach ($index["columns"] as $column) {
+ if ($column === $_POST["fields"][$_POST["auto_increment_col"]]["orig"]) {
+ $auto_increment_index = "";
+ break 2;
+ }
+ }
+ if ($index["type"] == "PRIMARY") {
+ $auto_increment_index = " UNIQUE";
+ }
+ }
+ }
+ $fields = array();
+ ksort($_POST["fields"]);
+ $after = "FIRST";
+ foreach ($_POST["fields"] as $key => $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 "<p class='error'>" . htmlspecialchars(lang('Maximum number of allowed fields exceeded. Please increase %s and %s.', 'suhosin.post.max_vars', 'suhosin.request.max_vars')) . "</p>\n";
+}
+?>
+
+<form action="" method="post" id="form">
+<p>
+<?php echo lang('Table name'); ?>: <input name="name" maxlength="64" value="<?php echo htmlspecialchars($row["name"]); ?>" />
+<select name="Engine"><option value="">(<?php echo lang('engine'); ?>)</option><?php echo optionlist($engines, $row["Engine"]); ?></select>
+<select name="Collation"><option value="">(<?php echo lang('collation'); ?>)</option><?php echo optionlist($collations, $row["Collation"]); ?></select>
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+</p>
+<table cellspacing="0" id="edit-fields">
+<?php $column_comments = edit_fields($row["fields"], $collations, "TABLE", $suhosin); ?>
+</table>
+<p>
+<?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="4" value="<?php echo intval($row["Auto_increment"]); ?>" />
+<?php echo lang('Comment'); ?>: <input name="Comment" value="<?php echo htmlspecialchars($row["Comment"]); ?>" maxlength="60" />
+<script type="text/javascript">// <![CDATA[
+document.write('<label><input type="checkbox"<?php if ($column_comments) { ?> checked="checked"<?php } ?> onclick="column_comments_click(this.checked);" /><?php echo lang('Show column comments'); ?></label>');
+// ]]></script>
+</p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["create"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+<?php
+if ($dbh->server_info >= 5.1) {
+ $partition_table = ereg('RANGE|LIST', $row["partition_by"]);
+ ?>
+<fieldset><legend><?php echo lang('Partition by'); ?></legend>
+<p>
+<select name="partition_by" onchange="partition_by_change(this);"><option></option><?php echo optionlist($partition_by, $row["partition_by"]); ?></select>
+(<input name="partition" value="<?php echo htmlspecialchars($row["partition"]); ?>" />)
+<?php echo lang('Partitions'); ?>: <input name="partitions" size="2" value="<?php echo htmlspecialchars($row["partitions"]); ?>"<?php echo ($partition_table || !$row["partition_by"] ? " class='hidden'" : ""); ?> />
+</p>
+<table cellspacing="0" id="partition-table"<?php echo ($partition_table ? "" : " class='hidden'"); ?>>
+<thead><tr><th><?php echo lang('Partition name'); ?></th><th><?php echo lang('Values'); ?></th></tr></thead>
+<?php
+foreach ($row["partition_names"] as $key => $val) {
+ echo '<tr>';
+ echo '<td><input name="partition_names[]" value="' . htmlspecialchars($val) . '"' . ($key == count($row["partition_names"]) - 1 ? ' onchange="partition_name_change(this);"' : '') . ' /></td>';
+ echo '<td><input name="partition_values[]" value="' . htmlspecialchars($row["partition_values"][$key]) . '" /></td>';
+ echo "</tr>\n";
+}
+?>
+</table>
+</fieldset>
+<?php } ?>
+</form>
--- /dev/null
+<?php
+$dropped = false;
+if ($_POST && !$error) {
+ if (strlen($_GET["createv"])) {
+ $dropped = query_redirect("DROP VIEW " . idf_escape($_GET["createv"]), substr($SELF, 0, -1), lang('View has been dropped.'), $_POST["drop"], !$_POST["dropped"]);
+ }
+ if (!$_POST["drop"]) {
+ query_redirect("CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", $SELF . "view=" . urlencode($_POST["name"]), (strlen($_GET["createv"]) ? lang('View has been altered.') : lang('View has been created.')));
+ }
+}
+
+page_header((strlen($_GET["createv"]) ? lang('Alter view') : lang('Create view')), $error, array("view" => $_GET["createv"]), $_GET["createv"]);
+
+$row = array();
+if ($_POST) {
+ $row = $_POST;
+} elseif (strlen($_GET["createv"])) {
+ $row = view($_GET["createv"]);
+ $row["name"] = $_GET["createv"];
+}
+?>
+
+<form action="" method="post">
+<p><textarea name="select" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["select"]); ?></textarea></p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<?php if ($dropped) { ?><input type="hidden" name="dropped" value="1" /><?php } ?>
+<?php echo lang('Name'); ?>: <input name="name" value="<?php echo htmlspecialchars($row["name"]); ?>" maxlength="64" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["createv"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+</form>
--- /dev/null
+<?php
+if ($_POST && !$error) {
+ if ($_POST["drop"]) {
+ unset($_SESSION["databases"][$_GET["server"]]);
+ query_redirect("DROP DATABASE " . idf_escape($_GET["db"]), substr(preg_replace('~db=[^&]*&~', '', $SELF), 0, -1), lang('Database has been dropped.'));
+ } elseif ($_GET["db"] !== $_POST["name"]) {
+ unset($_SESSION["databases"][$_GET["server"]]);
+ $dbs = explode("\n", str_replace("\r", "", $_POST["name"]));
+ $failed = false;
+ foreach ($dbs as $db) {
+ if (count($dbs) == 1 || strlen($db)) {
+ if (!queries("CREATE DATABASE " . idf_escape($db) . ($_POST["collation"] ? " COLLATE '" . $dbh->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();
+ }
+}
+?>
+
+<form action="" method="post">
+<p>
+<input name="name" value="<?php echo htmlspecialchars($name); ?>" maxlength="64" />
+<select name="collation"><option value="">(<?php echo lang('collation'); ?>)</option><?php echo optionlist($collations, $collate); ?></select>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["db"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+</form>
--- /dev/null
+<?php
+$tables_views = array_merge((array) $_POST["tables"], (array) $_POST["views"]);
+
+if ($tables_views && !$error) {
+ $result = true;
+ $message = "";
+ $dbh->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]") . "<br />";
+ }
+ }
+ }
+ query_redirect(queries(), substr($SELF, 0, -1), $message, $result, false, !$result);
+}
+
+page_header(lang('Database') . ": " . htmlspecialchars($_GET["db"]), $error, false);
+echo '<p><a href="' . htmlspecialchars($SELF) . 'database=">' . lang('Alter database') . "</a></p>\n";
+echo '<p><a href="' . htmlspecialchars($SELF) . 'schema=">' . lang('Database schema') . "</a></p>\n";
+
+echo "<h3>" . lang('Tables and views') . "</h3>\n";
+$result = $dbh->query("SHOW TABLE STATUS");
+if (!$result->num_rows) {
+ echo "<p class='message'>" . lang('No tables.') . "</p>\n";
+} else {
+ echo "<form action='' method='post'>\n";
+ echo "<table cellspacing='0' class='nowrap'>\n";
+ echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="form_check(this, /^(tables|views)\[/);" /></td><th>' . lang('Table') . '</th><td>' . lang('Engine') . '</td><td>' . lang('Collation') . '</td><td>' . lang('Data Length') . '</td><td>' . lang('Index Length') . '</td><td>' . lang('Data Free') . '</td><td>' . lang('Auto Increment') . '</td><td>' . lang('Rows') . '</td><td>' . lang('Comment') . "</td></tr></thead>\n";
+ while ($row = $result->fetch_assoc()) {
+ $name = $row["Name"];
+ table_comment($row);
+ echo '<tr' . odd() . '><td><input type="checkbox" name="' . (isset($row["Rows"]) ? 'tables' : 'views') . '[]" value="' . htmlspecialchars($name) . '"' . (in_array($name, $tables_views, true) ? ' checked="checked"' : '') . ' onclick="form_uncheck(\'check-all\');" /></td>';
+ if (isset($row["Rows"])) {
+ echo '<th><a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($name) . '">' . htmlspecialchars($name) . "</a></th><td>$row[Engine]</td><td>$row[Collation]</td>";
+ 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 '<td align="right">' . (strlen($row[$key]) ? '<a href="' . htmlspecialchars("$SELF$link=") . urlencode($name) . '">' . str_replace(" ", " ", ($key == "Rows" && $row["Engine"] == "InnoDB" && $val ? lang('~ %s', $val) : $val)) . '</a>' : ' ') . '</td>';
+ }
+ echo "<td>" . (strlen(trim($row["Comment"])) ? htmlspecialchars($row["Comment"]) : " ") . "</td>";
+ } else {
+ echo '<th><a href="' . htmlspecialchars($SELF) . 'view=' . urlencode($name) . '">' . htmlspecialchars($name) . '</a></th><td colspan="8"><a href="' . htmlspecialchars($SELF) . "select=" . urlencode($name) . '">' . lang('View') . '</a></td>';
+ }
+ echo "</tr>\n";
+ }
+ echo "</table>\n";
+ echo "<p><input type='hidden' name='token' value='$token' /><input type='submit' value='" . lang('Analyze') . "' /> <input type='submit' name='optimize' value='" . lang('Optimize') . "' /> <input type='submit' name='check' value='" . lang('Check') . "' /> <input type='submit' name='repair' value='" . lang('Repair') . "' /> <input type='submit' name='truncate' value='" . lang('Truncate') . "'$confirm /> <input type='submit' name='drop' value='" . lang('Drop') . "'$confirm /></p>\n";
+ $dbs = get_databases();
+ if (count($dbs) != 1) {
+ $db = (isset($_POST["target"]) ? $_POST["target"] : $_GET["db"]);
+ echo "<p>" . lang('Move to other database') . ($dbs ? ": <select name='target'>" . optionlist($dbs, $db) . "</select>" : ': <input name="target" value="' . htmlspecialchars($db) . '" />') . " <input type='submit' name='move' value='" . lang('Move') . "' /></p>\n";
+ }
+ echo "</form>\n";
+}
+$result->free();
+
+if ($dbh->server_info >= 5) {
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'createv=">' . lang('Create view') . "</a></p>\n";
+ echo "<h3>" . lang('Routines') . "</h3>\n";
+ $result = $dbh->query("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "'");
+ if ($result->num_rows) {
+ echo "<table cellspacing='0'>\n";
+ while ($row = $result->fetch_assoc()) {
+ echo "<tr>";
+ echo "<td>" . htmlspecialchars($row["ROUTINE_TYPE"]) . "</td>";
+ echo '<th><a href="' . htmlspecialchars($SELF) . ($row["ROUTINE_TYPE"] == "FUNCTION" ? 'callf=' : 'call=') . urlencode($row["ROUTINE_NAME"]) . '">' . htmlspecialchars($row["ROUTINE_NAME"]) . '</a></th>';
+ echo '<td><a href="' . htmlspecialchars($SELF) . ($row["ROUTINE_TYPE"] == "FUNCTION" ? 'function=' : 'procedure=') . urlencode($row["ROUTINE_NAME"]) . '">' . lang('Alter') . "</a></td>";
+ echo "</tr>\n";
+ }
+ echo "</table>\n";
+ }
+ $result->free();
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'procedure=">' . lang('Create procedure') . '</a> <a href="' . htmlspecialchars($SELF) . 'function=">' . lang('Create function') . "</a></p>\n";
+}
+
+if ($dbh->server_info >= 5.1 && ($result = $dbh->query("SHOW EVENTS"))) {
+ echo "<h3>" . lang('Events') . "</h3>\n";
+ if ($result->num_rows) {
+ echo "<table cellspacing='0'>\n";
+ echo "<thead><tr><th>" . lang('Name') . "</th><td>" . lang('Schedule') . "</td><td>" . lang('Start') . "</td><td>" . lang('End') . "</td></tr></thead>\n";
+ while ($row = $result->fetch_assoc()) {
+ echo "<tr>";
+ echo '<th><a href="' . htmlspecialchars($SELF) . 'event=' . urlencode($row["Name"]) . '">' . htmlspecialchars($row["Name"]) . "</a></th>";
+ echo "<td>" . ($row["Execute at"] ? lang('At given time') . "</td><td>" . $row["Execute at"] : lang('Every') . " " . $row["Interval value"] . " " . $row["Interval field"] . "</td><td>$row[Starts]") . "</td>";
+ echo "<td>$row[Ends]</td>";
+ echo "</tr>\n";
+ }
+ echo "</table>\n";
+ }
+ $result->free();
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'event=">' . lang('Create event') . "</a></p>\n";
+}
--- /dev/null
+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; }
--- /dev/null
+<?php
+header("Content-Type: application/octet-stream");
+header("Content-Disposition: attachment; filename=" . friendly_url("$_GET[download]-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"]));
+echo $dbh->result($dbh->query("SELECT " . idf_escape($_GET["field"]) . " FROM " . idf_escape($_GET["download"]) . " WHERE " . implode(" AND ", where($_GET)) . " LIMIT 1"));
--- /dev/null
+<?php
+function tar_file($filename, $contents) {
+ $return = pack("a100a8a8a8a12a12", $filename, 644, 0, 0, decoct(strlen($contents)), decoct(time()));
+ $checksum = 8*32; // space for checksum itself
+ for ($i=0; $i < strlen($return); $i++) {
+ $checksum += ord($return{$i});
+ }
+ $return .= sprintf("%06o", $checksum) . "\0 ";
+ return $return . str_repeat("\0", 512 - strlen($return)) . $contents . str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
+}
+
+if ($_POST) {
+ $ext = dump_headers((strlen($_GET["dump"]) ? $_GET["dump"] : $_GET["db"]), (!strlen($_GET["db"]) || count((array) $_POST["tables"] + (array) $_POST["data"]) > 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 <?php echo $query; ?>;
+ 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_name<?php
+$result = $dbh->query($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;
+<?php
+ }
+ }
+ }
+ exit;
+}
+
+page_header(lang('Export'), "", (strlen($_GET["export"]) ? array("table" => $_GET["export"]) : array()), $_GET["db"]);
+?>
+
+<form action="" method="post">
+<table cellspacing="0">
+<?php
+$db_style = array('USE', 'DROP+CREATE', 'CREATE');
+$table_style = array('DROP+CREATE', 'CREATE');
+$data_style = array('TRUNCATE+INSERT', 'INSERT', 'INSERT+UPDATE');
+if ($dbh->server_info >= 5) {
+ $db_style[] = 'CREATE+ALTER';
+ $table_style[] = 'CREATE+ALTER';
+}
+echo "<tr><th>" . lang('Output') . "</th><td>$dump_output</td></tr>\n";
+echo "<tr><th>" . lang('Format') . "</th><td>$dump_format</td></tr>\n";
+echo "<tr><th>" . lang('Database') . "</th><td><select name='db_style'><option></option>" . optionlist($db_style, (strlen($_GET["db"]) ? '' : 'CREATE')) . "</select></td></tr>\n";
+echo "<tr><th>" . lang('Tables') . "</th><td><select name='table_style'><option></option>" . optionlist($table_style, 'DROP+CREATE') . "</select></td></tr>\n";
+echo "<tr><th>" . lang('Data') . "</th><td><select name='data_style'><option></option>" . optionlist($data_style, 'INSERT') . "</select></td></tr>\n";
+?>
+</table>
+<p><input type="submit" value="<?php echo lang('Export'); ?>" /></p>
+
+<?php
+if (!strlen($_GET["db"])) {
+ echo "<table cellspacing='0'>\n";
+ echo "<thead><tr><th align='left'><label><input type='checkbox' id='check-databases' checked='checked' onclick='form_check(this, /^databases\\[/);' />" . lang('Database') . "</label></th></tr></thead>\n";
+ foreach (get_databases() as $db) {
+ if ($db != "information_schema" || $dbh->server_info < 5) {
+ echo '<tr><td><label><input type="checkbox" name="databases[]" value="' . htmlspecialchars($db) . '" checked="checked" onclick="form_uncheck(\'check-databases\');" />' . htmlspecialchars($db) . "</label></td></tr>\n";
+ }
+ }
+ echo "</table>\n";
+}
+
+if (strlen($_GET["db"])) {
+ $checked = (strlen($_GET["dump"]) ? "" : " checked='checked'");
+ echo "<table cellspacing='0'>\n";
+ echo "<thead><tr>";
+ echo "<th align='left'><label><input type='checkbox' id='check-tables'$checked onclick='form_check(this, /^tables\\[/);' />" . lang('Tables') . "</label></th>";
+ echo "<th align='right'><label>" . lang('Data') . "<input type='checkbox' id='check-data'$checked onclick='form_check(this, /^data\\[/);' /></label></th>";
+ echo "</tr></thead>\n";
+ $views = "";
+ $result = $dbh->query("SHOW TABLE STATUS");
+ while ($row = $result->fetch_assoc()) {
+ $checked = (strlen($_GET["dump"]) && $row["Name"] != $_GET["dump"] ? '' : " checked='checked'");
+ $print = '<tr><td><label><input type="checkbox" name="tables[]" value="' . htmlspecialchars($row["Name"]) . "\"$checked onclick=\"form_uncheck('check-tables');\" />" . htmlspecialchars($row["Name"]) . "</label></td>";
+ if (!$row["Engine"]) {
+ $views .= "$print</tr>\n";
+ } else {
+ echo "$print<td align='right'><label>" . ($row["Engine"] == "InnoDB" && $row["Rows"] ? lang('~ %s', $row["Rows"]) : $row["Rows"]) . '<input type="checkbox" name="data[]" value="' . htmlspecialchars($row["Name"]) . "\"$checked onclick=\"form_uncheck('check-data');\" /></label></td></tr>\n";
+ }
+ }
+ echo "$views</table>\n";
+}
+?>
+</form>
--- /dev/null
+<?php
+$where = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0]) : array()) : where($_GET));
+$update = ($where && !$_POST["clone"]);
+$fields = fields($_GET["edit"]);
+foreach ($fields as $name => $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();
+ }
+}
+?>
+
+<form action="" method="post" enctype="multipart/form-data">
+<?php
+if ($fields) {
+ unset($create);
+ echo "<table cellspacing='0'>\n";
+ foreach ($fields as $name => $field) {
+ echo "<tr><th>" . htmlspecialchars($name) . "</th>";
+ $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 '<label><input type="checkbox" name="on_update[' . htmlspecialchars(bracket_escape($name)) . ']" value="1"' . ($checked ? ' checked="checked"' : '') . ' />' . lang('ON UPDATE CURRENT_TIMESTAMP') . '</label>';
+ }
+ echo "</td></tr>\n";
+ }
+ echo "</table>\n";
+}
+?>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="hidden" name="save" value="1" />
+<?php
+if (isset($_GET["select"])) {
+ hidden_fields(array("check" => (array) $_POST["check"], "clone" => $_POST["clone"], "all" => $_POST["all"]));
+}
+if ($fields) {
+ echo '<input type="submit" value="' . lang('Save') . '" />';
+ if (!isset($_GET["default"]) && !isset($_GET["select"])) {
+ echo '<input type="submit" name="insert" value="' . ($update ? lang('Save and continue edit') : lang('Save and insert next')) . '" />';
+ }
+}
+if ($update) {
+ echo ' <input type="submit" name="delete" value="' . lang('Delete') . '"' . $confirm . '/>';
+}
+?>
+</p>
+</form>
--- /dev/null
+<?php
+$intervals = array("YEAR", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND");
+$statuses = array("ENABLED" => "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();
+}
+?>
+
+<form action="" method="post">
+<table cellspacing="0">
+<tr><th><?php echo lang('Name'); ?></th><td><input name="EVENT_NAME" value="<?php echo htmlspecialchars($row["EVENT_NAME"]); ?>" maxlength="64" /></td></tr>
+<tr><th><?php echo lang('Start'); ?></th><td><input name="STARTS" value="<?php echo htmlspecialchars("$row[EXECUTE_AT]$row[STARTS]"); ?>" /></td></tr>
+<tr><th><?php echo lang('End'); ?></th><td><input name="ENDS" value="<?php echo htmlspecialchars($row["ENDS"]); ?>" /></td></tr>
+<tr><th><?php echo lang('Every'); ?></th><td><input name="INTERVAL_VALUE" value="<?php echo htmlspecialchars($row["INTERVAL_VALUE"]); ?>" size="6" /> <select name="INTERVAL_FIELD"><?php echo optionlist($intervals, $row["INTERVAL_FIELD"]); ?></select></td></tr>
+<tr><th><?php echo lang('Status'); ?></th><td><select name="STATUS"><?php echo optionlist($statuses, $row["STATUS"]); ?></select></td></tr>
+<tr><th><?php echo lang('Comment'); ?></th><td><input name="EVENT_COMMENT" value="<?php echo htmlspecialchars($row["EVENT_COMMENT"]); ?>" maxlength="64" /></td></tr>
+<tr><th> </th><td><label><input type="checkbox" name="ON_COMPLETION" value="PRESERVE"<?php echo ($row["ON_COMPLETION"] == "PRESERVE" ? " checked='checked'" : ""); ?> /><?php echo lang('On completion preserve'); ?></label></td></tr>
+</table>
+<p><textarea name="EVENT_DEFINITION" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["EVENT_DEFINITION"]); ?></textarea></p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["event"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+</form>
--- /dev/null
+<?php
+if ($_POST && !$error && !$_POST["add"] && !$_POST["change"] && !$_POST["change-js"]) {
+ if ($_POST["drop"]) {
+ query_redirect("ALTER TABLE " . idf_escape($_GET["foreign"]) . "\nDROP FOREIGN KEY " . idf_escape($_GET["name"]), $SELF . "table=" . urlencode($_GET["foreign"]), lang('Foreign key has been dropped.'));
+ } else {
+ $source = array_filter($_POST["source"], 'strlen');
+ ksort($source);
+ $target = array();
+ foreach ($source as $key => $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"])));
+?>
+
+<form action="" method="post">
+<p>
+<?php echo lang('Target table'); ?>:
+<select name="table" onchange="this.form['change-js'].value = '1'; this.form.submit();"><?php echo optionlist($tables, $row["table"]); ?></select>
+<input type="hidden" name="change-js" value="" />
+</p>
+<noscript><p><input type="submit" name="change" value="<?php echo lang('Change'); ?>" /></p></noscript>
+<table cellspacing="0">
+<thead><tr><th><?php echo lang('Source'); ?></th><th><?php echo lang('Target'); ?></th></tr></thead>
+<?php
+$j = 0;
+foreach ($row["source"] as $key => $val) {
+ echo "<tr>";
+ echo "<td><select name='source[" . intval($key) . "]'" . ($j == count($row["source"]) - 1 ? " onchange='foreign_add_row(this);'" : "") . "><option></option>" . optionlist($source, $val) . "</select></td>";
+ echo "<td><select name='target[" . intval($key) . "]'>" . optionlist($target, $row["target"][$key]) . "</select></td>";
+ echo "</tr>\n";
+ $j++;
+}
+?>
+</table>
+<p>
+<?php echo lang('ON DELETE'); ?>: <select name="on_delete"><option></option><?php echo optionlist($on_actions, $row["on_delete"]); ?></select>
+<?php echo lang('ON UPDATE'); ?>: <select name="on_update"><option></option><?php echo optionlist($on_actions, $row["on_update"]); ?></select>
+</p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["name"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+<noscript><p><input type="submit" name="add" value="<?php echo lang('Add column'); ?>" /></p></noscript>
+</form>
--- /dev/null
+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 = '<span>' + spans[spans.length - 1].innerHTML + '</span>';
+ 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;
+ }
+}
--- /dev/null
+<?php
+$ignore = array("server", "username", "password");
+$session_name = session_name();
+if (ini_get("session.use_trans_sid") && isset($_POST[$session_name])) {
+ $ignore[] = $session_name;
+}
+if (isset($_POST["server"])) {
+ if (isset($_COOKIE[$session_name]) || isset($_POST[$session_name])) {
+ session_regenerate_id();
+ $_SESSION["usernames"][$_POST["server"]] = $_POST["username"];
+ $_SESSION["passwords"][$_POST["server"]] = $_POST["password"];
+ $_SESSION["tokens"][$_POST["server"]] = rand(1, 1e6);
+ if (count($_POST) == count($ignore)) {
+ $location = ((string) $_GET["server"] === $_POST["server"] ? remove_from_uri() : preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_URI"]) . (strlen($_POST["server"]) ? '?server=' . urlencode($_POST["server"]) : ''));
+ if (!isset($_COOKIE[$session_name])) {
+ $location .= (strpos($location, "?") === false ? "?" : "&") . SID;
+ }
+ header("Location: " . (strlen($location) ? $location : "."));
+ exit;
+ }
+ if ($_POST["token"]) {
+ $_POST["token"] = $_SESSION["tokens"][$_POST["server"]];
+ }
+ }
+ $_GET["server"] = $_POST["server"];
+} elseif (isset($_POST["logout"])) {
+ if ($_POST["token"] != $_SESSION["tokens"][$_GET["server"]]) {
+ page_header(lang('Logout'), lang('Invalid CSRF token. Send the form again.'));
+ page_footer("db");
+ exit;
+ } else {
+ unset($_SESSION["usernames"][$_GET["server"]]);
+ unset($_SESSION["passwords"][$_GET["server"]]);
+ unset($_SESSION["databases"][$_GET["server"]]);
+ unset($_SESSION["tokens"][$_GET["server"]]);
+ unset($_SESSION["history"][$_GET["server"]]);
+ redirect(substr($SELF, 0, -1), lang('Logout successful.'));
+ }
+}
+
+function auth_error($exception = null) {
+ global $ignore, $dbh;
+ $username = $_SESSION["usernames"][$_GET["server"]];
+ unset($_SESSION["usernames"][$_GET["server"]]);
+ page_header(lang('Login'), (isset($username) ? htmlspecialchars($exception ? $exception->getMessage() : ($dbh ? $dbh : lang('Invalid credentials.'))) : (isset($_POST["server"]) ? lang('Sessions must be enabled.') : ($_POST ? lang('Session expired, please login again.') : ""))), null);
+ ?>
+ <form action="" method="post">
+ <table cellspacing="0">
+ <tr><th><?php echo lang('Server'); ?></th><td><input name="server" value="<?php echo htmlspecialchars($_GET["server"]); ?>" /></td></tr>
+ <tr><th><?php echo lang('Username'); ?></th><td><input name="username" value="<?php echo htmlspecialchars($username); ?>" /></td></tr>
+ <tr><th><?php echo lang('Password'); ?></th><td><input type="password" name="password" /></td></tr>
+ </table>
+ <p>
+<?php
+ hidden_fields($_POST, $ignore); // expired session
+ foreach ($_FILES as $key => $val) {
+ echo '<input type="hidden" name="files[' . htmlspecialchars($key) . ']" value="' . ($val["error"] ? $val["error"] : base64_encode(file_get_contents($val["tmp_name"]))) . '" />';
+ }
+ ?>
+ <input type="submit" value="<?php echo lang('Login'); ?>" />
+ </p>
+ </form>
+<?php
+ page_footer("auth");
+}
+
+$username = &$_SESSION["usernames"][$_GET["server"]];
+if (!isset($username)) {
+ $username = $_GET["username"];
+}
+$dbh = (isset($username) ? connect() : '');
+unset($username);
+if (is_string($dbh)) {
+ auth_error();
+ exit;
+}
--- /dev/null
+<?php
+function connect_error() {
+ global $dbh, $SELF, $VERSION;
+ if (strlen($_GET["db"])) {
+ page_header(lang('Database') . ": " . htmlspecialchars($_GET["db"]), lang('Invalid database.'), false);
+ } else {
+ page_header(lang('Select database'), "", null);
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'database=">' . lang('Create new database') . "</a></p>\n";
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'privileges=">' . lang('Privileges') . "</a></p>\n";
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'processlist=">' . lang('Process list') . "</a></p>\n";
+ echo "<p>" . lang('MySQL version: %s through PHP extension %s', "<b" . ($dbh->server_info < 4.1 ? " class='binary'" : "") . ">$dbh->server_info</b>", "<b>$dbh->extension</b>") . "</p>\n";
+ echo "<p>" . lang('Logged as: %s', "<b>" . htmlspecialchars($dbh->result($dbh->query("SELECT USER()"))) . "</b>") . "</p>\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");
--- /dev/null
+<?php
+function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
+ global $SELF, $LANG, $VERSION;
+ header("Content-Type: text/html; charset=utf-8");
+ ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php echo $LANG; ?>">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="Content-Script-Type" content="text/javascript" />
+<meta name="robots" content="noindex" />
+<title><?php echo $title . (strlen($title2) ? ": " . htmlspecialchars($title2) : "") . " - " . lang('Adminer'); ?></title>
+<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
+<link rel="stylesheet" type="text/css" href="default.css<?php // Ondrej Valka, http://valka.info ?>" />
+<?php if (file_exists("adminer.css")) { ?>
+<link rel="stylesheet" type="text/css" href="adminer.css" />
+<?php } ?>
+</head>
+
+<body onload="load_jush();<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verify_version('$VERSION');"); ?>">
+<script type="text/javascript" src="functions.js"></script>
+
+<div id="content">
+<?php
+ if (isset($breadcrumb)) {
+ $link = substr(preg_replace('~db=[^&]*&~', '', $SELF), 0, -1);
+ echo '<p id="breadcrumb"><a href="' . (strlen($link) ? htmlspecialchars($link) : ".") . '">' . (isset($_GET["server"]) ? htmlspecialchars($_GET["server"]) : lang('Server')) . '</a> » ';
+ if (is_array($breadcrumb)) {
+ if (strlen($_GET["db"])) {
+ echo '<a href="' . htmlspecialchars(substr($SELF, 0, -1)) . '">' . htmlspecialchars($_GET["db"]) . '</a> » ';
+ }
+ foreach ($breadcrumb as $key => $val) {
+ if (strlen($val)) {
+ echo '<a href="' . htmlspecialchars("$SELF$key=") . ($key != "privileges" ? urlencode($val) : "") . '">' . htmlspecialchars($val) . '</a> » ';
+ }
+ }
+ }
+ echo "$title</p>\n";
+ }
+ echo "<h2>$title" . (strlen($title2) ? ": " . htmlspecialchars($title2) : "") . "</h2>\n";
+ if ($_SESSION["messages"]) {
+ echo "<p class='message'>" . implode("</p>\n<p class='message'>", $_SESSION["messages"]) . "</p>\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 "<p class='error'>$error</p>\n";
+ }
+}
+
+function page_footer($missing = false) {
+ global $SELF, $dbh, $VERSION;
+ ?>
+</div>
+
+<?php switch_lang(); ?>
+<div id="menu">
+<h1><a href="http://www.adminer.org/"><?php echo lang('Adminer'); ?></a> <?php echo $VERSION; ?></h1>
+<div class="version"><a href='http://www.adminer.org/#download' id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? htmlspecialchars($_COOKIE["adminer_version"]) : ""); ?></a></div>
+<?php if ($missing != "auth") { ?>
+<form action="" method="post">
+<p>
+<a href="<?php echo htmlspecialchars($SELF); ?>sql="><?php echo lang('SQL command'); ?></a>
+<a href="<?php echo htmlspecialchars($SELF); ?>dump=<?php echo urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]); ?>"><?php echo lang('Dump'); ?></a>
+<input type="hidden" name="token" value="<?php echo $_SESSION["tokens"][$_GET["server"]]; ?>" />
+<input type="submit" name="logout" value="<?php echo lang('Logout'); ?>" />
+</p>
+</form>
+<form action="">
+<p><?php if (strlen($_GET["server"])) { ?><input type="hidden" name="server" value="<?php echo htmlspecialchars($_GET["server"]); ?>" /><?php } ?>
+<?php if (get_databases()) { ?>
+<select name="db" onchange="this.form.submit();"><option value="">(<?php echo lang('database'); ?>)</option><?php echo optionlist(get_databases(), $_GET["db"]); ?></select>
+<?php } else { ?>
+<input name="db" value="<?php echo htmlspecialchars($_GET["db"]); ?>" /> <input type="submit" value="<?php echo lang('Use'); ?>" />
+<?php } ?>
+<?php if (isset($_GET["sql"])) { ?><input type="hidden" name="sql" value="" /><?php } ?>
+<?php if (isset($_GET["schema"])) { ?><input type="hidden" name="schema" value="" /><?php } ?>
+<?php if (isset($_GET["dump"])) { ?><input type="hidden" name="dump" value="" /><?php } ?>
+</p>
+<?php if (get_databases()) { ?>
+<noscript><p><input type="submit" value="<?php echo lang('Use'); ?>" /></p></noscript>
+<?php } ?>
+</form>
+<?php
+ if ($missing != "db" && strlen($_GET["db"])) {
+ $result = $dbh->query("SHOW TABLE STATUS");
+ if (!$result->num_rows) {
+ echo "<p class='message'>" . lang('No tables.') . "</p>\n";
+ } else {
+ echo "<p>\n";
+ while ($row = $result->fetch_assoc()) {
+ echo '<a href="' . htmlspecialchars($SELF) . 'select=' . urlencode($row["Name"]) . '">' . lang('select') . '</a> ';
+ echo '<a href="' . htmlspecialchars($SELF) . (isset($row["Rows"]) ? 'table' : 'view') . '=' . urlencode($row["Name"]) . '">' . htmlspecialchars($row["Name"]) . "</a><br />\n";
+ }
+ echo "</p>\n";
+ }
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'create=">' . lang('Create new table') . "</a></p>\n";
+ $result->free();
+ }
+ }
+ ?>
+</div>
+
+</body>
+</html>
+<?php
+}
--- /dev/null
+<?php
+function input($name, $field, $value, $separator = "</td><td>") { //! pass empty separator if there are no functions in the whole table
+ global $types;
+ $name = htmlspecialchars(bracket_escape($name));
+ echo "<td" . ($separator ? " class='function'" : "") . ">";
+ if ($field["type"] == "enum") {
+ echo ($separator ? " $separator" : "") . (isset($_GET["select"]) ? ' <label><input type="radio" name="fields[' . $name . ']" value="-1" checked="checked" /><em>' . lang('original') . '</em></label>' : "");
+ if ($field["null"] || isset($_GET["default"])) {
+ echo ' <label><input type="radio" name="fields[' . $name . ']" value=""' . (($field["null"] ? isset($value) : strlen($value)) || isset($_GET["select"]) ? '' : ' checked="checked"') . ' />' . ($field["null"] ? '<em>NULL</em>' : '') . '</label>';
+ }
+ if (!isset($_GET["default"])) {
+ echo '<input type="radio" name="fields[' . $name . ']" value="0"' . ($value === 0 ? ' checked="checked"' : '') . ' />';
+ }
+ 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 ' <label><input type="radio" name="fields[' . $name . ']" value="' . (isset($_GET["default"]) ? (strlen($val) ? htmlspecialchars($val) : " ") : $i+1) . '"' . ($checked ? ' checked="checked"' : '') . ' />' . htmlspecialchars($val) . '</label>';
+ }
+ } 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"]) ? '<select name="function[' . $name . ']">' . (isset($_GET["select"]) ? '<option value="orig">' . lang('original') . '</option>' : '') . optionlist($options, (isset($value) ? (string) $_POST["function"][$name] : null)) . '</select>' : ($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 ' <label><input type="checkbox" name="fields[' . $name . '][' . $i . ']" value="' . (isset($_GET["default"]) ? htmlspecialchars($val) : 1 << $i) . '"' . ($checked ? ' checked="checked"' : '') . $onchange . ' />' . htmlspecialchars($val) . '</label>';
+ }
+ } elseif (strpos($field["type"], "text") !== false) {
+ echo '<textarea name="fields[' . $name . ']" cols="50" rows="12"' . $onchange . '>' . htmlspecialchars($value) . '</textarea>';
+ } elseif (preg_match('~binary|blob~', $field["type"])) {
+ echo (ini_get("file_uploads") ? '<input type="file" name="' . $name . '"' . $onchange . ' />' : 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 '<input name="fields[' . $name . ']" value="' . htmlspecialchars($value) . '"' . ($maxlength ? " maxlength='$maxlength'" : "") . $onchange . ' />';
+ }
+ }
+}
+
+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;
+ ?>
+<td><select name="<?php echo $key; ?>[type]" onchange="editing_type_change(this);"><?php echo optionlist(array_keys($types), $field["type"]); ?></select></td>
+<td><input name="<?php echo $key; ?>[length]" value="<?php echo htmlspecialchars($field["length"]); ?>" size="3" /></td>
+<td><?php echo "<select name=\"$key" . '[collation]"' . (preg_match('~char|text|enum|set~', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')</option>' . optionlist($collations, $field["collation"]) . '</select>' . ($unsigned ? " <select name=\"$key" . '[unsigned]"' . (!$field["type"] || preg_match('~int|float|double|decimal~', $field["type"]) ? "" : " class='hidden'") . '>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : ''); ?></td>
+<?php
+}
+
+function process_type($field, $collate = "COLLATE") {
+ global $dbh, $enum_length, $unsigned;
+ return " $field[type]"
+ . ($field["length"] && !preg_match('~^date|time$~', $field["type"]) ? "(" . process_length($field["length"]) . ")" : "")
+ . (preg_match('~int|float|double|decimal~', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
+ . (preg_match('~char|text|enum|set~', $field["type"]) && $field["collation"] ? " $collate '" . $dbh->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;
+ }
+ }
+ ?>
+<thead><tr>
+<?php if ($type == "PROCEDURE") { ?><td><?php echo lang('IN-OUT'); ?></td><?php } ?>
+<th><?php echo ($type == "TABLE" ? lang('Column name') : lang('Parameter name')); ?></th>
+<td><?php echo lang('Type'); ?></td>
+<td><?php echo lang('Length'); ?></td>
+<td><?php echo lang('Options'); ?></td>
+<?php if ($type == "TABLE") { ?>
+<td><?php echo lang('NULL'); ?></td>
+<td><input type="radio" name="auto_increment_col" value="" /><?php echo lang('Auto Increment'); ?></td>
+<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><?php echo lang('Comment'); ?></td>
+<?php } ?>
+<td><input type="image" name="add[0]" src="plus.gif" alt="+" title="<?php echo lang('Add next'); ?>" /><script type="text/javascript">row_count = <?php echo count($fields); ?>;</script></td>
+</tr></thead>
+<?php
+ foreach ($fields as $i => $field) {
+ $i++;
+ $display = (isset($_POST["add"][$i-1]) || (isset($field["field"]) && !$_POST["drop_col"][$i]));
+ ?>
+<tr<?php echo ($display ? "" : " style='display: none;'"); ?>>
+<?php if ($type == "PROCEDURE") { ?><td><select name="fields[<?php echo $i; ?>][inout]"><?php echo optionlist($inout, $field["inout"]); ?></select></td><?php } ?>
+<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo htmlspecialchars($field["field"]); ?>" maxlength="64" /><?php } ?><input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo htmlspecialchars($field[($_POST ? "orig" : "field")]); ?>" /></th>
+<?php edit_type("fields[$i]", $field, $collations); ?>
+<?php if ($type == "TABLE") { ?>
+<td><input type="checkbox" name="fields[<?php echo $i; ?>][null]" value="1"<?php if ($field["null"]) { ?> checked="checked"<?php } ?> /></td>
+<td><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked="checked"<?php } ?> /></td>
+<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><input name="fields[<?php echo $i; ?>][comment]" value="<?php echo htmlspecialchars($field["comment"]); ?>" maxlength="255" /></td>
+<?php } ?>
+<?php
+ echo "<td><input type='image' name='add[$i]' src='plus.gif' alt='+' title='" . lang('Add next') . "' onclick='return !editing_add_row(this, $allowed);' />";
+ echo " <input type='image' name='drop_col[$i]' src='cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);' />";
+ echo " <input type='image' name='up[$i]' src='up.gif' alt='^' title='" . lang('Move up') . "' />";
+ echo " <input type='image' name='down[$i]' src='down.gif' alt='v' title='" . lang('Move down') . "' />";
+ echo "</td>\n</tr>\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]);
+}
--- /dev/null
+<?php
+function dump_csv($row) {
+ foreach ($row as $key => $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 '<?php
+$fields = array();
+$result = $dbh->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 <?php echo $query; ?>;
+ 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_name<?php
+foreach ($fields as $row) {
+ echo "
+ WHEN '" . $dbh->escape_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 <?php echo idf_escape($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;
+
+<?php
+ //! indexes
+ }
+
+ if ($dbh->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 = "<select name='output'><option value='text'>" . lang('open') . "</option><option value='file'>" . lang('save') . "</option></select>";
+$dump_format = "<select name='format'><option value='sql'>" . lang('SQL') . "</option><option value='csv'>" . lang('CSV') . "</option></select>";
+$max_packet = 0;
--- /dev/null
+<?php
+function idf_escape($idf) {
+ return "`" . str_replace("`", "``", $idf) . "`";
+}
+
+function idf_unescape($idf) {
+ return str_replace("``", "`", $idf);
+}
+
+function bracket_escape($idf, $back = false) {
+ static $trans = array(':' => ':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 .= '<optgroup label="' . htmlspecialchars($k) . '">';
+ }
+ foreach ((is_array($v) ? $v : array($v)) as $val) {
+ $return .= '<option' . ($val === $selected ? ' selected="selected"' : '') . '>' . htmlspecialchars($val) . '</option>';
+ }
+ if (is_array($v)) {
+ $return .= '</optgroup>';
+ }
+ }
+ 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 = " <a href='#$id' onclick=\"return !toggle('$id');\">" . lang('SQL command') . "</a><span id='$id' class='hidden'><br /><code class='jush-sql'>" . htmlspecialchars($query) . '</code><br /><a href="' . htmlspecialchars($SELF) . 'sql=&history=' . count($_SESSION["history"][$_GET["server"]][$_GET["db"]]) . '">' . lang('Edit') . '</a></span>';
+ $_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 : '<a href="' . htmlspecialchars(remove_from_uri("page") . ($page ? "&page=$page" : "")) . '">' . ($page + 1) . "</a>");
+}
+
+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 "<p class='message'>" . lang('No rows.') . "</p>\n";
+ } else {
+ echo "<table cellspacing='0' class='nowrap'>\n";
+ $links = array();
+ $indexes = array();
+ $columns = array();
+ $blobs = array();
+ $types = array();
+ odd('');
+ for ($i=0; $row = $result->fetch_row(); $i++) {
+ if (!$i) {
+ echo "<thead><tr>";
+ 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 "<th>" . htmlspecialchars($field->name) . "</th>";
+ }
+ echo "</tr></thead>\n";
+ }
+ echo "<tr" . odd() . ">";
+ foreach ($row as $key => $val) {
+ if (!isset($val)) {
+ $val = "<i>NULL</i>";
+ } else {
+ if ($blobs[$key] && !is_utf8($val)) {
+ $val = "<i>" . lang('%d byte(s)', strlen($val)) . "</i>"; //! link to download
+ } elseif (!strlen(trim($val))) {
+ $val = " ";
+ } else {
+ $val = nl2br(htmlspecialchars($val));
+ if ($types[$key] == 254) {
+ $val = "<code>$val</code>";
+ }
+ }
+ 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 = '<a href="' . htmlspecialchars($SELF) . $link . '">' . $val . '</a>';
+ }
+ }
+ echo "<td>$val</td>";
+ }
+ echo "</tr>\n";
+ }
+ echo "</table>\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] ? "<em>...</em>" : "");
+}
+
+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 '<input type="hidden" name="' . htmlspecialchars($key) . '" value="' . htmlspecialchars($val) . '" />';
+ }
+ }
+}
--- /dev/null
+<?php
+$langs = array(
+ 'en' => '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 "<form action=''>\n<div id='lang'>";
+ hidden_fields($_GET, array('lang'));
+ echo lang('Language') . ": <select name='lang' onchange='this.form.submit();'>";
+ foreach ($langs as $lang => $val) {
+ echo "<option value='$lang'" . ($LANG == $lang ? " selected='selected'" : "") . ">$val</option>";
+ }
+ echo "</select>\n<noscript><div style='display: inline;'><input type='submit' value='" . lang('Use') . "' /></div></noscript>\n</div>\n</form>\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;
+ }
+ }
+}
--- /dev/null
+<?php
+if (extension_loaded("mysqli")) {
+ class Min_DB extends MySQLi {
+ var $extension = "MySQLi";
+
+ function Min_DB() {
+ parent::init();
+ }
+
+ function connect($server, $username, $password) {
+ list($host, $port) = explode(":", $server, 2);
+ return @$this->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"]);
+ }
+}
--- /dev/null
+<?php
+if (extension_loaded('pdo')) {
+ class Min_PDO extends PDO {
+ var $_result, $server_info, $affected_rows, $error;
+
+ function __construct() {
+ }
+
+ function dsn($dsn, $username, $password) {
+ set_exception_handler('auth_error'); // try/catch is not compatible with PHP 4
+ parent::__construct($dsn, $username, $password);
+ restore_exception_handler();
+ $this->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
+ }
+ }
+}
--- /dev/null
+<?php
+if (extension_loaded($_GET["sqlite_version"] == 2 ? "sqlite" : "sqlite3")) {
+ if ($_GET["sqlite_version"] == 2) {
+
+ class Min_SQLite extends SQLiteDatabase {
+ var $extension = "SQLite";
+
+ function open($filename) {
+ parent::__construct($filename);
+ }
+
+ function query($query) {
+ $result = @parent::query($query, SQLITE_BOTH, $error);
+ if (!$result) {
+ $this->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) {
+}
--- /dev/null
+<?php
+$VERSION = "1.11.0-dev";
--- /dev/null
+<?php
+/** Adminer - Compact MySQL management
+* @link http://www.adminer.org/
+* @author Jakub Vrana, http://php.vrana.cz/
+* @copyright 2007 Jakub Vrana
+* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
+*/
+
+error_reporting(E_ALL & ~E_NOTICE);
+if (!ini_get("session.auto_start")) {
+ session_name("adminer_sid");
+ session_set_cookie_params(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]));
+ session_start();
+}
+if (isset($_SESSION["coverage"])) {
+ function save_coverage() {
+ foreach (xdebug_get_code_coverage() as $filename => $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();
+}
--- /dev/null
+<?php
+$index_types = array("PRIMARY", "UNIQUE", "INDEX", "FULLTEXT");
+$indexes = indexes($_GET["indexes"]);
+if ($_POST && !$error && !$_POST["add"]) {
+ $alter = array();
+ foreach ($_POST["indexes"] as $index) {
+ if (in_array($index["type"], $index_types)) {
+ $columns = array();
+ $lengths = array();
+ $set = array();
+ ksort($index["columns"]);
+ foreach ($index["columns"] as $key => $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 => ""));
+}
+?>
+
+<form action="" method="post">
+<table cellspacing="0">
+<thead><tr><th><?php echo lang('Index Type'); ?></th><th><?php echo lang('Column (length)'); ?></th></tr></thead>
+<?php
+$j = 0;
+foreach ($row["indexes"] as $index) {
+ echo "<tr><td><select name='indexes[$j][type]'" . ($j == count($row["indexes"]) - 1 ? " onchange='indexes_add_row(this);'" : "") . "><option></option>" . optionlist($index_types, $index["type"]) . "</select></td><td>\n";
+ ksort($index["columns"]);
+ foreach ($index["columns"] as $i => $column) {
+ echo "<span><select name='indexes[$j][columns][$i]'" . ($i == count($index["columns"]) ? " onchange='indexes_add_column(this);'" : "") . "><option></option>" . optionlist($fields, $column) . "</select>";
+ echo "<input name='indexes[$j][lengths][$i]' size='2' value=\"" . htmlspecialchars($index["lengths"][$i]) . "\" /> </span>\n";
+ }
+ echo "</td></tr>\n";
+ $j++;
+}
+?>
+</table>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Alter indexes'); ?>" />
+</p>
+<noscript><p><input type="submit" name="add" value="<?php echo lang('Add next'); ?>" /></p></noscript>
+</form>
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Query executed OK, %d row(s) affected.' => 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.'),
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => 'Записаться',
+ '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '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',
+);
--- /dev/null
+<?php
+$translations = array(
+ 'Login' => '登录',
+ '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',
+);
--- /dev/null
+<?php
+page_header(lang('Privileges'));
+echo '<p><a href="' . htmlspecialchars($SELF) . 'user=">' . lang('Create user') . "</a></p>";
+$result = $dbh->query("SELECT User, Host FROM mysql.user ORDER BY Host, User");
+if (!$result) {
+ ?>
+ <form action=""><p>
+ <?php if (strlen($_GET["server"])) { ?><input type="hidden" name="server" value="<?php echo htmlspecialchars($_GET["server"]); ?>" /><?php } ?>
+ <?php echo lang('Username'); ?>: <input name="user" />
+ <?php echo lang('Server'); ?>: <input name="host" value="localhost" />
+ <input type="hidden" name="grant" value="" />
+ <input type="submit" value="<?php echo lang('Edit'); ?>" />
+ </p></form>
+<?php
+ $result = $dbh->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");
+}
+echo "<table cellspacing='0'>\n";
+echo "<thead><tr><th> </th><th>" . lang('Username') . "</th><th>" . lang('Server') . "</th></tr></thead>\n";
+while ($row = $result->fetch_assoc()) {
+ echo '<tr' . odd() . '><td><a href="' . htmlspecialchars($SELF) . 'user=' . urlencode($row["User"]) . '&host=' . urlencode($row["Host"]) . '">' . lang('edit') . '</a></td><td>' . htmlspecialchars($row["User"]) . "</td><td>" . htmlspecialchars($row["Host"]) . "</td></tr>\n";
+}
+echo "</table>\n";
+$result->free();
--- /dev/null
+<?php
+$routine = (isset($_GET["function"]) ? "FUNCTION" : "PROCEDURE");
+
+$dropped = false;
+if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) {
+ if (strlen($_GET["procedure"])) {
+ $dropped = query_redirect("DROP $routine " . idf_escape($_GET["procedure"]), substr($SELF, 0, -1), lang('Routine has been dropped.'), $_POST["drop"], !$_POST["dropped"]);
+ }
+ if (!$_POST["drop"]) {
+ $set = array();
+ $fields = array_filter((array) $_POST["fields"], 'strlen');
+ ksort($fields);
+ foreach ($fields as $field) {
+ if (strlen($field["field"])) {
+ $set[] = (in_array($field["inout"], $inout) ? "$field[inout] " : "") . idf_escape($field["field"]) . process_type($field, "CHARACTER SET");
+ }
+ }
+ query_redirect("CREATE $routine " . idf_escape($_POST["name"])
+ . " (" . implode(", ", $set) . ")"
+ . (isset($_GET["function"]) ? " RETURNS" . process_type($_POST["returns"], "CHARACTER SET") : "")
+ . "\n$_POST[definition]"
+ , substr($SELF, 0, -1), (strlen($_GET["procedure"]) ? lang('Routine has been altered.') : lang('Routine has been created.')));
+ }
+}
+page_header((strlen($_GET["procedure"]) ? (isset($_GET["function"]) ? lang('Alter function') : lang('Alter procedure')) . ": " . htmlspecialchars($_GET["procedure"]) : (isset($_GET["function"]) ? lang('Create function') : lang('Create procedure'))), $error);
+
+$collations = get_vals("SHOW CHARACTER SET");
+$row = array("fields" => 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"];
+}
+?>
+
+<form action="" method="post" id="form">
+<table cellspacing="0">
+<?php edit_fields($row["fields"], $collations, $routine); ?>
+<?php if (isset($_GET["function"])) { ?><tr><td><?php echo lang('Return type'); ?></td><?php echo edit_type("returns", $row["returns"], $collations); ?></tr><?php } ?>
+</table>
+<p><textarea name="definition" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["definition"]); ?></textarea></p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<?php if ($dropped) { ?><input type="hidden" name="dropped" value="1" /><?php } ?>
+<?php echo lang('Name'); ?>: <input name="name" value="<?php echo htmlspecialchars($row["name"]); ?>" maxlength="64" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["procedure"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+</form>
--- /dev/null
+<?php
+if ($_POST && !$error) {
+ $killed = 0;
+ foreach ((array) $_POST["kill"] as $val) {
+ if (queries("KILL " . intval($val))) {
+ $killed++;
+ }
+ }
+ query_redirect(queries(), $SELF . "processlist=", lang('%d process(es) has been killed.', $killed), $killed || !$_POST["kill"], false, !$killed && $_POST["kill"]);
+}
+page_header(lang('Process list'), $error);
+?>
+
+<form action="" method="post">
+<table cellspacing="0">
+<?php
+$result = $dbh->query("SHOW PROCESSLIST");
+for ($i=0; $row = $result->fetch_assoc(); $i++) {
+ if (!$i) {
+ echo "<thead><tr lang='en'><th> </th><th>" . implode("</th><th>", array_keys($row)) . "</th></tr></thead>\n";
+ }
+ echo "<tr" . odd() . "><td><input type='checkbox' name='kill[]' value='$row[Id]' /></td><td>" . implode("</td><td>", $row) . "</td></tr>\n";
+}
+$result->free();
+?>
+</table>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Kill'); ?>" />
+</p>
+</form>
--- /dev/null
+<?php
+page_header(lang('Database schema'), "", array(), $_GET["db"]);
+
+$table_pos = array();
+$table_pos_js = array();
+preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', $_COOKIE["schema"], $matches, PREG_SET_ORDER); //! ':' in table name
+foreach ($matches as $i => $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();
+
+?>
+<div id="schema" style="height: <?php echo $top; ?>em;">
+<script type="text/javascript">
+table_pos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
+em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>;
+document.onmousemove = schema_mousemove;
+document.onmouseup = schema_mouseup;
+</script>
+<?php
+foreach ($schema as $name => $table) {
+ echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;' onmousedown='schema_mousedown(this, event);'>";
+ echo '<a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($name) . '"><strong>' . htmlspecialchars($name) . "</strong></a><br />\n";
+ foreach ($table["fields"] as $field) {
+ $val = htmlspecialchars($field["field"]);
+ if (preg_match('~char|text~', $field["type"])) {
+ $val = "<span class='char'>$val</span>";
+ } elseif (preg_match('~date|time|year~', $field["type"])) {
+ $val = "<span class='date'>$val</span>";
+ } elseif (preg_match('~binary|blob~', $field["type"])) {
+ $val = "<span class='binary'>$val</span>";
+ } elseif (preg_match('~enum|set~', $field["type"])) {
+ $val = "<span class='enum'>$val</span>";
+ }
+ echo ($field["primary"] ? "<em>$val</em>" : $val) . "<br />\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 '<div class="references" title="' . htmlspecialchars($target_name) . "\" id='refs$left-" . ($i++) . "' style='left: $left1" . "em; top: " . $table["fields"][$source]["pos"] . "em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: " . (-$left1) . "em;'></div></div>\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 '<div class="references" title="' . htmlspecialchars($target_name) . "\" id='refd$left-" . ($i++) . "' style='left: $left1" . "em; top: " . $table["fields"][$target]["pos"] . "em; height: 1.25em; background: url(arrow.gif) no-repeat right center;'><div style='height: .5em; border-bottom: 1px solid Gray; width: " . (-$left1) . "em;'></div></div>\n";
+ }
+ }
+ }
+ echo "</div>\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 "<div class='references' id='refl$left' style='left: $left" . "em; top: $min_pos" . "em; padding: .5em 0;' /><div style='border-right: 1px solid Gray; margin-top: 1px; height: " . ($max_pos - $min_pos) . "em;'></div></div>\n";
+ }
+ }
+}
+?>
+</div>
--- /dev/null
+<?php
+$functions = array("char_length", "from_unixtime", "hex", "lower", "round", "sec_to_time", "time_to_sec", "unix_timestamp", "upper");
+$grouping = array("avg", "count", "distinct", "group_concat", "max", "min", "sum");
+$table_status = table_status($_GET["select"]);
+$indexes = indexes($_GET["select"]);
+$operators = array("=", "<", ">", "<=", ">=", "!=", "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 "<p>";
+if (isset($rights["insert"])) {
+ //! pass search values forth and back
+ echo '<a href="' . htmlspecialchars($SELF) . 'edit=' . urlencode($_GET['select']) . '">' . lang('New item') . '</a> ';
+}
+echo '<a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($_GET['select']) . '">' . lang('Table structure') . '</a>';
+echo "</p>\n";
+
+if (!$columns) {
+ echo "<p class='error'>" . lang('Unable to select the table') . ($fields ? "" : ": " . htmlspecialchars($dbh->error)) . ".</p>\n";
+} else {
+ echo "<form action='' id='form'>\n";
+ echo "<fieldset><legend>" . lang('Select') . "</legend>\n";
+ if (strlen($_GET["server"])) {
+ echo '<input type="hidden" name="server" value="' . htmlspecialchars($_GET["server"]) . '" />';
+ }
+ echo '<input type="hidden" name="db" value="' . htmlspecialchars($_GET["db"]) . '" />';
+ echo '<input type="hidden" name="select" value="' . htmlspecialchars($_GET["select"]) . '" />';
+ echo "\n";
+ $i = 0;
+ $fun_group = array(lang('Functions') => $functions, lang('Aggregation') => $grouping);
+ foreach ($select as $key => $val) {
+ $val = $_GET["columns"][$key];
+ echo "<div><select name='columns[$i][fun]'><option></option>" . optionlist($fun_group, $val["fun"]) . "</select>";
+ echo "<select name='columns[$i][col]'><option></option>" . optionlist($columns, $val["col"]) . "</select></div>\n";
+ $i++;
+ }
+ echo "<div><select name='columns[$i][fun]' onchange='this.nextSibling.onchange();'><option></option>" . optionlist($fun_group) . "</select>";
+ echo "<select name='columns[$i][col]' onchange='select_add_row(this);'><option></option>" . optionlist($columns) . "</select></div>\n";
+ echo "</fieldset>\n";
+
+ echo "<fieldset><legend>" . lang('Search') . "</legend>\n";
+ foreach ($indexes as $i => $index) {
+ if ($index["type"] == "FULLTEXT") {
+ echo "(<i>" . implode("</i>, <i>", array_map('htmlspecialchars', $index["columns"])) . "</i>) AGAINST";
+ echo ' <input name="fulltext[' . $i . ']" value="' . htmlspecialchars($_GET["fulltext"][$i]) . '" />';
+ echo "<label><input type='checkbox' name='boolean[$i]' value='1'" . (isset($_GET["boolean"][$i]) ? " checked='checked'" : "") . " />" . lang('BOOL') . "</label>";
+ echo "<br />\n";
+ }
+ }
+ $i = 0;
+ foreach ((array) $_GET["where"] as $val) {
+ if (strlen("$val[col]$val[val]") && in_array($val["op"], $operators)) {
+ echo "<div><select name='where[$i][col]'><option value=''>" . lang('(anywhere)') . "</option>" . optionlist($columns, $val["col"]) . "</select>";
+ echo "<select name='where[$i][op]' onchange='where_change(this);'>" . optionlist($operators, $val["op"]) . "</select>";
+ echo "<input name='where[$i][val]' value=\"" . htmlspecialchars($val["val"]) . '"' . (ereg('NULL$', $val["op"]) ? " class='hidden'" : "") . " /></div>\n";
+ $i++;
+ }
+ }
+ echo "<div><select name='where[$i][col]' onchange='select_add_row(this);'><option value=''>" . lang('(anywhere)') . "</option>" . optionlist($columns) . "</select>";
+ echo "<select name='where[$i][op]' onchange='where_change(this);'>" . optionlist($operators) . "</select>";
+ echo "<input name='where[$i][val]' /></div>\n";
+ echo "</fieldset>\n";
+
+ echo "<fieldset><legend>" . lang('Limit') . "</legend><div>";
+ echo hidden_fields(array("order" => (array) $_GET["order"], "desc" => (array) $_GET["desc"]));
+ echo "<input name='limit' size='3' value=\"" . htmlspecialchars($limit) . "\" /></div></fieldset>\n";
+
+ if (isset($text_length)) {
+ echo "<fieldset><legend>" . lang('Text length') . "</legend><div><input name='text_length' size='3' value=\"" . htmlspecialchars($text_length) . "\" /></div></fieldset>\n";
+ }
+
+ echo "<fieldset><legend>" . lang('Action') . "</legend><div><input type='submit' value='" . lang('Select') . "' /></div></fieldset>\n";
+ echo "</form>\n";
+
+ $query = "SELECT " . ($select ? (count($group) < count($select) ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $select) : "*") . " $from";
+ echo "<p><code class='jush-sql'>" . htmlspecialchars($query) . "</code> <a href='" . htmlspecialchars($SELF) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a></p>\n";
+
+ $result = $dbh->query($query);
+ if (!$result) {
+ echo "<p class='error'>" . htmlspecialchars($dbh->error) . "</p>\n";
+ } else {
+ echo "<form action='' method='post' enctype='multipart/form-data'>\n";
+ if (!$result->num_rows) {
+ echo "<p class='message'>" . lang('No rows.') . "</p>\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 "<table cellspacing='0' class='nowrap'>\n";
+ for ($j=0; $row = $result->fetch_assoc(); $j++) {
+ if (!$j) {
+ echo '<thead><tr><td><input type="checkbox" id="all-page" onclick="form_check(this, /check/);" /></td>';
+ foreach ($row as $key => $val) {
+ $pos = array_search($key, (array) $_GET["order"]);
+ $uri = remove_from_uri($pos !== false ? "(order|desc)%5B$pos%5D" : "");
+ $pos2 = 0;
+ if ($_GET["order"]) {
+ $pos2 = max(array_keys($_GET["order"]));
+ $pos2 += ($pos2 !== $pos ? 1 : 0);
+ }
+ echo '<th onmouseover="popup(this);" onmouseout="popdown(this);"><a href="' . htmlspecialchars(remove_from_uri('(order|desc)[^=]*') . '&order%5B0%5D=' . urlencode($key) . ($_GET["order"] == array($key) && !$_GET["desc"][0] ? '&desc%5B0%5D=1' : '')) . '">' . htmlspecialchars($key) . '</a><span class="hidden">';
+ echo '<a href="' . htmlspecialchars("$uri&order%5B$pos2%5D=" . urlencode($key)) . "\"><img src='up.gif' alt='^' title='" . lang('ASC') . "' /></a>";
+ echo '<a href="' . htmlspecialchars("$uri&order%5B$pos2%5D=" . urlencode($key) . "&desc%5B$pos2%5D=1") . "\"><img src='down.gif' alt='v' title='" . lang('DESC') . "' /></a>";
+ echo '</span></th>';
+ }
+ echo "</tr></thead>\n";
+ }
+ $unique_idf = implode('&', unique_idf($row, $indexes));
+ echo '<tr' . odd() . '><td><input type="checkbox" name="check[]" value="' . $unique_idf . '" onclick="this.form[\'all\'].checked = false; form_uncheck(\'all-page\');" />' . (count($select) == count($group) && $_GET["db"] != "information_schema" ? ' <a href="' . htmlspecialchars($SELF) . 'edit=' . urlencode($_GET['select']) . '&' . $unique_idf . '">' . lang('edit') . '</a></td>' : '');
+ foreach ($row as $key => $val) {
+ if (!isset($val)) {
+ $val = "<i>NULL</i>";
+ } elseif (preg_match('~blob|binary~', $fields[$key]["type"]) && !is_utf8($val)) {
+ $val = '<a href="' . htmlspecialchars($SELF) . 'download=' . urlencode($_GET["select"]) . '&field=' . urlencode($key) . '&' . $unique_idf . '">' . lang('%d byte(s)', strlen($val)) . '</a>';
+ } else {
+ if (!strlen(trim($val))) {
+ $val = " ";
+ } elseif (intval($text_length) > 0 && preg_match('~blob|text~', $fields[$key]["type"])) {
+ $val = shorten_utf8($val, intval($text_length));
+ } else {
+ $val = nl2br(htmlspecialchars($val));
+ if ($fields[$key]["type"] == "char") {
+ $val = "<code>$val</code>";
+ }
+ }
+ foreach ((array) $foreign_keys[$key] as $foreign_key) {
+ if (count($foreign_keys[$key]) == 1 || count($foreign_key["source"]) == 1) {
+ $val = "\">$val</a>";
+ foreach ($foreign_key["source"] as $i => $source) {
+ $val = "&where%5B$i%5D%5Bcol%5D=" . urlencode($foreign_key["target"][$i]) . "&where%5B$i%5D%5Bop%5D=%3D&where%5B$i%5D%5Bval%5D=" . urlencode($row[$source]) . $val;
+ }
+ $val = '<a href="' . htmlspecialchars(strlen($foreign_key["db"]) ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), $SELF) : $SELF) . 'select=' . htmlspecialchars($foreign_key["table"]) . $val; // InnoDB supports non-UNIQUE keys
+ break;
+ }
+ }
+ }
+ echo "<td>$val</td>";
+ }
+ echo "</tr>\n";
+ }
+ echo "</table>\n";
+
+ echo "<p>";
+ $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) . ') <label><input type="checkbox" name="all" value="1" />' . lang('whole result') . "</label></p>\n";
+
+ echo ($_GET["db"] != "information_schema" ? "<fieldset><legend>" . lang('Edit') . "</legend><div><input type='submit' value='" . lang('Edit') . "' /> <input type='submit' name='clone' value='" . lang('Clone') . "' /> <input type='submit' name='delete' value='" . lang('Delete') . "'$confirm /></div></fieldset>\n" : "");
+ echo "<fieldset><legend>" . lang('Export') . "</legend><div>$dump_output $dump_format <input type='submit' name='export' value='" . lang('Export') . "' /></div></fieldset>\n";
+ }
+ $result->free();
+ echo "<fieldset><legend>" . lang('CSV Import') . "</legend><div><input type='hidden' name='token' value='$token' /><input type='file' name='csv_file' /> <input type='submit' name='import' value='" . lang('Import') . "' /></div></fieldset>\n";
+ echo "</form>\n";
+ }
+}
--- /dev/null
+<?php
+if (isset($_POST["query"])) {
+ setcookie("highlight", $_POST["highlight"], strtotime("+1 month"), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]));
+ $_COOKIE["highlight"] = $_POST["highlight"];
+}
+page_header(lang('SQL command'), $error);
+
+if (!$error && $_POST) {
+ if (is_string($query = (isset($_POST["query"]) ? $_POST["query"] : get_file("sql_file")))) {
+ @set_time_limit(0);
+ $query = str_replace("\r", "", $query);
+ $delimiter = ";";
+ $offset = 0;
+ $empty = true;
+ $space = "(\\s+|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)";
+ $dbh2 = (strlen($_GET["db"]) ? connect() : null); // connection for exploring indexes (to not replace FOUND_ROWS()) //! PDO - silent error
+ if (is_object($dbh2)) {
+ $dbh2->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 "<pre class='jush-sql'>" . htmlspecialchars(trim(substr($query, 0, $match[0][1]))) . "</pre>\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 "<p class='error'>" . lang('Error in query') . ": " . htmlspecialchars($dbh->error) . "</p>\n";
+ if ($_POST["error_stops"]) {
+ break;
+ }
+ } else {
+ $end = explode(" ", microtime());
+ echo "<p class='time'>" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "</p>\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 "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "</p>\n";
+ }
+ } while ($dbh->next_result());
+ }
+ $query = substr($query, $match[0][1] + strlen($match[0][0]));
+ $offset = 0;
+ }
+ }
+ }
+ if ($empty) {
+ echo "<p class='message'>" . lang('No commands to execute.') . "</p>\n";
+ }
+ } else {
+ echo "<p class='error'>" . lang('Unable to upload a file.') . "</p>\n";
+ }
+}
+?>
+
+<form action="" method="post">
+<p><textarea name="query" rows="20" cols="80" style="width: 98%;"><?php echo htmlspecialchars($_POST ? $_POST["query"] : (strlen($_GET["history"]) ? $_SESSION["history"][$_GET["server"]][$_GET["db"]][$_GET["history"]] : $_GET["sql"])); ?></textarea></p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Execute'); ?>" />
+<label><input type="checkbox" name="error_stops" value="1"<?php echo ($_POST["error_stops"] ? " checked='checked'" : ""); ?> /><?php echo lang('Stop on error'); ?></label>
+</p>
+</form>
+
+<?php
+if (!ini_get("file_uploads")) {
+ echo "<p>" . lang('File uploads are disabled.') . "</p>\n";
+} else { ?>
+<form action="" method="post" enctype="multipart/form-data">
+<p>
+<?php echo lang('File upload'); ?>: <input type="file" name="sql_file" />
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Execute'); ?>" />
+</p>
+</form>
+<?php } ?>
--- /dev/null
+<?php
+$result = $dbh->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 "<table cellspacing='0'>\n";
+ while ($row = $result->fetch_assoc()) {
+ if (!$row["auto_increment"]) {
+ $auto_increment_only = false;
+ }
+ echo "<tr><th>" . htmlspecialchars($row["Field"]) . "</th><td>$row[Type]" . ($row["Null"] == "YES" ? " <i>NULL</i>" : "") . "</td></tr>\n";
+ }
+ echo "</table>\n";
+ $result->free();
+
+ echo "<p>";
+ echo '<a href="' . htmlspecialchars($SELF) . 'create=' . urlencode($_GET["table"]) . '">' . lang('Alter table') . '</a>';
+ echo ($auto_increment_only ? '' : ' <a href="' . htmlspecialchars($SELF) . 'default=' . urlencode($_GET["table"]) . '">' . lang('Default values') . '</a>');
+ echo ' <a href="' . htmlspecialchars($SELF) . 'select=' . urlencode($_GET["table"]) . '">' . lang('Select table') . '</a>';
+ echo ' <a href="' . htmlspecialchars($SELF) . 'edit=' . urlencode($_GET["table"]) . '">' . lang('New item') . '</a>';
+ echo "</p>\n";
+
+ echo "<h3>" . lang('Indexes') . "</h3>\n";
+ $indexes = indexes($_GET["table"]);
+ if ($indexes) {
+ echo "<table cellspacing='0'>\n";
+ foreach ($indexes as $index) {
+ ksort($index["columns"]);
+ $print = array();
+ foreach ($index["columns"] as $key => $val) {
+ $print[] = "<i>" . htmlspecialchars($val) . "</i>" . ($index["lengths"][$key] ? "(" . $index["lengths"][$key] . ")" : "");
+ }
+ echo "<tr><td>$index[type]</td><td>" . implode(", ", $print) . "</td></tr>\n";
+ }
+ echo "</table>\n";
+ }
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'indexes=' . urlencode($_GET["table"]) . '">' . lang('Alter indexes') . "</a></p>\n";
+
+ if ($table_status["Engine"] == "InnoDB") {
+ echo "<h3>" . lang('Foreign keys') . "</h3>\n";
+ $foreign_keys = foreign_keys($_GET["table"]);
+ if ($foreign_keys) {
+ echo "<table cellspacing='0'>\n";
+ foreach ($foreign_keys as $name => $foreign_key) {
+ echo "<tr>";
+ echo "<td><i>" . implode("</i>, <i>", array_map('htmlspecialchars', $foreign_key["source"])) . "</i></td>";
+ $link = (strlen($foreign_key["db"]) ? "<strong>" . htmlspecialchars($foreign_key["db"]) . "</strong>." : "") . htmlspecialchars($foreign_key["table"]);
+ echo '<td><a href="' . htmlspecialchars(strlen($foreign_key["db"]) ? preg_replace('~db=[^&]*~', "db=" . urlencode($foreign_key["db"]), $SELF) : $SELF) . "table=" . urlencode($foreign_key["table"]) . "\">$link</a>";
+ echo "(<em>" . implode("</em>, <em>", array_map('htmlspecialchars', $foreign_key["target"])) . "</em>)</td>";
+ echo '<td>' . (!strlen($foreign_key["db"]) ? '<a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '&name=' . urlencode($name) . '">' . lang('Alter') . '</a>' : ' ') . '</td>';
+ echo "</tr>\n";
+ }
+ echo "</table>\n";
+ }
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '">' . lang('Add foreign key') . "</a></p>\n";
+ }
+}
+
+if ($dbh->server_info >= 5) {
+ echo "<h3>" . lang('Triggers') . "</h3>\n";
+ $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($_GET["table"], "%_")) . "'");
+ if ($result->num_rows) {
+ echo "<table cellspacing='0'>\n";
+ while ($row = $result->fetch_assoc()) {
+ echo "<tr valign='top'><td>$row[Timing]</td><td>$row[Event]</td><th>" . htmlspecialchars($row["Trigger"]) . "</th><td><a href=\"" . htmlspecialchars($SELF) . 'trigger=' . urlencode($_GET["table"]) . '&name=' . urlencode($row["Trigger"]) . '">' . lang('Alter') . "</a></td></tr>\n";
+ }
+ echo "</table>\n";
+ }
+ $result->free();
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'trigger=' . urlencode($_GET["table"]) . '">' . lang('Add trigger') . "</a></p>\n";
+}
--- /dev/null
+<?php
+$trigger_time = array("BEFORE", "AFTER");
+$trigger_event = array("INSERT", "UPDATE", "DELETE");
+
+$dropped = false;
+if ($_POST && !$error) {
+ if (strlen($_GET["name"])) {
+ $dropped = query_redirect("DROP TRIGGER " . idf_escape($_GET["name"]), $SELF . "table=" . urlencode($_GET["trigger"]), lang('Trigger has been dropped.'), $_POST["drop"], !$_POST["dropped"]);
+ }
+ if (!$_POST["drop"]) {
+ if (in_array($_POST["Timing"], $trigger_time) && in_array($_POST["Event"], $trigger_event)) {
+ query_redirect("CREATE TRIGGER " . idf_escape($_POST["Trigger"]) . " $_POST[Timing] $_POST[Event] ON " . idf_escape($_GET["trigger"]) . " FOR EACH ROW\n$_POST[Statement]", $SELF . "table=" . urlencode($_GET["trigger"]), (strlen($_GET["name"]) ? lang('Trigger has been altered.') : lang('Trigger has been created.')));
+ }
+ }
+}
+page_header((strlen($_GET["name"]) ? lang('Alter trigger') . ": " . htmlspecialchars($_GET["name"]) : lang('Create trigger')), $error, array("table" => $_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();
+}
+?>
+
+<form action="" method="post" id="form">
+<table cellspacing="0">
+<tr><th><?php echo lang('Time'); ?></th><td><select name="Timing" onchange="if (/^<?php echo htmlspecialchars(preg_quote($_GET["trigger"], "/")); ?>_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '<?php echo htmlspecialchars(addcslashes($_GET["trigger"], "\r\n'\\")); ?>_' + this.value.charAt(0).toLowerCase() + this.form['Event'].value.charAt(0).toLowerCase();"><?php echo optionlist($trigger_time, $row["Timing"]); ?></select></td></tr>
+<tr><th><?php echo lang('Event'); ?></th><td><select name="Event" onchange="this.form['Timing'].onchange();"><?php echo optionlist($trigger_event, $row["Event"]); ?></select></td></tr>
+<tr><th><?php echo lang('Name'); ?></th><td><input name="Trigger" value="<?php echo htmlspecialchars($row["Trigger"]); ?>" maxlength="64" /></td></tr>
+</table>
+<p><textarea name="Statement" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["Statement"]); ?></textarea></p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<?php if ($dropped) { ?><input type="hidden" name="dropped" value="1" /><?php } ?>
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["name"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+</form>
--- /dev/null
+<?php
+$privileges = array("" => 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;
+}
+
+?>
+<form action="" method="post">
+<table cellspacing="0">
+<tr><th><?php echo lang('Username'); ?></th><td><input name="user" maxlength="16" value="<?php echo htmlspecialchars($row["user"]); ?>" /></td></tr>
+<tr><th><?php echo lang('Server'); ?></th><td><input name="host" maxlength="60" value="<?php echo htmlspecialchars($row["host"]); ?>" /></td></tr>
+<tr><th><?php echo lang('Password'); ?></th><td><input id="pass" name="pass" value="<?php echo htmlspecialchars($row["pass"]); ?>" /><?php if (!$row["hashed"]) { ?><script type="text/javascript">document.getElementById('pass').type = 'password';</script><?php } ?> <label><input type="checkbox" name="hashed" value="1"<?php if ($row["hashed"]) { ?> checked="checked"<?php } ?> onclick="this.form['pass'].type = (this.checked ? 'text' : 'password');" /><?php echo lang('Hashed'); ?></label></td></tr>
+</table>
+
+<?php
+//! MAX_* limits, REQUIRE
+echo "<table cellspacing='0'>\n";
+echo "<thead><tr><th colspan='2'>" . lang('Privileges') . "</th>";
+$i = 0;
+foreach ($grants as $object => $grant) {
+ echo '<th>' . ($object != "*.*" ? '<input name="objects[' . $i . ']" value="' . htmlspecialchars($object) . '" size="10" />' : '<input type="hidden" name="objects[' . $i . ']" value="*.*" size="10" />*.*') . '</th>'; //! separate db, table, columns, PROCEDURE|FUNCTION, routine
+ //! JS checkbox for all
+ $i++;
+}
+echo "</tr></thead>\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 "<tr" . odd() . "><td" . ($desc ? ">$desc</td><td" : " colspan='2'") . ' title="' . htmlspecialchars($comment) . '"><i>' . htmlspecialchars($privilege) . "</i></td>";
+ $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 "<td> </td>";
+ } elseif (isset($_GET["grant"])) {
+ echo "<td><select name=$name><option></option><option value='1'" . ($value ? " selected='selected'" : "") . ">" . lang('Grant') . "</option><option value='0'" . ($value == "0" ? " selected='selected'" : "") . ">" . lang('Revoke') . "</option></select></td>";
+ } else {
+ echo "<td align='center'><input type='checkbox' name=$name value='1'" . ($value ? " checked='checked'" : "") . " /></td>";
+ }
+ $i++;
+ }
+ echo "</tr>\n";
+ }
+}
+echo "</table>\n";
+?>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (isset($_GET["host"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
+</p>
+</form>
--- /dev/null
+<?php
+page_header(lang('View') . ": " . htmlspecialchars($_GET["view"]));
+$view = view($_GET["view"]);
+echo "<pre class='jush-sql'>" . htmlspecialchars($view["select"]) . "</pre>\n";
+echo '<p><a href="' . htmlspecialchars($SELF) . 'createv=' . urlencode($_GET["view"]) . '">' . lang('Alter view') . "</a></p>\n";
+++ /dev/null
-<?php
-page_header(lang('Call') . ": " . htmlspecialchars($_GET["call"]), $error);
-
-$routine = routine($_GET["call"], (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE"));
-$in = array();
-$out = array();
-foreach ($routine["fields"] as $i => $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 "<p class='error'>" . htmlspecialchars($dbh->error) . "</p>\n";
- } else {
- do {
- $result = $dbh->store_result();
- if (is_object($result)) {
- select($result);
- } else {
- echo "<p class='message'>" . lang('Routine has been called, %d row(s) affected.', $dbh->affected_rows) . "</p>\n";
- }
- } while ($dbh->next_result());
- if ($out) {
- select($dbh->query("SELECT " . implode(", ", $out)));
- }
- }
-}
-?>
-
-<form action="" method="post">
-<?php
-if ($in) {
- echo "<table cellspacing='0'>\n";
- foreach ($in as $key) {
- $field = $routine["fields"][$key];
- echo "<tr><th>" . htmlspecialchars($field["field"]) . "</th>";
- $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 "</td></tr>\n";
- }
- echo "</table>\n";
-}
-?>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Call'); ?>" />
-</p>
-</form>
--- /dev/null
+<?php
+include dirname(__FILE__) . "/adminer/include/version.inc.php";
+include dirname(__FILE__) . "/externals/jsmin-php/jsmin.php";
+
+function add_apo_slashes($s) {
+ return addcslashes($s, "\\'");
+}
+
+function remove_lang($match) {
+ global $translations;
+ $idf = strtr($match[2], array("\\'" => "'", "\\\\" => "\\"));
+ $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) ? "<?php" : "");
+ } elseif (preg_match('~\\s*(\\$pos = .*)~', $return, $match2)) {
+ return "function lang(\$translation, \$number) {\n\t" . str_replace('$LANG', "'$_COOKIE[lang]'", $match2[1]) . "\n\treturn sprintf(\$translation[\$pos], \$number);\n}\n";
+ } else {
+ echo "lang() not found\n";
+ }
+}
+
+function short_identifier($number, $chars) {
+ $return = '';
+ while ($number >= 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("<?php switch_lang(); ?>\n", "", $file);
+ $file = str_replace('<?php echo $LANG; ?>', $_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~', '<?php echo ' . $replace . '"; ?>', $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")) . '<?php
+ } elseif ($_GET["file"] == "functions.js") {
+ header("Content-Type: text/javascript");
+ ?>' . JSMin::minify(file_get_contents(dirname(__FILE__) . "/adminer/functions.js")) . '<?php
+ } else {
+ header("Content-Type: image/gif");
+ switch ($_GET["file"]) {
+ case "arrow.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/adminer/arrow.gif")) . '"); break;
+ case "up.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/adminer/up.gif")) . '"); break;
+ case "down.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/adminer/down.gif")) . '"); break;
+ case "plus.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/adminer/plus.gif")) . '"); break;
+ case "cross.gif": echo base64_decode("' . base64_encode(file_get_contents(dirname(__FILE__) . "/adminer/cross.gif")) . '"); break;
+ }
+ }
+ exit;
+}', $file);
+$file = str_replace("../externals/jush/", "http://jush.sourceforge.net/", $file);
+$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
+$file = php_shrink($file);
+fwrite(fopen($filename, "w"), $file);
+echo "$filename created.\n";
--- /dev/null
+<?php
+error_reporting(E_ALL & ~E_NOTICE);
+if (!ini_get("session.auto_start")) {
+ session_name("adminer_sid");
+ session_set_cookie_params(ini_get("session.cookie_lifetime"), preg_replace('~_coverage\\.php(\\?.*)?$~', '', $_SERVER["REQUEST_URI"]));
+ session_start();
+}
+
+function xhtml_open_tags($s) {
+ $return = array();
+ preg_match_all('~<([^>]+)~', $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 "<p>Xdebug has to be enabled.</p>\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("<br />", 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 "<div" . ($prev_color ? " style='background-color: $prev_color;'" : "") . ">" . $s;
+ $open_tags = xhtml_open_tags($s);
+ foreach (array_reverse($open_tags) as $tag) {
+ echo "</" . preg_replace('~ .*~', '', $tag) . ">";
+ }
+ echo "</div>\n";
+ $s = ($open_tags ? "<" . implode("><", $open_tags) . ">" : "");
+ $prev_color = $color;
+ }
+ $s .= "$line<br />\n";
+ }
+} else {
+ echo "<table border='0' cellspacing='0' cellpadding='1'>\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 "<tr><td align='right' style='background-color: " . ($ratio < 50 ? "Red" : ($ratio < 75 ? "#FFEA20" : "#A7FC9D")) . ";'>$ratio%</td><td><a href='coverage.php?filename=$filename'>$filename</a></td></tr>\n";
+ }
+ echo "</table>\n";
+ echo "<p><a href='coverage.php?start=1'>Start new coverage</a> (requires <a href='http://www.xdebug.org'>Xdebug</a>)</p>\n";
+}
+++ /dev/null
-<?php
-$partition_by = array('HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY', 'RANGE', 'LIST');
-
-if (strlen($_GET["create"])) {
- $orig_fields = fields($_GET["create"]);
-}
-
-if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) {
- if ($_POST["drop"]) {
- query_redirect("DROP TABLE " . idf_escape($_GET["create"]), substr($SELF, 0, -1), lang('Table has been dropped.'));
- } else {
- $auto_increment_index = " PRIMARY KEY";
- if (strlen($_GET["create"]) && strlen($_POST["fields"][$_POST["auto_increment_col"]]["orig"])) {
- foreach (indexes($_GET["create"]) as $index) {
- foreach ($index["columns"] as $column) {
- if ($column === $_POST["fields"][$_POST["auto_increment_col"]]["orig"]) {
- $auto_increment_index = "";
- break 2;
- }
- }
- if ($index["type"] == "PRIMARY") {
- $auto_increment_index = " UNIQUE";
- }
- }
- }
- $fields = array();
- ksort($_POST["fields"]);
- $after = "FIRST";
- foreach ($_POST["fields"] as $key => $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 "<p class='error'>" . htmlspecialchars(lang('Maximum number of allowed fields exceeded. Please increase %s and %s.', 'suhosin.post.max_vars', 'suhosin.request.max_vars')) . "</p>\n";
-}
-?>
-
-<form action="" method="post" id="form">
-<p>
-<?php echo lang('Table name'); ?>: <input name="name" maxlength="64" value="<?php echo htmlspecialchars($row["name"]); ?>" />
-<select name="Engine"><option value="">(<?php echo lang('engine'); ?>)</option><?php echo optionlist($engines, $row["Engine"]); ?></select>
-<select name="Collation"><option value="">(<?php echo lang('collation'); ?>)</option><?php echo optionlist($collations, $row["Collation"]); ?></select>
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-</p>
-<table cellspacing="0" id="edit-fields">
-<?php $column_comments = edit_fields($row["fields"], $collations, "TABLE", $suhosin); ?>
-</table>
-<p>
-<?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="4" value="<?php echo intval($row["Auto_increment"]); ?>" />
-<?php echo lang('Comment'); ?>: <input name="Comment" value="<?php echo htmlspecialchars($row["Comment"]); ?>" maxlength="60" />
-<script type="text/javascript">// <![CDATA[
-document.write('<label><input type="checkbox"<?php if ($column_comments) { ?> checked="checked"<?php } ?> onclick="column_comments_click(this.checked);" /><?php echo lang('Show column comments'); ?></label>');
-// ]]></script>
-</p>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (strlen($_GET["create"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-<?php
-if ($dbh->server_info >= 5.1) {
- $partition_table = ereg('RANGE|LIST', $row["partition_by"]);
- ?>
-<fieldset><legend><?php echo lang('Partition by'); ?></legend>
-<p>
-<select name="partition_by" onchange="partition_by_change(this);"><option></option><?php echo optionlist($partition_by, $row["partition_by"]); ?></select>
-(<input name="partition" value="<?php echo htmlspecialchars($row["partition"]); ?>" />)
-<?php echo lang('Partitions'); ?>: <input name="partitions" size="2" value="<?php echo htmlspecialchars($row["partitions"]); ?>"<?php echo ($partition_table || !$row["partition_by"] ? " class='hidden'" : ""); ?> />
-</p>
-<table cellspacing="0" id="partition-table"<?php echo ($partition_table ? "" : " class='hidden'"); ?>>
-<thead><tr><th><?php echo lang('Partition name'); ?></th><th><?php echo lang('Values'); ?></th></tr></thead>
-<?php
-foreach ($row["partition_names"] as $key => $val) {
- echo '<tr>';
- echo '<td><input name="partition_names[]" value="' . htmlspecialchars($val) . '"' . ($key == count($row["partition_names"]) - 1 ? ' onchange="partition_name_change(this);"' : '') . ' /></td>';
- echo '<td><input name="partition_values[]" value="' . htmlspecialchars($row["partition_values"][$key]) . '" /></td>';
- echo "</tr>\n";
-}
-?>
-</table>
-</fieldset>
-<?php } ?>
-</form>
+++ /dev/null
-<?php
-$dropped = false;
-if ($_POST && !$error) {
- if (strlen($_GET["createv"])) {
- $dropped = query_redirect("DROP VIEW " . idf_escape($_GET["createv"]), substr($SELF, 0, -1), lang('View has been dropped.'), $_POST["drop"], !$_POST["dropped"]);
- }
- if (!$_POST["drop"]) {
- query_redirect("CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", $SELF . "view=" . urlencode($_POST["name"]), (strlen($_GET["createv"]) ? lang('View has been altered.') : lang('View has been created.')));
- }
-}
-
-page_header((strlen($_GET["createv"]) ? lang('Alter view') : lang('Create view')), $error, array("view" => $_GET["createv"]), $_GET["createv"]);
-
-$row = array();
-if ($_POST) {
- $row = $_POST;
-} elseif (strlen($_GET["createv"])) {
- $row = view($_GET["createv"]);
- $row["name"] = $_GET["createv"];
-}
-?>
-
-<form action="" method="post">
-<p><textarea name="select" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["select"]); ?></textarea></p>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<?php if ($dropped) { ?><input type="hidden" name="dropped" value="1" /><?php } ?>
-<?php echo lang('Name'); ?>: <input name="name" value="<?php echo htmlspecialchars($row["name"]); ?>" maxlength="64" />
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (strlen($_GET["createv"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-</form>
+++ /dev/null
-<?php
-if ($_POST && !$error) {
- if ($_POST["drop"]) {
- unset($_SESSION["databases"][$_GET["server"]]);
- query_redirect("DROP DATABASE " . idf_escape($_GET["db"]), substr(preg_replace('~db=[^&]*&~', '', $SELF), 0, -1), lang('Database has been dropped.'));
- } elseif ($_GET["db"] !== $_POST["name"]) {
- unset($_SESSION["databases"][$_GET["server"]]);
- $dbs = explode("\n", str_replace("\r", "", $_POST["name"]));
- $failed = false;
- foreach ($dbs as $db) {
- if (count($dbs) == 1 || strlen($db)) {
- if (!queries("CREATE DATABASE " . idf_escape($db) . ($_POST["collation"] ? " COLLATE '" . $dbh->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();
- }
-}
-?>
-
-<form action="" method="post">
-<p>
-<input name="name" value="<?php echo htmlspecialchars($name); ?>" maxlength="64" />
-<select name="collation"><option value="">(<?php echo lang('collation'); ?>)</option><?php echo optionlist($collations, $collate); ?></select>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (strlen($_GET["db"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-</form>
+++ /dev/null
-<?php
-$tables_views = array_merge((array) $_POST["tables"], (array) $_POST["views"]);
-
-if ($tables_views && !$error) {
- $result = true;
- $message = "";
- $dbh->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]") . "<br />";
- }
- }
- }
- query_redirect(queries(), substr($SELF, 0, -1), $message, $result, false, !$result);
-}
-
-page_header(lang('Database') . ": " . htmlspecialchars($_GET["db"]), $error, false);
-echo '<p><a href="' . htmlspecialchars($SELF) . 'database=">' . lang('Alter database') . "</a></p>\n";
-echo '<p><a href="' . htmlspecialchars($SELF) . 'schema=">' . lang('Database schema') . "</a></p>\n";
-
-echo "<h3>" . lang('Tables and views') . "</h3>\n";
-$result = $dbh->query("SHOW TABLE STATUS");
-if (!$result->num_rows) {
- echo "<p class='message'>" . lang('No tables.') . "</p>\n";
-} else {
- echo "<form action='' method='post'>\n";
- echo "<table cellspacing='0' class='nowrap'>\n";
- echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="form_check(this, /^(tables|views)\[/);" /></td><th>' . lang('Table') . '</th><td>' . lang('Engine') . '</td><td>' . lang('Collation') . '</td><td>' . lang('Data Length') . '</td><td>' . lang('Index Length') . '</td><td>' . lang('Data Free') . '</td><td>' . lang('Auto Increment') . '</td><td>' . lang('Rows') . '</td><td>' . lang('Comment') . "</td></tr></thead>\n";
- while ($row = $result->fetch_assoc()) {
- $name = $row["Name"];
- table_comment($row);
- echo '<tr' . odd() . '><td><input type="checkbox" name="' . (isset($row["Rows"]) ? 'tables' : 'views') . '[]" value="' . htmlspecialchars($name) . '"' . (in_array($name, $tables_views, true) ? ' checked="checked"' : '') . ' onclick="form_uncheck(\'check-all\');" /></td>';
- if (isset($row["Rows"])) {
- echo '<th><a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($name) . '">' . htmlspecialchars($name) . "</a></th><td>$row[Engine]</td><td>$row[Collation]</td>";
- 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 '<td align="right">' . (strlen($row[$key]) ? '<a href="' . htmlspecialchars("$SELF$link=") . urlencode($name) . '">' . str_replace(" ", " ", ($key == "Rows" && $row["Engine"] == "InnoDB" && $val ? lang('~ %s', $val) : $val)) . '</a>' : ' ') . '</td>';
- }
- echo "<td>" . (strlen(trim($row["Comment"])) ? htmlspecialchars($row["Comment"]) : " ") . "</td>";
- } else {
- echo '<th><a href="' . htmlspecialchars($SELF) . 'view=' . urlencode($name) . '">' . htmlspecialchars($name) . '</a></th><td colspan="8"><a href="' . htmlspecialchars($SELF) . "select=" . urlencode($name) . '">' . lang('View') . '</a></td>';
- }
- echo "</tr>\n";
- }
- echo "</table>\n";
- echo "<p><input type='hidden' name='token' value='$token' /><input type='submit' value='" . lang('Analyze') . "' /> <input type='submit' name='optimize' value='" . lang('Optimize') . "' /> <input type='submit' name='check' value='" . lang('Check') . "' /> <input type='submit' name='repair' value='" . lang('Repair') . "' /> <input type='submit' name='truncate' value='" . lang('Truncate') . "'$confirm /> <input type='submit' name='drop' value='" . lang('Drop') . "'$confirm /></p>\n";
- $dbs = get_databases();
- if (count($dbs) != 1) {
- $db = (isset($_POST["target"]) ? $_POST["target"] : $_GET["db"]);
- echo "<p>" . lang('Move to other database') . ($dbs ? ": <select name='target'>" . optionlist($dbs, $db) . "</select>" : ': <input name="target" value="' . htmlspecialchars($db) . '" />') . " <input type='submit' name='move' value='" . lang('Move') . "' /></p>\n";
- }
- echo "</form>\n";
-}
-$result->free();
-
-if ($dbh->server_info >= 5) {
- echo '<p><a href="' . htmlspecialchars($SELF) . 'createv=">' . lang('Create view') . "</a></p>\n";
- echo "<h3>" . lang('Routines') . "</h3>\n";
- $result = $dbh->query("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = '" . $dbh->escape_string($_GET["db"]) . "'");
- if ($result->num_rows) {
- echo "<table cellspacing='0'>\n";
- while ($row = $result->fetch_assoc()) {
- echo "<tr>";
- echo "<td>" . htmlspecialchars($row["ROUTINE_TYPE"]) . "</td>";
- echo '<th><a href="' . htmlspecialchars($SELF) . ($row["ROUTINE_TYPE"] == "FUNCTION" ? 'callf=' : 'call=') . urlencode($row["ROUTINE_NAME"]) . '">' . htmlspecialchars($row["ROUTINE_NAME"]) . '</a></th>';
- echo '<td><a href="' . htmlspecialchars($SELF) . ($row["ROUTINE_TYPE"] == "FUNCTION" ? 'function=' : 'procedure=') . urlencode($row["ROUTINE_NAME"]) . '">' . lang('Alter') . "</a></td>";
- echo "</tr>\n";
- }
- echo "</table>\n";
- }
- $result->free();
- echo '<p><a href="' . htmlspecialchars($SELF) . 'procedure=">' . lang('Create procedure') . '</a> <a href="' . htmlspecialchars($SELF) . 'function=">' . lang('Create function') . "</a></p>\n";
-}
-
-if ($dbh->server_info >= 5.1 && ($result = $dbh->query("SHOW EVENTS"))) {
- echo "<h3>" . lang('Events') . "</h3>\n";
- if ($result->num_rows) {
- echo "<table cellspacing='0'>\n";
- echo "<thead><tr><th>" . lang('Name') . "</th><td>" . lang('Schedule') . "</td><td>" . lang('Start') . "</td><td>" . lang('End') . "</td></tr></thead>\n";
- while ($row = $result->fetch_assoc()) {
- echo "<tr>";
- echo '<th><a href="' . htmlspecialchars($SELF) . 'event=' . urlencode($row["Name"]) . '">' . htmlspecialchars($row["Name"]) . "</a></th>";
- echo "<td>" . ($row["Execute at"] ? lang('At given time') . "</td><td>" . $row["Execute at"] : lang('Every') . " " . $row["Interval value"] . " " . $row["Interval field"] . "</td><td>$row[Starts]") . "</td>";
- echo "<td>$row[Ends]</td>";
- echo "</tr>\n";
- }
- echo "</table>\n";
- }
- $result->free();
- echo '<p><a href="' . htmlspecialchars($SELF) . 'event=">' . lang('Create event') . "</a></p>\n";
-}
+++ /dev/null
-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; }
+++ /dev/null
-<?php
-header("Content-Type: application/octet-stream");
-header("Content-Disposition: attachment; filename=" . friendly_url("$_GET[download]-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"]));
-echo $dbh->result($dbh->query("SELECT " . idf_escape($_GET["field"]) . " FROM " . idf_escape($_GET["download"]) . " WHERE " . implode(" AND ", where($_GET)) . " LIMIT 1"));
+++ /dev/null
-<?php
-function tar_file($filename, $contents) {
- $return = pack("a100a8a8a8a12a12", $filename, 644, 0, 0, decoct(strlen($contents)), decoct(time()));
- $checksum = 8*32; // space for checksum itself
- for ($i=0; $i < strlen($return); $i++) {
- $checksum += ord($return{$i});
- }
- $return .= sprintf("%06o", $checksum) . "\0 ";
- return $return . str_repeat("\0", 512 - strlen($return)) . $contents . str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
-}
-
-if ($_POST) {
- $ext = dump_headers((strlen($_GET["dump"]) ? $_GET["dump"] : $_GET["db"]), (!strlen($_GET["db"]) || count((array) $_POST["tables"] + (array) $_POST["data"]) > 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 <?php echo $query; ?>;
- 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_name<?php
-$result = $dbh->query($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;
-<?php
- }
- }
- }
- exit;
-}
-
-page_header(lang('Export'), "", (strlen($_GET["export"]) ? array("table" => $_GET["export"]) : array()), $_GET["db"]);
-?>
-
-<form action="" method="post">
-<table cellspacing="0">
-<?php
-$db_style = array('USE', 'DROP+CREATE', 'CREATE');
-$table_style = array('DROP+CREATE', 'CREATE');
-$data_style = array('TRUNCATE+INSERT', 'INSERT', 'INSERT+UPDATE');
-if ($dbh->server_info >= 5) {
- $db_style[] = 'CREATE+ALTER';
- $table_style[] = 'CREATE+ALTER';
-}
-echo "<tr><th>" . lang('Output') . "</th><td>$dump_output</td></tr>\n";
-echo "<tr><th>" . lang('Format') . "</th><td>$dump_format</td></tr>\n";
-echo "<tr><th>" . lang('Database') . "</th><td><select name='db_style'><option></option>" . optionlist($db_style, (strlen($_GET["db"]) ? '' : 'CREATE')) . "</select></td></tr>\n";
-echo "<tr><th>" . lang('Tables') . "</th><td><select name='table_style'><option></option>" . optionlist($table_style, 'DROP+CREATE') . "</select></td></tr>\n";
-echo "<tr><th>" . lang('Data') . "</th><td><select name='data_style'><option></option>" . optionlist($data_style, 'INSERT') . "</select></td></tr>\n";
-?>
-</table>
-<p><input type="submit" value="<?php echo lang('Export'); ?>" /></p>
-
-<?php
-if (!strlen($_GET["db"])) {
- echo "<table cellspacing='0'>\n";
- echo "<thead><tr><th align='left'><label><input type='checkbox' id='check-databases' checked='checked' onclick='form_check(this, /^databases\\[/);' />" . lang('Database') . "</label></th></tr></thead>\n";
- foreach (get_databases() as $db) {
- if ($db != "information_schema" || $dbh->server_info < 5) {
- echo '<tr><td><label><input type="checkbox" name="databases[]" value="' . htmlspecialchars($db) . '" checked="checked" onclick="form_uncheck(\'check-databases\');" />' . htmlspecialchars($db) . "</label></td></tr>\n";
- }
- }
- echo "</table>\n";
-}
-
-if (strlen($_GET["db"])) {
- $checked = (strlen($_GET["dump"]) ? "" : " checked='checked'");
- echo "<table cellspacing='0'>\n";
- echo "<thead><tr>";
- echo "<th align='left'><label><input type='checkbox' id='check-tables'$checked onclick='form_check(this, /^tables\\[/);' />" . lang('Tables') . "</label></th>";
- echo "<th align='right'><label>" . lang('Data') . "<input type='checkbox' id='check-data'$checked onclick='form_check(this, /^data\\[/);' /></label></th>";
- echo "</tr></thead>\n";
- $views = "";
- $result = $dbh->query("SHOW TABLE STATUS");
- while ($row = $result->fetch_assoc()) {
- $checked = (strlen($_GET["dump"]) && $row["Name"] != $_GET["dump"] ? '' : " checked='checked'");
- $print = '<tr><td><label><input type="checkbox" name="tables[]" value="' . htmlspecialchars($row["Name"]) . "\"$checked onclick=\"form_uncheck('check-tables');\" />" . htmlspecialchars($row["Name"]) . "</label></td>";
- if (!$row["Engine"]) {
- $views .= "$print</tr>\n";
- } else {
- echo "$print<td align='right'><label>" . ($row["Engine"] == "InnoDB" && $row["Rows"] ? lang('~ %s', $row["Rows"]) : $row["Rows"]) . '<input type="checkbox" name="data[]" value="' . htmlspecialchars($row["Name"]) . "\"$checked onclick=\"form_uncheck('check-data');\" /></label></td></tr>\n";
- }
- }
- echo "$views</table>\n";
-}
-?>
-</form>
+++ /dev/null
-<?php
-$where = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0]) : array()) : where($_GET));
-$update = ($where && !$_POST["clone"]);
-$fields = fields($_GET["edit"]);
-foreach ($fields as $name => $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();
- }
-}
-?>
-
-<form action="" method="post" enctype="multipart/form-data">
-<?php
-if ($fields) {
- unset($create);
- echo "<table cellspacing='0'>\n";
- foreach ($fields as $name => $field) {
- echo "<tr><th>" . htmlspecialchars($name) . "</th>";
- $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 '<label><input type="checkbox" name="on_update[' . htmlspecialchars(bracket_escape($name)) . ']" value="1"' . ($checked ? ' checked="checked"' : '') . ' />' . lang('ON UPDATE CURRENT_TIMESTAMP') . '</label>';
- }
- echo "</td></tr>\n";
- }
- echo "</table>\n";
-}
-?>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="hidden" name="save" value="1" />
-<?php
-if (isset($_GET["select"])) {
- hidden_fields(array("check" => (array) $_POST["check"], "clone" => $_POST["clone"], "all" => $_POST["all"]));
-}
-if ($fields) {
- echo '<input type="submit" value="' . lang('Save') . '" />';
- if (!isset($_GET["default"]) && !isset($_GET["select"])) {
- echo '<input type="submit" name="insert" value="' . ($update ? lang('Save and continue edit') : lang('Save and insert next')) . '" />';
- }
-}
-if ($update) {
- echo ' <input type="submit" name="delete" value="' . lang('Delete') . '"' . $confirm . '/>';
-}
-?>
-</p>
-</form>
+++ /dev/null
-<?php
-$intervals = array("YEAR", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND");
-$statuses = array("ENABLED" => "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();
-}
-?>
-
-<form action="" method="post">
-<table cellspacing="0">
-<tr><th><?php echo lang('Name'); ?></th><td><input name="EVENT_NAME" value="<?php echo htmlspecialchars($row["EVENT_NAME"]); ?>" maxlength="64" /></td></tr>
-<tr><th><?php echo lang('Start'); ?></th><td><input name="STARTS" value="<?php echo htmlspecialchars("$row[EXECUTE_AT]$row[STARTS]"); ?>" /></td></tr>
-<tr><th><?php echo lang('End'); ?></th><td><input name="ENDS" value="<?php echo htmlspecialchars($row["ENDS"]); ?>" /></td></tr>
-<tr><th><?php echo lang('Every'); ?></th><td><input name="INTERVAL_VALUE" value="<?php echo htmlspecialchars($row["INTERVAL_VALUE"]); ?>" size="6" /> <select name="INTERVAL_FIELD"><?php echo optionlist($intervals, $row["INTERVAL_FIELD"]); ?></select></td></tr>
-<tr><th><?php echo lang('Status'); ?></th><td><select name="STATUS"><?php echo optionlist($statuses, $row["STATUS"]); ?></select></td></tr>
-<tr><th><?php echo lang('Comment'); ?></th><td><input name="EVENT_COMMENT" value="<?php echo htmlspecialchars($row["EVENT_COMMENT"]); ?>" maxlength="64" /></td></tr>
-<tr><th> </th><td><label><input type="checkbox" name="ON_COMPLETION" value="PRESERVE"<?php echo ($row["ON_COMPLETION"] == "PRESERVE" ? " checked='checked'" : ""); ?> /><?php echo lang('On completion preserve'); ?></label></td></tr>
-</table>
-<p><textarea name="EVENT_DEFINITION" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["EVENT_DEFINITION"]); ?></textarea></p>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (strlen($_GET["event"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-</form>
+++ /dev/null
-<?php
-if ($_POST && !$error && !$_POST["add"] && !$_POST["change"] && !$_POST["change-js"]) {
- if ($_POST["drop"]) {
- query_redirect("ALTER TABLE " . idf_escape($_GET["foreign"]) . "\nDROP FOREIGN KEY " . idf_escape($_GET["name"]), $SELF . "table=" . urlencode($_GET["foreign"]), lang('Foreign key has been dropped.'));
- } else {
- $source = array_filter($_POST["source"], 'strlen');
- ksort($source);
- $target = array();
- foreach ($source as $key => $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"])));
-?>
-
-<form action="" method="post">
-<p>
-<?php echo lang('Target table'); ?>:
-<select name="table" onchange="this.form['change-js'].value = '1'; this.form.submit();"><?php echo optionlist($tables, $row["table"]); ?></select>
-<input type="hidden" name="change-js" value="" />
-</p>
-<noscript><p><input type="submit" name="change" value="<?php echo lang('Change'); ?>" /></p></noscript>
-<table cellspacing="0">
-<thead><tr><th><?php echo lang('Source'); ?></th><th><?php echo lang('Target'); ?></th></tr></thead>
-<?php
-$j = 0;
-foreach ($row["source"] as $key => $val) {
- echo "<tr>";
- echo "<td><select name='source[" . intval($key) . "]'" . ($j == count($row["source"]) - 1 ? " onchange='foreign_add_row(this);'" : "") . "><option></option>" . optionlist($source, $val) . "</select></td>";
- echo "<td><select name='target[" . intval($key) . "]'>" . optionlist($target, $row["target"][$key]) . "</select></td>";
- echo "</tr>\n";
- $j++;
-}
-?>
-</table>
-<p>
-<?php echo lang('ON DELETE'); ?>: <select name="on_delete"><option></option><?php echo optionlist($on_actions, $row["on_delete"]); ?></select>
-<?php echo lang('ON UPDATE'); ?>: <select name="on_update"><option></option><?php echo optionlist($on_actions, $row["on_update"]); ?></select>
-</p>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (strlen($_GET["name"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-<noscript><p><input type="submit" name="add" value="<?php echo lang('Add column'); ?>" /></p></noscript>
-</form>
+++ /dev/null
-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 = '<span>' + spans[spans.length - 1].innerHTML + '</span>';
- 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;
- }
-}
+++ /dev/null
-<?php
-$ignore = array("server", "username", "password");
-$session_name = session_name();
-if (ini_get("session.use_trans_sid") && isset($_POST[$session_name])) {
- $ignore[] = $session_name;
-}
-if (isset($_POST["server"])) {
- if (isset($_COOKIE[$session_name]) || isset($_POST[$session_name])) {
- session_regenerate_id();
- $_SESSION["usernames"][$_POST["server"]] = $_POST["username"];
- $_SESSION["passwords"][$_POST["server"]] = $_POST["password"];
- $_SESSION["tokens"][$_POST["server"]] = rand(1, 1e6);
- if (count($_POST) == count($ignore)) {
- $location = ((string) $_GET["server"] === $_POST["server"] ? remove_from_uri() : preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_URI"]) . (strlen($_POST["server"]) ? '?server=' . urlencode($_POST["server"]) : ''));
- if (!isset($_COOKIE[$session_name])) {
- $location .= (strpos($location, "?") === false ? "?" : "&") . SID;
- }
- header("Location: " . (strlen($location) ? $location : "."));
- exit;
- }
- if ($_POST["token"]) {
- $_POST["token"] = $_SESSION["tokens"][$_POST["server"]];
- }
- }
- $_GET["server"] = $_POST["server"];
-} elseif (isset($_POST["logout"])) {
- if ($_POST["token"] != $_SESSION["tokens"][$_GET["server"]]) {
- page_header(lang('Logout'), lang('Invalid CSRF token. Send the form again.'));
- page_footer("db");
- exit;
- } else {
- unset($_SESSION["usernames"][$_GET["server"]]);
- unset($_SESSION["passwords"][$_GET["server"]]);
- unset($_SESSION["databases"][$_GET["server"]]);
- unset($_SESSION["tokens"][$_GET["server"]]);
- unset($_SESSION["history"][$_GET["server"]]);
- redirect(substr($SELF, 0, -1), lang('Logout successful.'));
- }
-}
-
-function auth_error($exception = null) {
- global $ignore, $dbh;
- $username = $_SESSION["usernames"][$_GET["server"]];
- unset($_SESSION["usernames"][$_GET["server"]]);
- page_header(lang('Login'), (isset($username) ? htmlspecialchars($exception ? $exception->getMessage() : ($dbh ? $dbh : lang('Invalid credentials.'))) : (isset($_POST["server"]) ? lang('Sessions must be enabled.') : ($_POST ? lang('Session expired, please login again.') : ""))), null);
- ?>
- <form action="" method="post">
- <table cellspacing="0">
- <tr><th><?php echo lang('Server'); ?></th><td><input name="server" value="<?php echo htmlspecialchars($_GET["server"]); ?>" /></td></tr>
- <tr><th><?php echo lang('Username'); ?></th><td><input name="username" value="<?php echo htmlspecialchars($username); ?>" /></td></tr>
- <tr><th><?php echo lang('Password'); ?></th><td><input type="password" name="password" /></td></tr>
- </table>
- <p>
-<?php
- hidden_fields($_POST, $ignore); // expired session
- foreach ($_FILES as $key => $val) {
- echo '<input type="hidden" name="files[' . htmlspecialchars($key) . ']" value="' . ($val["error"] ? $val["error"] : base64_encode(file_get_contents($val["tmp_name"]))) . '" />';
- }
- ?>
- <input type="submit" value="<?php echo lang('Login'); ?>" />
- </p>
- </form>
-<?php
- page_footer("auth");
-}
-
-$username = &$_SESSION["usernames"][$_GET["server"]];
-if (!isset($username)) {
- $username = $_GET["username"];
-}
-$dbh = (isset($username) ? connect() : '');
-unset($username);
-if (is_string($dbh)) {
- auth_error();
- exit;
-}
+++ /dev/null
-<?php
-function connect_error() {
- global $dbh, $SELF, $VERSION;
- if (strlen($_GET["db"])) {
- page_header(lang('Database') . ": " . htmlspecialchars($_GET["db"]), lang('Invalid database.'), false);
- } else {
- page_header(lang('Select database'), "", null);
- echo '<p><a href="' . htmlspecialchars($SELF) . 'database=">' . lang('Create new database') . "</a></p>\n";
- echo '<p><a href="' . htmlspecialchars($SELF) . 'privileges=">' . lang('Privileges') . "</a></p>\n";
- echo '<p><a href="' . htmlspecialchars($SELF) . 'processlist=">' . lang('Process list') . "</a></p>\n";
- echo "<p>" . lang('MySQL version: %s through PHP extension %s', "<b" . ($dbh->server_info < 4.1 ? " class='binary'" : "") . ">$dbh->server_info</b>", "<b>$dbh->extension</b>") . "</p>\n";
- echo "<p>" . lang('Logged as: %s', "<b>" . htmlspecialchars($dbh->result($dbh->query("SELECT USER()"))) . "</b>") . "</p>\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");
+++ /dev/null
-<?php
-function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
- global $SELF, $LANG, $VERSION;
- header("Content-Type: text/html; charset=utf-8");
- ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php echo $LANG; ?>">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="robots" content="noindex" />
-<title><?php echo $title . (strlen($title2) ? ": " . htmlspecialchars($title2) : "") . " - " . lang('Adminer'); ?></title>
-<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
-<link rel="stylesheet" type="text/css" href="default.css<?php // Ondrej Valka, http://valka.info ?>" />
-<?php if (file_exists("adminer.css")) { ?>
-<link rel="stylesheet" type="text/css" href="adminer.css" />
-<?php } ?>
-</head>
-
-<body onload="load_jush();<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verify_version('$VERSION');"); ?>">
-<script type="text/javascript" src="functions.js"></script>
-
-<div id="content">
-<?php
- if (isset($breadcrumb)) {
- $link = substr(preg_replace('~db=[^&]*&~', '', $SELF), 0, -1);
- echo '<p id="breadcrumb"><a href="' . (strlen($link) ? htmlspecialchars($link) : ".") . '">' . (isset($_GET["server"]) ? htmlspecialchars($_GET["server"]) : lang('Server')) . '</a> » ';
- if (is_array($breadcrumb)) {
- if (strlen($_GET["db"])) {
- echo '<a href="' . htmlspecialchars(substr($SELF, 0, -1)) . '">' . htmlspecialchars($_GET["db"]) . '</a> » ';
- }
- foreach ($breadcrumb as $key => $val) {
- if (strlen($val)) {
- echo '<a href="' . htmlspecialchars("$SELF$key=") . ($key != "privileges" ? urlencode($val) : "") . '">' . htmlspecialchars($val) . '</a> » ';
- }
- }
- }
- echo "$title</p>\n";
- }
- echo "<h2>$title" . (strlen($title2) ? ": " . htmlspecialchars($title2) : "") . "</h2>\n";
- if ($_SESSION["messages"]) {
- echo "<p class='message'>" . implode("</p>\n<p class='message'>", $_SESSION["messages"]) . "</p>\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 "<p class='error'>$error</p>\n";
- }
-}
-
-function page_footer($missing = false) {
- global $SELF, $dbh, $VERSION;
- ?>
-</div>
-
-<?php switch_lang(); ?>
-<div id="menu">
-<h1><a href="http://www.adminer.org/"><?php echo lang('Adminer'); ?></a> <?php echo $VERSION; ?></h1>
-<div class="version"><a href='http://www.adminer.org/#download' id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? htmlspecialchars($_COOKIE["adminer_version"]) : ""); ?></a></div>
-<?php if ($missing != "auth") { ?>
-<form action="" method="post">
-<p>
-<a href="<?php echo htmlspecialchars($SELF); ?>sql="><?php echo lang('SQL command'); ?></a>
-<a href="<?php echo htmlspecialchars($SELF); ?>dump=<?php echo urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]); ?>"><?php echo lang('Dump'); ?></a>
-<input type="hidden" name="token" value="<?php echo $_SESSION["tokens"][$_GET["server"]]; ?>" />
-<input type="submit" name="logout" value="<?php echo lang('Logout'); ?>" />
-</p>
-</form>
-<form action="">
-<p><?php if (strlen($_GET["server"])) { ?><input type="hidden" name="server" value="<?php echo htmlspecialchars($_GET["server"]); ?>" /><?php } ?>
-<?php if (get_databases()) { ?>
-<select name="db" onchange="this.form.submit();"><option value="">(<?php echo lang('database'); ?>)</option><?php echo optionlist(get_databases(), $_GET["db"]); ?></select>
-<?php } else { ?>
-<input name="db" value="<?php echo htmlspecialchars($_GET["db"]); ?>" /> <input type="submit" value="<?php echo lang('Use'); ?>" />
-<?php } ?>
-<?php if (isset($_GET["sql"])) { ?><input type="hidden" name="sql" value="" /><?php } ?>
-<?php if (isset($_GET["schema"])) { ?><input type="hidden" name="schema" value="" /><?php } ?>
-<?php if (isset($_GET["dump"])) { ?><input type="hidden" name="dump" value="" /><?php } ?>
-</p>
-<?php if (get_databases()) { ?>
-<noscript><p><input type="submit" value="<?php echo lang('Use'); ?>" /></p></noscript>
-<?php } ?>
-</form>
-<?php
- if ($missing != "db" && strlen($_GET["db"])) {
- $result = $dbh->query("SHOW TABLE STATUS");
- if (!$result->num_rows) {
- echo "<p class='message'>" . lang('No tables.') . "</p>\n";
- } else {
- echo "<p>\n";
- while ($row = $result->fetch_assoc()) {
- echo '<a href="' . htmlspecialchars($SELF) . 'select=' . urlencode($row["Name"]) . '">' . lang('select') . '</a> ';
- echo '<a href="' . htmlspecialchars($SELF) . (isset($row["Rows"]) ? 'table' : 'view') . '=' . urlencode($row["Name"]) . '">' . htmlspecialchars($row["Name"]) . "</a><br />\n";
- }
- echo "</p>\n";
- }
- echo '<p><a href="' . htmlspecialchars($SELF) . 'create=">' . lang('Create new table') . "</a></p>\n";
- $result->free();
- }
- }
- ?>
-</div>
-
-</body>
-</html>
-<?php
-}
+++ /dev/null
-<?php
-function input($name, $field, $value, $separator = "</td><td>") { //! pass empty separator if there are no functions in the whole table
- global $types;
- $name = htmlspecialchars(bracket_escape($name));
- echo "<td" . ($separator ? " class='function'" : "") . ">";
- if ($field["type"] == "enum") {
- echo ($separator ? " $separator" : "") . (isset($_GET["select"]) ? ' <label><input type="radio" name="fields[' . $name . ']" value="-1" checked="checked" /><em>' . lang('original') . '</em></label>' : "");
- if ($field["null"] || isset($_GET["default"])) {
- echo ' <label><input type="radio" name="fields[' . $name . ']" value=""' . (($field["null"] ? isset($value) : strlen($value)) || isset($_GET["select"]) ? '' : ' checked="checked"') . ' />' . ($field["null"] ? '<em>NULL</em>' : '') . '</label>';
- }
- if (!isset($_GET["default"])) {
- echo '<input type="radio" name="fields[' . $name . ']" value="0"' . ($value === 0 ? ' checked="checked"' : '') . ' />';
- }
- 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 ' <label><input type="radio" name="fields[' . $name . ']" value="' . (isset($_GET["default"]) ? (strlen($val) ? htmlspecialchars($val) : " ") : $i+1) . '"' . ($checked ? ' checked="checked"' : '') . ' />' . htmlspecialchars($val) . '</label>';
- }
- } 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"]) ? '<select name="function[' . $name . ']">' . (isset($_GET["select"]) ? '<option value="orig">' . lang('original') . '</option>' : '') . optionlist($options, (isset($value) ? (string) $_POST["function"][$name] : null)) . '</select>' : ($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 ' <label><input type="checkbox" name="fields[' . $name . '][' . $i . ']" value="' . (isset($_GET["default"]) ? htmlspecialchars($val) : 1 << $i) . '"' . ($checked ? ' checked="checked"' : '') . $onchange . ' />' . htmlspecialchars($val) . '</label>';
- }
- } elseif (strpos($field["type"], "text") !== false) {
- echo '<textarea name="fields[' . $name . ']" cols="50" rows="12"' . $onchange . '>' . htmlspecialchars($value) . '</textarea>';
- } elseif (preg_match('~binary|blob~', $field["type"])) {
- echo (ini_get("file_uploads") ? '<input type="file" name="' . $name . '"' . $onchange . ' />' : 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 '<input name="fields[' . $name . ']" value="' . htmlspecialchars($value) . '"' . ($maxlength ? " maxlength='$maxlength'" : "") . $onchange . ' />';
- }
- }
-}
-
-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;
- ?>
-<td><select name="<?php echo $key; ?>[type]" onchange="editing_type_change(this);"><?php echo optionlist(array_keys($types), $field["type"]); ?></select></td>
-<td><input name="<?php echo $key; ?>[length]" value="<?php echo htmlspecialchars($field["length"]); ?>" size="3" /></td>
-<td><?php echo "<select name=\"$key" . '[collation]"' . (preg_match('~char|text|enum|set~', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')</option>' . optionlist($collations, $field["collation"]) . '</select>' . ($unsigned ? " <select name=\"$key" . '[unsigned]"' . (!$field["type"] || preg_match('~int|float|double|decimal~', $field["type"]) ? "" : " class='hidden'") . '>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : ''); ?></td>
-<?php
-}
-
-function process_type($field, $collate = "COLLATE") {
- global $dbh, $enum_length, $unsigned;
- return " $field[type]"
- . ($field["length"] && !preg_match('~^date|time$~', $field["type"]) ? "(" . process_length($field["length"]) . ")" : "")
- . (preg_match('~int|float|double|decimal~', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
- . (preg_match('~char|text|enum|set~', $field["type"]) && $field["collation"] ? " $collate '" . $dbh->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;
- }
- }
- ?>
-<thead><tr>
-<?php if ($type == "PROCEDURE") { ?><td><?php echo lang('IN-OUT'); ?></td><?php } ?>
-<th><?php echo ($type == "TABLE" ? lang('Column name') : lang('Parameter name')); ?></th>
-<td><?php echo lang('Type'); ?></td>
-<td><?php echo lang('Length'); ?></td>
-<td><?php echo lang('Options'); ?></td>
-<?php if ($type == "TABLE") { ?>
-<td><?php echo lang('NULL'); ?></td>
-<td><input type="radio" name="auto_increment_col" value="" /><?php echo lang('Auto Increment'); ?></td>
-<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><?php echo lang('Comment'); ?></td>
-<?php } ?>
-<td><input type="image" name="add[0]" src="plus.gif" alt="+" title="<?php echo lang('Add next'); ?>" /><script type="text/javascript">row_count = <?php echo count($fields); ?>;</script></td>
-</tr></thead>
-<?php
- foreach ($fields as $i => $field) {
- $i++;
- $display = (isset($_POST["add"][$i-1]) || (isset($field["field"]) && !$_POST["drop_col"][$i]));
- ?>
-<tr<?php echo ($display ? "" : " style='display: none;'"); ?>>
-<?php if ($type == "PROCEDURE") { ?><td><select name="fields[<?php echo $i; ?>][inout]"><?php echo optionlist($inout, $field["inout"]); ?></select></td><?php } ?>
-<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo htmlspecialchars($field["field"]); ?>" maxlength="64" /><?php } ?><input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo htmlspecialchars($field[($_POST ? "orig" : "field")]); ?>" /></th>
-<?php edit_type("fields[$i]", $field, $collations); ?>
-<?php if ($type == "TABLE") { ?>
-<td><input type="checkbox" name="fields[<?php echo $i; ?>][null]" value="1"<?php if ($field["null"]) { ?> checked="checked"<?php } ?> /></td>
-<td><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked="checked"<?php } ?> /></td>
-<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><input name="fields[<?php echo $i; ?>][comment]" value="<?php echo htmlspecialchars($field["comment"]); ?>" maxlength="255" /></td>
-<?php } ?>
-<?php
- echo "<td><input type='image' name='add[$i]' src='plus.gif' alt='+' title='" . lang('Add next') . "' onclick='return !editing_add_row(this, $allowed);' />";
- echo " <input type='image' name='drop_col[$i]' src='cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);' />";
- echo " <input type='image' name='up[$i]' src='up.gif' alt='^' title='" . lang('Move up') . "' />";
- echo " <input type='image' name='down[$i]' src='down.gif' alt='v' title='" . lang('Move down') . "' />";
- echo "</td>\n</tr>\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]);
-}
+++ /dev/null
-<?php
-function dump_csv($row) {
- foreach ($row as $key => $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 '<?php
-$fields = array();
-$result = $dbh->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 <?php echo $query; ?>;
- 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_name<?php
-foreach ($fields as $row) {
- echo "
- WHEN '" . $dbh->escape_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 <?php echo idf_escape($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;
-
-<?php
- //! indexes
- }
-
- if ($dbh->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 = "<select name='output'><option value='text'>" . lang('open') . "</option><option value='file'>" . lang('save') . "</option></select>";
-$dump_format = "<select name='format'><option value='sql'>" . lang('SQL') . "</option><option value='csv'>" . lang('CSV') . "</option></select>";
-$max_packet = 0;
+++ /dev/null
-<?php
-function idf_escape($idf) {
- return "`" . str_replace("`", "``", $idf) . "`";
-}
-
-function idf_unescape($idf) {
- return str_replace("``", "`", $idf);
-}
-
-function bracket_escape($idf, $back = false) {
- static $trans = array(':' => ':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 .= '<optgroup label="' . htmlspecialchars($k) . '">';
- }
- foreach ((is_array($v) ? $v : array($v)) as $val) {
- $return .= '<option' . ($val === $selected ? ' selected="selected"' : '') . '>' . htmlspecialchars($val) . '</option>';
- }
- if (is_array($v)) {
- $return .= '</optgroup>';
- }
- }
- 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 = " <a href='#$id' onclick=\"return !toggle('$id');\">" . lang('SQL command') . "</a><span id='$id' class='hidden'><br /><code class='jush-sql'>" . htmlspecialchars($query) . '</code><br /><a href="' . htmlspecialchars($SELF) . 'sql=&history=' . count($_SESSION["history"][$_GET["server"]][$_GET["db"]]) . '">' . lang('Edit') . '</a></span>';
- $_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 : '<a href="' . htmlspecialchars(remove_from_uri("page") . ($page ? "&page=$page" : "")) . '">' . ($page + 1) . "</a>");
-}
-
-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 "<p class='message'>" . lang('No rows.') . "</p>\n";
- } else {
- echo "<table cellspacing='0' class='nowrap'>\n";
- $links = array();
- $indexes = array();
- $columns = array();
- $blobs = array();
- $types = array();
- odd('');
- for ($i=0; $row = $result->fetch_row(); $i++) {
- if (!$i) {
- echo "<thead><tr>";
- 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 "<th>" . htmlspecialchars($field->name) . "</th>";
- }
- echo "</tr></thead>\n";
- }
- echo "<tr" . odd() . ">";
- foreach ($row as $key => $val) {
- if (!isset($val)) {
- $val = "<i>NULL</i>";
- } else {
- if ($blobs[$key] && !is_utf8($val)) {
- $val = "<i>" . lang('%d byte(s)', strlen($val)) . "</i>"; //! link to download
- } elseif (!strlen(trim($val))) {
- $val = " ";
- } else {
- $val = nl2br(htmlspecialchars($val));
- if ($types[$key] == 254) {
- $val = "<code>$val</code>";
- }
- }
- 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 = '<a href="' . htmlspecialchars($SELF) . $link . '">' . $val . '</a>';
- }
- }
- echo "<td>$val</td>";
- }
- echo "</tr>\n";
- }
- echo "</table>\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] ? "<em>...</em>" : "");
-}
-
-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 '<input type="hidden" name="' . htmlspecialchars($key) . '" value="' . htmlspecialchars($val) . '" />';
- }
- }
-}
+++ /dev/null
-<?php
-$langs = array(
- 'en' => '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 "<form action=''>\n<div id='lang'>";
- hidden_fields($_GET, array('lang'));
- echo lang('Language') . ": <select name='lang' onchange='this.form.submit();'>";
- foreach ($langs as $lang => $val) {
- echo "<option value='$lang'" . ($LANG == $lang ? " selected='selected'" : "") . ">$val</option>";
- }
- echo "</select>\n<noscript><div style='display: inline;'><input type='submit' value='" . lang('Use') . "' /></div></noscript>\n</div>\n</form>\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;
- }
- }
-}
+++ /dev/null
-<?php
-if (extension_loaded("mysqli")) {
- class Min_DB extends MySQLi {
- var $extension = "MySQLi";
-
- function Min_DB() {
- parent::init();
- }
-
- function connect($server, $username, $password) {
- list($host, $port) = explode(":", $server, 2);
- return @$this->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"]);
- }
-}
+++ /dev/null
-<?php
-if (extension_loaded('pdo')) {
- class Min_PDO extends PDO {
- var $_result, $server_info, $affected_rows, $error;
-
- function __construct() {
- }
-
- function dsn($dsn, $username, $password) {
- set_exception_handler('auth_error'); // try/catch is not compatible with PHP 4
- parent::__construct($dsn, $username, $password);
- restore_exception_handler();
- $this->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
- }
- }
-}
+++ /dev/null
-<?php
-if (extension_loaded($_GET["sqlite_version"] == 2 ? "sqlite" : "sqlite3")) {
- if ($_GET["sqlite_version"] == 2) {
-
- class Min_SQLite extends SQLiteDatabase {
- var $extension = "SQLite";
-
- function open($filename) {
- parent::__construct($filename);
- }
-
- function query($query) {
- $result = @parent::query($query, SQLITE_BOTH, $error);
- if (!$result) {
- $this->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) {
-}
+++ /dev/null
-<?php
-$VERSION = "1.11.0-dev";
+++ /dev/null
-<?php
-/** Adminer - Compact MySQL management
-* @link http://www.adminer.org/
-* @author Jakub Vrana, http://php.vrana.cz/
-* @copyright 2007 Jakub Vrana
-* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
-*/
-
-error_reporting(E_ALL & ~E_NOTICE);
-if (!ini_get("session.auto_start")) {
- session_name("adminer_sid");
- session_set_cookie_params(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]));
- session_start();
-}
-if (isset($_SESSION["coverage"])) {
- function save_coverage() {
- foreach (xdebug_get_code_coverage() as $filename => $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();
-}
+++ /dev/null
-<?php
-$index_types = array("PRIMARY", "UNIQUE", "INDEX", "FULLTEXT");
-$indexes = indexes($_GET["indexes"]);
-if ($_POST && !$error && !$_POST["add"]) {
- $alter = array();
- foreach ($_POST["indexes"] as $index) {
- if (in_array($index["type"], $index_types)) {
- $columns = array();
- $lengths = array();
- $set = array();
- ksort($index["columns"]);
- foreach ($index["columns"] as $key => $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 => ""));
-}
-?>
-
-<form action="" method="post">
-<table cellspacing="0">
-<thead><tr><th><?php echo lang('Index Type'); ?></th><th><?php echo lang('Column (length)'); ?></th></tr></thead>
-<?php
-$j = 0;
-foreach ($row["indexes"] as $index) {
- echo "<tr><td><select name='indexes[$j][type]'" . ($j == count($row["indexes"]) - 1 ? " onchange='indexes_add_row(this);'" : "") . "><option></option>" . optionlist($index_types, $index["type"]) . "</select></td><td>\n";
- ksort($index["columns"]);
- foreach ($index["columns"] as $i => $column) {
- echo "<span><select name='indexes[$j][columns][$i]'" . ($i == count($index["columns"]) ? " onchange='indexes_add_column(this);'" : "") . "><option></option>" . optionlist($fields, $column) . "</select>";
- echo "<input name='indexes[$j][lengths][$i]' size='2' value=\"" . htmlspecialchars($index["lengths"][$i]) . "\" /> </span>\n";
- }
- echo "</td></tr>\n";
- $j++;
-}
-?>
-</table>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Alter indexes'); ?>" />
-</p>
-<noscript><p><input type="submit" name="add" value="<?php echo lang('Add next'); ?>" /></p></noscript>
-</form>
--- /dev/null
+<?php
+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 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"), "<?php\n\$translations = array(\n$s);\n");
+ echo "$filename updated.\n";
+}
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Query executed OK, %d row(s) affected.' => 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.'),
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => 'Записаться',
- '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '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',
-);
+++ /dev/null
-<?php
-$translations = array(
- 'Login' => '登录',
- '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',
-);
+++ /dev/null
-<?php
-page_header(lang('Privileges'));
-echo '<p><a href="' . htmlspecialchars($SELF) . 'user=">' . lang('Create user') . "</a></p>";
-$result = $dbh->query("SELECT User, Host FROM mysql.user ORDER BY Host, User");
-if (!$result) {
- ?>
- <form action=""><p>
- <?php if (strlen($_GET["server"])) { ?><input type="hidden" name="server" value="<?php echo htmlspecialchars($_GET["server"]); ?>" /><?php } ?>
- <?php echo lang('Username'); ?>: <input name="user" />
- <?php echo lang('Server'); ?>: <input name="host" value="localhost" />
- <input type="hidden" name="grant" value="" />
- <input type="submit" value="<?php echo lang('Edit'); ?>" />
- </p></form>
-<?php
- $result = $dbh->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");
-}
-echo "<table cellspacing='0'>\n";
-echo "<thead><tr><th> </th><th>" . lang('Username') . "</th><th>" . lang('Server') . "</th></tr></thead>\n";
-while ($row = $result->fetch_assoc()) {
- echo '<tr' . odd() . '><td><a href="' . htmlspecialchars($SELF) . 'user=' . urlencode($row["User"]) . '&host=' . urlencode($row["Host"]) . '">' . lang('edit') . '</a></td><td>' . htmlspecialchars($row["User"]) . "</td><td>" . htmlspecialchars($row["Host"]) . "</td></tr>\n";
-}
-echo "</table>\n";
-$result->free();
+++ /dev/null
-<?php
-$routine = (isset($_GET["function"]) ? "FUNCTION" : "PROCEDURE");
-
-$dropped = false;
-if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) {
- if (strlen($_GET["procedure"])) {
- $dropped = query_redirect("DROP $routine " . idf_escape($_GET["procedure"]), substr($SELF, 0, -1), lang('Routine has been dropped.'), $_POST["drop"], !$_POST["dropped"]);
- }
- if (!$_POST["drop"]) {
- $set = array();
- $fields = array_filter((array) $_POST["fields"], 'strlen');
- ksort($fields);
- foreach ($fields as $field) {
- if (strlen($field["field"])) {
- $set[] = (in_array($field["inout"], $inout) ? "$field[inout] " : "") . idf_escape($field["field"]) . process_type($field, "CHARACTER SET");
- }
- }
- query_redirect("CREATE $routine " . idf_escape($_POST["name"])
- . " (" . implode(", ", $set) . ")"
- . (isset($_GET["function"]) ? " RETURNS" . process_type($_POST["returns"], "CHARACTER SET") : "")
- . "\n$_POST[definition]"
- , substr($SELF, 0, -1), (strlen($_GET["procedure"]) ? lang('Routine has been altered.') : lang('Routine has been created.')));
- }
-}
-page_header((strlen($_GET["procedure"]) ? (isset($_GET["function"]) ? lang('Alter function') : lang('Alter procedure')) . ": " . htmlspecialchars($_GET["procedure"]) : (isset($_GET["function"]) ? lang('Create function') : lang('Create procedure'))), $error);
-
-$collations = get_vals("SHOW CHARACTER SET");
-$row = array("fields" => 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"];
-}
-?>
-
-<form action="" method="post" id="form">
-<table cellspacing="0">
-<?php edit_fields($row["fields"], $collations, $routine); ?>
-<?php if (isset($_GET["function"])) { ?><tr><td><?php echo lang('Return type'); ?></td><?php echo edit_type("returns", $row["returns"], $collations); ?></tr><?php } ?>
-</table>
-<p><textarea name="definition" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["definition"]); ?></textarea></p>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<?php if ($dropped) { ?><input type="hidden" name="dropped" value="1" /><?php } ?>
-<?php echo lang('Name'); ?>: <input name="name" value="<?php echo htmlspecialchars($row["name"]); ?>" maxlength="64" />
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (strlen($_GET["procedure"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-</form>
+++ /dev/null
-<?php
-if ($_POST && !$error) {
- $killed = 0;
- foreach ((array) $_POST["kill"] as $val) {
- if (queries("KILL " . intval($val))) {
- $killed++;
- }
- }
- query_redirect(queries(), $SELF . "processlist=", lang('%d process(es) has been killed.', $killed), $killed || !$_POST["kill"], false, !$killed && $_POST["kill"]);
-}
-page_header(lang('Process list'), $error);
-?>
-
-<form action="" method="post">
-<table cellspacing="0">
-<?php
-$result = $dbh->query("SHOW PROCESSLIST");
-for ($i=0; $row = $result->fetch_assoc(); $i++) {
- if (!$i) {
- echo "<thead><tr lang='en'><th> </th><th>" . implode("</th><th>", array_keys($row)) . "</th></tr></thead>\n";
- }
- echo "<tr" . odd() . "><td><input type='checkbox' name='kill[]' value='$row[Id]' /></td><td>" . implode("</td><td>", $row) . "</td></tr>\n";
-}
-$result->free();
-?>
-</table>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Kill'); ?>" />
-</p>
-</form>
+++ /dev/null
-<?php
-page_header(lang('Database schema'), "", array(), $_GET["db"]);
-
-$table_pos = array();
-$table_pos_js = array();
-preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', $_COOKIE["schema"], $matches, PREG_SET_ORDER); //! ':' in table name
-foreach ($matches as $i => $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();
-
-?>
-<div id="schema" style="height: <?php echo $top; ?>em;">
-<script type="text/javascript">
-table_pos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
-em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>;
-document.onmousemove = schema_mousemove;
-document.onmouseup = schema_mouseup;
-</script>
-<?php
-foreach ($schema as $name => $table) {
- echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;' onmousedown='schema_mousedown(this, event);'>";
- echo '<a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($name) . '"><strong>' . htmlspecialchars($name) . "</strong></a><br />\n";
- foreach ($table["fields"] as $field) {
- $val = htmlspecialchars($field["field"]);
- if (preg_match('~char|text~', $field["type"])) {
- $val = "<span class='char'>$val</span>";
- } elseif (preg_match('~date|time|year~', $field["type"])) {
- $val = "<span class='date'>$val</span>";
- } elseif (preg_match('~binary|blob~', $field["type"])) {
- $val = "<span class='binary'>$val</span>";
- } elseif (preg_match('~enum|set~', $field["type"])) {
- $val = "<span class='enum'>$val</span>";
- }
- echo ($field["primary"] ? "<em>$val</em>" : $val) . "<br />\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 '<div class="references" title="' . htmlspecialchars($target_name) . "\" id='refs$left-" . ($i++) . "' style='left: $left1" . "em; top: " . $table["fields"][$source]["pos"] . "em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: " . (-$left1) . "em;'></div></div>\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 '<div class="references" title="' . htmlspecialchars($target_name) . "\" id='refd$left-" . ($i++) . "' style='left: $left1" . "em; top: " . $table["fields"][$target]["pos"] . "em; height: 1.25em; background: url(arrow.gif) no-repeat right center;'><div style='height: .5em; border-bottom: 1px solid Gray; width: " . (-$left1) . "em;'></div></div>\n";
- }
- }
- }
- echo "</div>\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 "<div class='references' id='refl$left' style='left: $left" . "em; top: $min_pos" . "em; padding: .5em 0;' /><div style='border-right: 1px solid Gray; margin-top: 1px; height: " . ($max_pos - $min_pos) . "em;'></div></div>\n";
- }
- }
-}
-?>
-</div>
+++ /dev/null
-<?php
-$functions = array("char_length", "from_unixtime", "hex", "lower", "round", "sec_to_time", "time_to_sec", "unix_timestamp", "upper");
-$grouping = array("avg", "count", "distinct", "group_concat", "max", "min", "sum");
-$table_status = table_status($_GET["select"]);
-$indexes = indexes($_GET["select"]);
-$operators = array("=", "<", ">", "<=", ">=", "!=", "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 "<p>";
-if (isset($rights["insert"])) {
- //! pass search values forth and back
- echo '<a href="' . htmlspecialchars($SELF) . 'edit=' . urlencode($_GET['select']) . '">' . lang('New item') . '</a> ';
-}
-echo '<a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($_GET['select']) . '">' . lang('Table structure') . '</a>';
-echo "</p>\n";
-
-if (!$columns) {
- echo "<p class='error'>" . lang('Unable to select the table') . ($fields ? "" : ": " . htmlspecialchars($dbh->error)) . ".</p>\n";
-} else {
- echo "<form action='' id='form'>\n";
- echo "<fieldset><legend>" . lang('Select') . "</legend>\n";
- if (strlen($_GET["server"])) {
- echo '<input type="hidden" name="server" value="' . htmlspecialchars($_GET["server"]) . '" />';
- }
- echo '<input type="hidden" name="db" value="' . htmlspecialchars($_GET["db"]) . '" />';
- echo '<input type="hidden" name="select" value="' . htmlspecialchars($_GET["select"]) . '" />';
- echo "\n";
- $i = 0;
- $fun_group = array(lang('Functions') => $functions, lang('Aggregation') => $grouping);
- foreach ($select as $key => $val) {
- $val = $_GET["columns"][$key];
- echo "<div><select name='columns[$i][fun]'><option></option>" . optionlist($fun_group, $val["fun"]) . "</select>";
- echo "<select name='columns[$i][col]'><option></option>" . optionlist($columns, $val["col"]) . "</select></div>\n";
- $i++;
- }
- echo "<div><select name='columns[$i][fun]' onchange='this.nextSibling.onchange();'><option></option>" . optionlist($fun_group) . "</select>";
- echo "<select name='columns[$i][col]' onchange='select_add_row(this);'><option></option>" . optionlist($columns) . "</select></div>\n";
- echo "</fieldset>\n";
-
- echo "<fieldset><legend>" . lang('Search') . "</legend>\n";
- foreach ($indexes as $i => $index) {
- if ($index["type"] == "FULLTEXT") {
- echo "(<i>" . implode("</i>, <i>", array_map('htmlspecialchars', $index["columns"])) . "</i>) AGAINST";
- echo ' <input name="fulltext[' . $i . ']" value="' . htmlspecialchars($_GET["fulltext"][$i]) . '" />';
- echo "<label><input type='checkbox' name='boolean[$i]' value='1'" . (isset($_GET["boolean"][$i]) ? " checked='checked'" : "") . " />" . lang('BOOL') . "</label>";
- echo "<br />\n";
- }
- }
- $i = 0;
- foreach ((array) $_GET["where"] as $val) {
- if (strlen("$val[col]$val[val]") && in_array($val["op"], $operators)) {
- echo "<div><select name='where[$i][col]'><option value=''>" . lang('(anywhere)') . "</option>" . optionlist($columns, $val["col"]) . "</select>";
- echo "<select name='where[$i][op]' onchange='where_change(this);'>" . optionlist($operators, $val["op"]) . "</select>";
- echo "<input name='where[$i][val]' value=\"" . htmlspecialchars($val["val"]) . '"' . (ereg('NULL$', $val["op"]) ? " class='hidden'" : "") . " /></div>\n";
- $i++;
- }
- }
- echo "<div><select name='where[$i][col]' onchange='select_add_row(this);'><option value=''>" . lang('(anywhere)') . "</option>" . optionlist($columns) . "</select>";
- echo "<select name='where[$i][op]' onchange='where_change(this);'>" . optionlist($operators) . "</select>";
- echo "<input name='where[$i][val]' /></div>\n";
- echo "</fieldset>\n";
-
- echo "<fieldset><legend>" . lang('Limit') . "</legend><div>";
- echo hidden_fields(array("order" => (array) $_GET["order"], "desc" => (array) $_GET["desc"]));
- echo "<input name='limit' size='3' value=\"" . htmlspecialchars($limit) . "\" /></div></fieldset>\n";
-
- if (isset($text_length)) {
- echo "<fieldset><legend>" . lang('Text length') . "</legend><div><input name='text_length' size='3' value=\"" . htmlspecialchars($text_length) . "\" /></div></fieldset>\n";
- }
-
- echo "<fieldset><legend>" . lang('Action') . "</legend><div><input type='submit' value='" . lang('Select') . "' /></div></fieldset>\n";
- echo "</form>\n";
-
- $query = "SELECT " . ($select ? (count($group) < count($select) ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $select) : "*") . " $from";
- echo "<p><code class='jush-sql'>" . htmlspecialchars($query) . "</code> <a href='" . htmlspecialchars($SELF) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a></p>\n";
-
- $result = $dbh->query($query);
- if (!$result) {
- echo "<p class='error'>" . htmlspecialchars($dbh->error) . "</p>\n";
- } else {
- echo "<form action='' method='post' enctype='multipart/form-data'>\n";
- if (!$result->num_rows) {
- echo "<p class='message'>" . lang('No rows.') . "</p>\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 "<table cellspacing='0' class='nowrap'>\n";
- for ($j=0; $row = $result->fetch_assoc(); $j++) {
- if (!$j) {
- echo '<thead><tr><td><input type="checkbox" id="all-page" onclick="form_check(this, /check/);" /></td>';
- foreach ($row as $key => $val) {
- $pos = array_search($key, (array) $_GET["order"]);
- $uri = remove_from_uri($pos !== false ? "(order|desc)%5B$pos%5D" : "");
- $pos2 = 0;
- if ($_GET["order"]) {
- $pos2 = max(array_keys($_GET["order"]));
- $pos2 += ($pos2 !== $pos ? 1 : 0);
- }
- echo '<th onmouseover="popup(this);" onmouseout="popdown(this);"><a href="' . htmlspecialchars(remove_from_uri('(order|desc)[^=]*') . '&order%5B0%5D=' . urlencode($key) . ($_GET["order"] == array($key) && !$_GET["desc"][0] ? '&desc%5B0%5D=1' : '')) . '">' . htmlspecialchars($key) . '</a><span class="hidden">';
- echo '<a href="' . htmlspecialchars("$uri&order%5B$pos2%5D=" . urlencode($key)) . "\"><img src='up.gif' alt='^' title='" . lang('ASC') . "' /></a>";
- echo '<a href="' . htmlspecialchars("$uri&order%5B$pos2%5D=" . urlencode($key) . "&desc%5B$pos2%5D=1") . "\"><img src='down.gif' alt='v' title='" . lang('DESC') . "' /></a>";
- echo '</span></th>';
- }
- echo "</tr></thead>\n";
- }
- $unique_idf = implode('&', unique_idf($row, $indexes));
- echo '<tr' . odd() . '><td><input type="checkbox" name="check[]" value="' . $unique_idf . '" onclick="this.form[\'all\'].checked = false; form_uncheck(\'all-page\');" />' . (count($select) == count($group) && $_GET["db"] != "information_schema" ? ' <a href="' . htmlspecialchars($SELF) . 'edit=' . urlencode($_GET['select']) . '&' . $unique_idf . '">' . lang('edit') . '</a></td>' : '');
- foreach ($row as $key => $val) {
- if (!isset($val)) {
- $val = "<i>NULL</i>";
- } elseif (preg_match('~blob|binary~', $fields[$key]["type"]) && !is_utf8($val)) {
- $val = '<a href="' . htmlspecialchars($SELF) . 'download=' . urlencode($_GET["select"]) . '&field=' . urlencode($key) . '&' . $unique_idf . '">' . lang('%d byte(s)', strlen($val)) . '</a>';
- } else {
- if (!strlen(trim($val))) {
- $val = " ";
- } elseif (intval($text_length) > 0 && preg_match('~blob|text~', $fields[$key]["type"])) {
- $val = shorten_utf8($val, intval($text_length));
- } else {
- $val = nl2br(htmlspecialchars($val));
- if ($fields[$key]["type"] == "char") {
- $val = "<code>$val</code>";
- }
- }
- foreach ((array) $foreign_keys[$key] as $foreign_key) {
- if (count($foreign_keys[$key]) == 1 || count($foreign_key["source"]) == 1) {
- $val = "\">$val</a>";
- foreach ($foreign_key["source"] as $i => $source) {
- $val = "&where%5B$i%5D%5Bcol%5D=" . urlencode($foreign_key["target"][$i]) . "&where%5B$i%5D%5Bop%5D=%3D&where%5B$i%5D%5Bval%5D=" . urlencode($row[$source]) . $val;
- }
- $val = '<a href="' . htmlspecialchars(strlen($foreign_key["db"]) ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), $SELF) : $SELF) . 'select=' . htmlspecialchars($foreign_key["table"]) . $val; // InnoDB supports non-UNIQUE keys
- break;
- }
- }
- }
- echo "<td>$val</td>";
- }
- echo "</tr>\n";
- }
- echo "</table>\n";
-
- echo "<p>";
- $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) . ') <label><input type="checkbox" name="all" value="1" />' . lang('whole result') . "</label></p>\n";
-
- echo ($_GET["db"] != "information_schema" ? "<fieldset><legend>" . lang('Edit') . "</legend><div><input type='submit' value='" . lang('Edit') . "' /> <input type='submit' name='clone' value='" . lang('Clone') . "' /> <input type='submit' name='delete' value='" . lang('Delete') . "'$confirm /></div></fieldset>\n" : "");
- echo "<fieldset><legend>" . lang('Export') . "</legend><div>$dump_output $dump_format <input type='submit' name='export' value='" . lang('Export') . "' /></div></fieldset>\n";
- }
- $result->free();
- echo "<fieldset><legend>" . lang('CSV Import') . "</legend><div><input type='hidden' name='token' value='$token' /><input type='file' name='csv_file' /> <input type='submit' name='import' value='" . lang('Import') . "' /></div></fieldset>\n";
- echo "</form>\n";
- }
-}
+++ /dev/null
-<?php
-if (isset($_POST["query"])) {
- setcookie("highlight", $_POST["highlight"], strtotime("+1 month"), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]));
- $_COOKIE["highlight"] = $_POST["highlight"];
-}
-page_header(lang('SQL command'), $error);
-
-if (!$error && $_POST) {
- if (is_string($query = (isset($_POST["query"]) ? $_POST["query"] : get_file("sql_file")))) {
- @set_time_limit(0);
- $query = str_replace("\r", "", $query);
- $delimiter = ";";
- $offset = 0;
- $empty = true;
- $space = "(\\s+|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)";
- $dbh2 = (strlen($_GET["db"]) ? connect() : null); // connection for exploring indexes (to not replace FOUND_ROWS()) //! PDO - silent error
- if (is_object($dbh2)) {
- $dbh2->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 "<pre class='jush-sql'>" . htmlspecialchars(trim(substr($query, 0, $match[0][1]))) . "</pre>\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 "<p class='error'>" . lang('Error in query') . ": " . htmlspecialchars($dbh->error) . "</p>\n";
- if ($_POST["error_stops"]) {
- break;
- }
- } else {
- $end = explode(" ", microtime());
- echo "<p class='time'>" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "</p>\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 "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "</p>\n";
- }
- } while ($dbh->next_result());
- }
- $query = substr($query, $match[0][1] + strlen($match[0][0]));
- $offset = 0;
- }
- }
- }
- if ($empty) {
- echo "<p class='message'>" . lang('No commands to execute.') . "</p>\n";
- }
- } else {
- echo "<p class='error'>" . lang('Unable to upload a file.') . "</p>\n";
- }
-}
-?>
-
-<form action="" method="post">
-<p><textarea name="query" rows="20" cols="80" style="width: 98%;"><?php echo htmlspecialchars($_POST ? $_POST["query"] : (strlen($_GET["history"]) ? $_SESSION["history"][$_GET["server"]][$_GET["db"]][$_GET["history"]] : $_GET["sql"])); ?></textarea></p>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Execute'); ?>" />
-<label><input type="checkbox" name="error_stops" value="1"<?php echo ($_POST["error_stops"] ? " checked='checked'" : ""); ?> /><?php echo lang('Stop on error'); ?></label>
-</p>
-</form>
-
-<?php
-if (!ini_get("file_uploads")) {
- echo "<p>" . lang('File uploads are disabled.') . "</p>\n";
-} else { ?>
-<form action="" method="post" enctype="multipart/form-data">
-<p>
-<?php echo lang('File upload'); ?>: <input type="file" name="sql_file" />
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Execute'); ?>" />
-</p>
-</form>
-<?php } ?>
+++ /dev/null
-<?php
-$result = $dbh->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 "<table cellspacing='0'>\n";
- while ($row = $result->fetch_assoc()) {
- if (!$row["auto_increment"]) {
- $auto_increment_only = false;
- }
- echo "<tr><th>" . htmlspecialchars($row["Field"]) . "</th><td>$row[Type]" . ($row["Null"] == "YES" ? " <i>NULL</i>" : "") . "</td></tr>\n";
- }
- echo "</table>\n";
- $result->free();
-
- echo "<p>";
- echo '<a href="' . htmlspecialchars($SELF) . 'create=' . urlencode($_GET["table"]) . '">' . lang('Alter table') . '</a>';
- echo ($auto_increment_only ? '' : ' <a href="' . htmlspecialchars($SELF) . 'default=' . urlencode($_GET["table"]) . '">' . lang('Default values') . '</a>');
- echo ' <a href="' . htmlspecialchars($SELF) . 'select=' . urlencode($_GET["table"]) . '">' . lang('Select table') . '</a>';
- echo ' <a href="' . htmlspecialchars($SELF) . 'edit=' . urlencode($_GET["table"]) . '">' . lang('New item') . '</a>';
- echo "</p>\n";
-
- echo "<h3>" . lang('Indexes') . "</h3>\n";
- $indexes = indexes($_GET["table"]);
- if ($indexes) {
- echo "<table cellspacing='0'>\n";
- foreach ($indexes as $index) {
- ksort($index["columns"]);
- $print = array();
- foreach ($index["columns"] as $key => $val) {
- $print[] = "<i>" . htmlspecialchars($val) . "</i>" . ($index["lengths"][$key] ? "(" . $index["lengths"][$key] . ")" : "");
- }
- echo "<tr><td>$index[type]</td><td>" . implode(", ", $print) . "</td></tr>\n";
- }
- echo "</table>\n";
- }
- echo '<p><a href="' . htmlspecialchars($SELF) . 'indexes=' . urlencode($_GET["table"]) . '">' . lang('Alter indexes') . "</a></p>\n";
-
- if ($table_status["Engine"] == "InnoDB") {
- echo "<h3>" . lang('Foreign keys') . "</h3>\n";
- $foreign_keys = foreign_keys($_GET["table"]);
- if ($foreign_keys) {
- echo "<table cellspacing='0'>\n";
- foreach ($foreign_keys as $name => $foreign_key) {
- echo "<tr>";
- echo "<td><i>" . implode("</i>, <i>", array_map('htmlspecialchars', $foreign_key["source"])) . "</i></td>";
- $link = (strlen($foreign_key["db"]) ? "<strong>" . htmlspecialchars($foreign_key["db"]) . "</strong>." : "") . htmlspecialchars($foreign_key["table"]);
- echo '<td><a href="' . htmlspecialchars(strlen($foreign_key["db"]) ? preg_replace('~db=[^&]*~', "db=" . urlencode($foreign_key["db"]), $SELF) : $SELF) . "table=" . urlencode($foreign_key["table"]) . "\">$link</a>";
- echo "(<em>" . implode("</em>, <em>", array_map('htmlspecialchars', $foreign_key["target"])) . "</em>)</td>";
- echo '<td>' . (!strlen($foreign_key["db"]) ? '<a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '&name=' . urlencode($name) . '">' . lang('Alter') . '</a>' : ' ') . '</td>';
- echo "</tr>\n";
- }
- echo "</table>\n";
- }
- echo '<p><a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '">' . lang('Add foreign key') . "</a></p>\n";
- }
-}
-
-if ($dbh->server_info >= 5) {
- echo "<h3>" . lang('Triggers') . "</h3>\n";
- $result = $dbh->query("SHOW TRIGGERS LIKE '" . $dbh->escape_string(addcslashes($_GET["table"], "%_")) . "'");
- if ($result->num_rows) {
- echo "<table cellspacing='0'>\n";
- while ($row = $result->fetch_assoc()) {
- echo "<tr valign='top'><td>$row[Timing]</td><td>$row[Event]</td><th>" . htmlspecialchars($row["Trigger"]) . "</th><td><a href=\"" . htmlspecialchars($SELF) . 'trigger=' . urlencode($_GET["table"]) . '&name=' . urlencode($row["Trigger"]) . '">' . lang('Alter') . "</a></td></tr>\n";
- }
- echo "</table>\n";
- }
- $result->free();
- echo '<p><a href="' . htmlspecialchars($SELF) . 'trigger=' . urlencode($_GET["table"]) . '">' . lang('Add trigger') . "</a></p>\n";
-}
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/_coverage.php?start=1</td>
+ <td>/adminer/coverage.php?start=1</td>
<td></td>
</tr>
<tr>
<td>open</td>
- <td>/adminer/?lang=en&username=</td>
+ <td>/adminer/adminer/?lang=en&username=</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/</td>
+ <td>/adminer/adminer/</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&select=albums</td>
+ <td>/adminer/adminer/?db=selenium&select=albums</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&select=albums</td>
+ <td>/adminer/adminer/?db=selenium&select=albums</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&edit=albums&where%5Bid%5D=2</td>
+ <td>/adminer/adminer/?db=selenium&edit=albums&where%5Bid%5D=2</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&edit=albums&where%5Bid%5D=2</td>
+ <td>/adminer/adminer/?db=selenium&edit=albums&where%5Bid%5D=2</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&select=albums</td>
+ <td>/adminer/adminer/?db=selenium&select=albums</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?user=</td>
+ <td>/adminer/adminer/?user=</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?processlist=</td>
+ <td>/adminer/adminer/?processlist=</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&dump=</td>
+ <td>/adminer/adminer/?db=selenium&dump=</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&event=</td>
+ <td>/adminer/adminer/?db=selenium&event=</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&procedure=</td>
+ <td>/adminer/adminer/?db=selenium&procedure=</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium</td>
+ <td>/adminer/adminer/?db=selenium</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&table=interprets</td>
+ <td>/adminer/adminer/?db=selenium&table=interprets</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&table=interprets</td>
+ <td>/adminer/adminer/?db=selenium&table=interprets</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&table=interprets&lang=en</td>
+ <td>/adminer/adminer/?db=selenium&table=interprets&lang=en</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&table=albums</td>
+ <td>/adminer/adminer/?db=selenium&table=albums</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&table=interprets</td>
+ <td>/adminer/adminer/?db=selenium&table=interprets</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&trigger=albums</td>
+ <td>/adminer/adminer/?db=selenium&trigger=albums</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&createv=</td>
+ <td>/adminer/adminer/?db=selenium&createv=</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&edit=interprets</td>
+ <td>/adminer/adminer/?db=selenium&edit=interprets</td>
<td></td>
</tr>
<tr>
</tr>
<tr>
<td>open</td>
- <td>/adminer/?db=selenium&edit=albums</td>
+ <td>/adminer/adminer/?db=selenium&edit=albums</td>
<td></td>
</tr>
<tr>
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/</td>
+ <td>/adminer/adminer/</td>
<td></td>
</tr>
<tr>
</tr>
<tr>
<td>open</td>
- <td>/adminer/_coverage.php</td>
+ <td>/adminer/coverage.php</td>
<td></td>
</tr>
+++ /dev/null
-<?php
-$trigger_time = array("BEFORE", "AFTER");
-$trigger_event = array("INSERT", "UPDATE", "DELETE");
-
-$dropped = false;
-if ($_POST && !$error) {
- if (strlen($_GET["name"])) {
- $dropped = query_redirect("DROP TRIGGER " . idf_escape($_GET["name"]), $SELF . "table=" . urlencode($_GET["trigger"]), lang('Trigger has been dropped.'), $_POST["drop"], !$_POST["dropped"]);
- }
- if (!$_POST["drop"]) {
- if (in_array($_POST["Timing"], $trigger_time) && in_array($_POST["Event"], $trigger_event)) {
- query_redirect("CREATE TRIGGER " . idf_escape($_POST["Trigger"]) . " $_POST[Timing] $_POST[Event] ON " . idf_escape($_GET["trigger"]) . " FOR EACH ROW\n$_POST[Statement]", $SELF . "table=" . urlencode($_GET["trigger"]), (strlen($_GET["name"]) ? lang('Trigger has been altered.') : lang('Trigger has been created.')));
- }
- }
-}
-page_header((strlen($_GET["name"]) ? lang('Alter trigger') . ": " . htmlspecialchars($_GET["name"]) : lang('Create trigger')), $error, array("table" => $_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();
-}
-?>
-
-<form action="" method="post" id="form">
-<table cellspacing="0">
-<tr><th><?php echo lang('Time'); ?></th><td><select name="Timing" onchange="if (/^<?php echo htmlspecialchars(preg_quote($_GET["trigger"], "/")); ?>_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '<?php echo htmlspecialchars(addcslashes($_GET["trigger"], "\r\n'\\")); ?>_' + this.value.charAt(0).toLowerCase() + this.form['Event'].value.charAt(0).toLowerCase();"><?php echo optionlist($trigger_time, $row["Timing"]); ?></select></td></tr>
-<tr><th><?php echo lang('Event'); ?></th><td><select name="Event" onchange="this.form['Timing'].onchange();"><?php echo optionlist($trigger_event, $row["Event"]); ?></select></td></tr>
-<tr><th><?php echo lang('Name'); ?></th><td><input name="Trigger" value="<?php echo htmlspecialchars($row["Trigger"]); ?>" maxlength="64" /></td></tr>
-</table>
-<p><textarea name="Statement" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["Statement"]); ?></textarea></p>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<?php if ($dropped) { ?><input type="hidden" name="dropped" value="1" /><?php } ?>
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (strlen($_GET["name"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-</form>
+++ /dev/null
-<?php
-$privileges = array("" => 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;
-}
-
-?>
-<form action="" method="post">
-<table cellspacing="0">
-<tr><th><?php echo lang('Username'); ?></th><td><input name="user" maxlength="16" value="<?php echo htmlspecialchars($row["user"]); ?>" /></td></tr>
-<tr><th><?php echo lang('Server'); ?></th><td><input name="host" maxlength="60" value="<?php echo htmlspecialchars($row["host"]); ?>" /></td></tr>
-<tr><th><?php echo lang('Password'); ?></th><td><input id="pass" name="pass" value="<?php echo htmlspecialchars($row["pass"]); ?>" /><?php if (!$row["hashed"]) { ?><script type="text/javascript">document.getElementById('pass').type = 'password';</script><?php } ?> <label><input type="checkbox" name="hashed" value="1"<?php if ($row["hashed"]) { ?> checked="checked"<?php } ?> onclick="this.form['pass'].type = (this.checked ? 'text' : 'password');" /><?php echo lang('Hashed'); ?></label></td></tr>
-</table>
-
-<?php
-//! MAX_* limits, REQUIRE
-echo "<table cellspacing='0'>\n";
-echo "<thead><tr><th colspan='2'>" . lang('Privileges') . "</th>";
-$i = 0;
-foreach ($grants as $object => $grant) {
- echo '<th>' . ($object != "*.*" ? '<input name="objects[' . $i . ']" value="' . htmlspecialchars($object) . '" size="10" />' : '<input type="hidden" name="objects[' . $i . ']" value="*.*" size="10" />*.*') . '</th>'; //! separate db, table, columns, PROCEDURE|FUNCTION, routine
- //! JS checkbox for all
- $i++;
-}
-echo "</tr></thead>\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 "<tr" . odd() . "><td" . ($desc ? ">$desc</td><td" : " colspan='2'") . ' title="' . htmlspecialchars($comment) . '"><i>' . htmlspecialchars($privilege) . "</i></td>";
- $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 "<td> </td>";
- } elseif (isset($_GET["grant"])) {
- echo "<td><select name=$name><option></option><option value='1'" . ($value ? " selected='selected'" : "") . ">" . lang('Grant') . "</option><option value='0'" . ($value == "0" ? " selected='selected'" : "") . ">" . lang('Revoke') . "</option></select></td>";
- } else {
- echo "<td align='center'><input type='checkbox' name=$name value='1'" . ($value ? " checked='checked'" : "") . " /></td>";
- }
- $i++;
- }
- echo "</tr>\n";
- }
-}
-echo "</table>\n";
-?>
-<p>
-<input type="hidden" name="token" value="<?php echo $token; ?>" />
-<input type="submit" value="<?php echo lang('Save'); ?>" />
-<?php if (isset($_GET["host"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
-</p>
-</form>
+++ /dev/null
-<?php
-page_header(lang('View') . ": " . htmlspecialchars($_GET["view"]));
-$view = view($_GET["view"]);
-echo "<pre class='jush-sql'>" . htmlspecialchars($view["select"]) . "</pre>\n";
-echo '<p><a href="' . htmlspecialchars($SELF) . 'createv=' . urlencode($_GET["view"]) . '">' . lang('Alter view') . "</a></p>\n";