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) {