diff --git a/adminer/include/editing.inc.php b/adminer/include/editing.inc.php index 0bb59de4..8aa7f068 100644 --- a/adminer/include/editing.inc.php +++ b/adminer/include/editing.inc.php @@ -275,3 +275,15 @@ function grant($grant, $privileges, $columns, $on) { } return queries("$grant " . preg_replace('~(GRANT OPTION)\\([^)]*\\)~', '\\1', implode("$columns, ", $privileges) . $columns) . $on); } + +function drop_create($drop, $create, $location, $message_drop, $message_alter, $message_create, $name) { + if ($_POST["drop"]) { + return query_redirect($drop, $location, $message_drop, true, !$_POST["dropped"]); + } + $dropped = strlen($name) && ($_POST["dropped"] || queries($drop)); + $created = queries($create); + if (!query_redirect(queries(), $location, (strlen($name) ? $message_alter : $message_create), $created, false, !$created) && $dropped) { + $_SESSION["messages"][] = $message_drop; + } + return $dropped; +} diff --git a/adminer/procedure.inc.php b/adminer/procedure.inc.php index 1d42eaba..5638aee5 100644 --- a/adminer/procedure.inc.php +++ b/adminer/procedure.inc.php @@ -4,24 +4,23 @@ $routine = (isset($_GET["function"]) ? "FUNCTION" : "PROCEDURE"); $dropped = false; if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) { - if (strlen($PROCEDURE)) { - $dropped = query_redirect("DROP $routine " . idf_escape($PROCEDURE), substr(ME, 0, -1), lang('Routine has been dropped.'), $_POST["drop"], !$_POST["dropped"]); - } - if (!$_POST["drop"]) { - $set = array(); - $fields = (array) $_POST["fields"]; - ksort($fields); // enforce fields order - 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"); - } + $set = array(); + $fields = (array) $_POST["fields"]; + ksort($fields); // enforce fields order + 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(ME, 0, -1), (strlen($PROCEDURE) ? lang('Routine has been altered.') : lang('Routine has been created.'))); } + $dropped = drop_create( + "DROP $routine " . idf_escape($PROCEDURE), + "CREATE $routine " . idf_escape($_POST["name"]) . " (" . implode(", ", $set) . ")" . (isset($_GET["function"]) ? " RETURNS" . process_type($_POST["returns"], "CHARACTER SET") : "") . "\n$_POST[definition]", + substr(ME, 0, -1), + lang('Routine has been dropped.'), + lang('Routine has been altered.'), + lang('Routine has been created.'), + $PROCEDURE + ); } page_header((strlen($PROCEDURE) ? (isset($_GET["function"]) ? lang('Alter function') : lang('Alter procedure')) . ": " . h($PROCEDURE) : (isset($_GET["function"]) ? lang('Create function') : lang('Create procedure'))), $error); @@ -42,7 +41,7 @@ if ($_POST) {
-
+

diff --git a/adminer/trigger.inc.php b/adminer/trigger.inc.php index 03d794f9..ae9f4e45 100644 --- a/adminer/trigger.inc.php +++ b/adminer/trigger.inc.php @@ -4,15 +4,16 @@ $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"]), ME . "table=" . urlencode($TABLE), 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($TABLE) . " FOR EACH ROW\n$_POST[Statement]", ME . "table=" . urlencode($TABLE), (strlen($_GET["name"]) ? lang('Trigger has been altered.') : lang('Trigger has been created.'))); - } - } +if ($_POST && !$error && in_array($_POST["Timing"], $trigger_time) && in_array($_POST["Event"], $trigger_event)) { + $dropped = drop_create( + "DROP TRIGGER " . idf_escape($_GET["name"]), + "CREATE TRIGGER " . idf_escape($_POST["Trigger"]) . " $_POST[Timing] $_POST[Event] ON " . idf_escape($TABLE) . " FOR EACH ROW\n$_POST[Statement]", + ME . "table=" . urlencode($TABLE), + lang('Trigger has been dropped.'), + lang('Trigger has been altered.'), + lang('Trigger has been created.'), + $_GET["name"] + ); } page_header((strlen($_GET["name"]) ? lang('Alter trigger') . ": " . h($_GET["name"]) : lang('Create trigger')), $error, array("table" => $TABLE)); diff --git a/adminer/view.inc.php b/adminer/view.inc.php index 64e672c4..de39ebb6 100644 --- a/adminer/view.inc.php +++ b/adminer/view.inc.php @@ -2,10 +2,15 @@ $TABLE = $_GET["view"]; $dropped = false; if ($_POST && !$error) { - if (strlen($TABLE)) { - $dropped = query_redirect("DROP VIEW " . idf_escape($TABLE), substr(ME, 0, -1), lang('View has been dropped.'), false, !$_POST["dropped"]); - } - query_redirect("CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", ME . "table=" . urlencode($_POST["name"]), (strlen($TABLE) ? lang('View has been altered.') : lang('View has been created.'))); + $dropped = drop_create( + "DROP VIEW " . idf_escape($TABLE), + "CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", + substr(ME, 0, -1), + lang('View has been dropped.'), + lang('View has been altered.'), + lang('View has been created.'), + $TABLE + ); } page_header((strlen($TABLE) ? lang('Alter view') : lang('Create view')), $error, array("table" => $TABLE), $TABLE);