diff --git a/adminer/create.inc.php b/adminer/create.inc.php index 2176250b..eb37ad48 100644 --- a/adminer/create.inc.php +++ b/adminer/create.inc.php @@ -69,7 +69,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] } elseif ($dbh->server_info >= 5.1 && strlen($_GET["create"])) { $status .= "\nREMOVE PARTITIONING"; } - $location = $SELF . "table=" . urlencode($_POST["name"]); + $location = ME . "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 { diff --git a/adminer/database.inc.php b/adminer/database.inc.php index d70e37a3..b7bc6f67 100644 --- a/adminer/database.inc.php +++ b/adminer/database.inc.php @@ -2,7 +2,7 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP changes add.x to add_x 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.')); + query_redirect("DROP DATABASE " . idf_escape($_GET["db"]), substr(preg_replace('~db=[^&]*&~', '', ME), 0, -1), lang('Database has been dropped.')); } elseif ($_GET["db"] !== $_POST["name"]) { // create or rename database unset($_SESSION["databases"][$_GET["server"]]); // clear cache @@ -17,7 +17,7 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c $last = $db; } } - if (query_redirect(queries(), $SELF . "db=" . urlencode($last), lang('Database has been created.'), !strlen($_GET["db"]), false, $failed)) { + if (query_redirect(queries(), ME . "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]))) { @@ -28,14 +28,14 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c 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); + query_redirect(queries(), preg_replace('~db=[^&]*&~', '', ME) . "db=" . urlencode($_POST["name"]), lang('Database has been renamed.'), !$row, false, $row); } } else { // alter database if (!$_POST["collation"]) { - redirect(substr($SELF, 0, -1)); + redirect(substr(ME, 0, -1)); } - query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE " . $dbh->quote($_POST["collation"]), substr($SELF, 0, -1), lang('Database has been altered.')); + query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE " . $dbh->quote($_POST["collation"]), substr(ME, 0, -1), lang('Database has been altered.')); } } diff --git a/adminer/db.inc.php b/adminer/db.inc.php index d72f21d8..758c0c84 100644 --- a/adminer/db.inc.php +++ b/adminer/db.inc.php @@ -35,12 +35,12 @@ if ($tables_views && !$error) { } } } - query_redirect(queries(), substr($SELF, 0, -1), $message, $result, false, !$result); + query_redirect(queries(), substr(ME, 0, -1), $message, $result, false, !$result); } page_header(lang('Database') . ": " . h($_GET["db"]), $error, false); -echo '
' . lang('Alter database') . "\n"; -echo '
' . lang('Database schema') . "\n"; +echo '
' . lang('Alter database') . "\n"; +echo '
' . lang('Database schema') . "\n"; echo "
' . lang('Create view') . "\n"; + echo '
' . lang('Create view') . "\n"; echo "
' . lang('Create procedure') . ' ' . lang('Create function') . "\n"; + echo '
' . lang('Create procedure') . ' ' . lang('Create function') . "\n";
}
if ($dbh->server_info >= 5.1 && ($result = $dbh->query("SHOW EVENTS"))) {
@@ -101,12 +101,12 @@ if ($dbh->server_info >= 5.1 && ($result = $dbh->query("SHOW EVENTS"))) {
echo " \n";
while ($row = $result->fetch_assoc()) {
echo "" . lang('Name') . " " . lang('Schedule') . " " . lang('Start') . " " . lang('End') . "
' . lang('Create event') . "\n"; + echo '
' . lang('Create event') . "\n"; } diff --git a/adminer/edit.inc.php b/adminer/edit.inc.php index 03358e2f..a193a5d5 100644 --- a/adminer/edit.inc.php +++ b/adminer/edit.inc.php @@ -8,7 +8,10 @@ foreach ($fields as $name => $field) { } } if ($_POST && !$error && !isset($_GET["select"])) { - $location = ($_POST["insert"] ? $_SERVER["REQUEST_URI"] : $SELF . (isset($_GET["default"]) ? "table=" : "select=") . urlencode($_GET["edit"])); // "insert" to continue edit or insert + $location = ($_POST["insert"] // continue edit or insert + ? $_SERVER["REQUEST_URI"] + : ME . (isset($_GET["default"]) ? "table=" : "select=") . urlencode($_GET["edit"]) //! append &set converted to &where + ); $set = array(); foreach ($fields as $name => $field) { $val = process_input($field); @@ -70,9 +73,10 @@ if ($fields) { echo "
" . $adminer->fieldName($field);
+ $default = $_GET["set"][bracket_escape($name)];
$value = (isset($row)
? (strlen($row[$name]) && ($field["type"] == "enum" || $field["type"] == "set") ? intval($row[$name]) : $row[$name])
- : ($_POST["clone"] && $field["auto_increment"] ? "" : (isset($_GET["select"]) ? false : $field["default"]))
+ : ($_POST["clone"] && $field["auto_increment"] ? "" : (isset($_GET["select"]) ? false : (isset($default) ? $default : $field["default"])))
);
if (!$_POST["save"] && is_string($value)) {
$value = $adminer->editVal($value, $field);
diff --git a/adminer/event.inc.php b/adminer/event.inc.php
index 3e239899..b83730f7 100644
--- a/adminer/event.inc.php
+++ b/adminer/event.inc.php
@@ -4,7 +4,7 @@ $statuses = array("ENABLED" => "ENABLE", "DISABLED" => "DISABLE", "SLAVESIDE_DIS
if ($_POST && !$error) {
if ($_POST["drop"]) {
- query_redirect("DROP EVENT " . idf_escape($_GET["event"]), substr($SELF, 0, -1), lang('Event has been dropped.'));
+ query_redirect("DROP EVENT " . idf_escape($_GET["event"]), substr(ME, 0, -1), lang('Event has been dropped.'));
} elseif (in_array($_POST["INTERVAL_FIELD"], $intervals) && isset($statuses[$_POST["STATUS"]])) {
$schedule = "\nON SCHEDULE " . ($_POST["INTERVAL_VALUE"]
? "EVERY " . $dbh->quote($_POST["INTERVAL_VALUE"]) . " $_POST[INTERVAL_FIELD]"
@@ -19,7 +19,7 @@ if ($_POST && !$error) {
: "CREATE EVENT " . idf_escape($_POST["EVENT_NAME"]) . $schedule
) . "\n" . $statuses[$_POST["STATUS"]] . " COMMENT " . $dbh->quote($_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.')));
+ , substr(ME, 0, -1), (strlen($_GET["event"]) ? lang('Event has been altered.') : lang('Event has been created.')));
}
}
diff --git a/adminer/foreign.inc.php b/adminer/foreign.inc.php
index 709eda63..b3ceb687 100644
--- a/adminer/foreign.inc.php
+++ b/adminer/foreign.inc.php
@@ -1,7 +1,7 @@
$error"; //! no partitioning
}
}
diff --git a/adminer/functions.js b/adminer/functions.js
index bbc89b63..d3620f2f 100644
--- a/adminer/functions.js
+++ b/adminer/functions.js
@@ -6,7 +6,7 @@ function toggle(id) {
return true;
}
-function verify_version(version) {
+function verify_version() {
document.cookie = 'adminer_version=0';
var script = document.createElement('script');
script.src = 'https://adminer.svn.sourceforge.net/svnroot/adminer/trunk/released.js';
diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php
index f7ce3452..1c22e782 100644
--- a/adminer/include/adminer.inc.php
+++ b/adminer/include/adminer.inc.php
@@ -71,8 +71,7 @@ class Adminer {
* @return string
*/
function selectLinks($tableStatus) {
- global $SELF;
- return '' . lang('Table structure') . '';
+ return '' . lang('Table structure') . '';
}
/** Find backward keys for table
@@ -88,9 +87,8 @@ class Adminer {
* @return string
*/
function selectQuery($query) {
- global $SELF;
// it would be nice if $query can be passed by reference and printed value would be returned but call_user() doesn't allow reference parameters
- return "
" . h($query) . '' . lang('Edit') . ' " . h($query) . '' . lang('Edit') . ' |
---|
' . lang('Alter indexes') . "\n"; + echo '
' . lang('Alter indexes') . "\n"; if ($table_status["Engine"] == "InnoDB") { echo "
' . lang('Add foreign key') . "\n"; + echo '
' . lang('Add foreign key') . "\n"; } if ($dbh->server_info >= 5) { @@ -71,12 +71,12 @@ if ($result) { if ($result->num_rows) { echo "
$row[Timing] | $row[Event] | " . h($row["Trigger"]) . " | ' . lang('Alter') . "\n"; + echo " |
---|---|---|---|
$row[Timing] | $row[Event] | " . h($row["Trigger"]) . " | ' . lang('Alter') . "\n"; } echo " |
' . lang('Add trigger') . "\n"; + echo '
' . lang('Add trigger') . "\n"; } } } diff --git a/adminer/trigger.inc.php b/adminer/trigger.inc.php index 825a05e7..3bc6cbba 100644 --- a/adminer/trigger.inc.php +++ b/adminer/trigger.inc.php @@ -5,11 +5,11 @@ $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"]); + $dropped = query_redirect("DROP TRIGGER " . idf_escape($_GET["name"]), ME . "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.'))); + query_redirect("CREATE TRIGGER " . idf_escape($_POST["Trigger"]) . " $_POST[Timing] $_POST[Event] ON " . idf_escape($_GET["trigger"]) . " FOR EACH ROW\n$_POST[Statement]", ME . "table=" . urlencode($_GET["trigger"]), (strlen($_GET["name"]) ? lang('Trigger has been altered.') : lang('Trigger has been created.'))); } } } diff --git a/adminer/user.inc.php b/adminer/user.inc.php index 7984344f..ff09ca1f 100644 --- a/adminer/user.inc.php +++ b/adminer/user.inc.php @@ -63,7 +63,7 @@ if ($_POST && !$error) { $new_user = $dbh->quote($_POST["user"]) . "@" . $dbh->quote($_POST["host"]); // if $_GET["host"] is not set then $new_user is always different $pass = $dbh->quote($_POST["pass"]); if ($_POST["drop"]) { - query_redirect("DROP USER $old_user", $SELF . "privileges=", lang('User has been dropped.')); + query_redirect("DROP USER $old_user", ME . "privileges=", lang('User has been dropped.')); } else { if ($old_user == $new_user) { queries("SET PASSWORD FOR $new_user = " . ($_POST["hashed"] ? $pass : "PASSWORD($pass)")); @@ -106,7 +106,7 @@ if ($_POST && !$error) { } } } - query_redirect(queries(), $SELF . "privileges=", (isset($_GET["host"]) ? lang('User has been altered.') : lang('User has been created.')), !$error, false, $error); + query_redirect(queries(), ME . "privileges=", (isset($_GET["host"]) ? lang('User has been altered.') : lang('User has been created.')), !$error, false, $error); if ($old_user != $new_user) { // delete new user in case of an error $dbh->query("DROP USER $new_user"); diff --git a/adminer/view.inc.php b/adminer/view.inc.php index 3db85e18..42161020 100644 --- a/adminer/view.inc.php +++ b/adminer/view.inc.php @@ -2,9 +2,9 @@ $dropped = false; if ($_POST && !$error) { if (strlen($_GET["view"])) { - $dropped = query_redirect("DROP VIEW " . idf_escape($_GET["view"]), substr($SELF, 0, -1), lang('View has been dropped.'), false, !$_POST["dropped"]); + $dropped = query_redirect("DROP VIEW " . idf_escape($_GET["view"]), substr(ME, 0, -1), lang('View has been dropped.'), false, !$_POST["dropped"]); } - query_redirect("CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", $SELF . "table=" . urlencode($_POST["name"]), (strlen($_GET["view"]) ? lang('View has been altered.') : lang('View has been created.'))); + query_redirect("CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", ME . "table=" . urlencode($_POST["name"]), (strlen($_GET["view"]) ? lang('View has been altered.') : lang('View has been created.'))); } page_header((strlen($_GET["view"]) ? lang('Alter view') : lang('Create view')), $error, array("table" => $_GET["view"]), $_GET["view"]); diff --git a/changes.txt b/changes.txt index a77d993e..650a54a9 100644 --- a/changes.txt +++ b/changes.txt @@ -12,6 +12,7 @@ Link e-mails in select Show type in field name title (thanks to Jakub Sochor) Preselect now() for timestamp columns (thanks to paranoiq) Clear history (thanks to paranoiq) +Prefill insert by foreign key searches Remove Delete button from Edit page - use mass operation for it Faster multiple update, clone and delete Faster table list in navigation diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index 6b3454c5..9d6fa753 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -285,7 +285,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 } function editFunctions($field) { - return array(""); + return array($field["null"] || $field["auto_increment"] ? "" : "*"); } function editInput($table, $field, $attrs, $value) { @@ -296,11 +296,8 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 $id = idf_escape($foreign_key["target"][0]); $name = $this->rowDescription($foreign_key["table"]); if (strlen($name) && $dbh->result($dbh->query("SELECT COUNT(*) FROM " . idf_escape($foreign_key["table"]))) <= 1000) { // optionlist with more than 1000 options would be too big - $return = array(); + $return = array("" => ""); $result = $dbh->query("SELECT $id, $name FROM " . idf_escape($foreign_key["table"]) . " ORDER BY 2"); - if ($field["null"] || !$result->num_rows) { // empty