restart_session();
if ($_POST["drop"]) {
set_session("databases", null);
- query_redirect("DROP DATABASE " . idf_escape(DB), remove_from_uri("db|database"), lang('Database has been dropped.'));
+ queries_redirect(remove_from_uri("db|database"), lang('Database has been dropped.'), drop_databases(array(DB)));
} elseif (DB !== $_POST["name"]) {
// create or rename database
set_session("databases", null); // clear cache
$last = "";
foreach ($dbs as $db) {
if (count($dbs) == 1 || $db != "") { // ignore empty lines but always try to create single database
- if (!queries("CREATE DATABASE " . idf_escape($db) . ($_POST["collation"] ? " COLLATE " . $connection->quote($_POST["collation"]) : ""))) {
+ if (!create_database($db, $_POST["collation"])) {
$success = false;
}
$last = $db;
<form action="" method="post">
<p>
-<?php echo ($_POST["add_x"] || strpos($name, "\n")
+<?php
+echo ($_POST["add_x"] || strpos($name, "\n")
? '<textarea name="name" rows="10" cols="40">' . h($name) . '</textarea><br>'
: '<input name="name" value="' . h($name) . '" maxlength="64">'
-) . "\n"; ?>
-<?php echo html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $collate); ?>
+) . "\n";
+if ($collations) {
+ html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $collate);
+}
+?>
<input type="hidden" name="token" value="<?php echo $token; ?>">
<input type="submit" value="<?php echo lang('Save'); ?>">
<?php
return $connection->quote($val);
}
+ function create_database($db, $collation) {
+ return queries("CREATE DATABASE " . idf_escape($db) . ($collation ? " COLLATE " . idf_escape($collation) : ""));
+ }
+
+ function drop_databases($databases) {
+ return queries("DROP DATABASE " . implode(", ", array_map('idf_escape', $databases)));
+ }
+
function rename_database($name, $collation) {
if ($collation) {
queries("ALTER DATABASE " . idf_escape(DB) . " COLLATE " . idf_escape($collation));
return "BINARY " . $connection->quote($val);
}
+ /** Create database
+ * @param string
+ * @return string
+ */
+ function create_database($db, $collation) {
+ return queries("CREATE DATABASE " . idf_escape($db) . ($collation ? " COLLATE " . $connection->quote($collation) : ""));
+ }
+
+ /** Drop databases
+ * @param array
+ * @return bool
+ */
+ function drop_databases($databases) {
+ foreach ($databases as $db) {
+ if (!queries("DROP DATABASE " . idf_escape($db))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
/** Rename database from DB
* @param string new name
* @return string
function rename_database($name, $collation) {
global $connection;
$return = false;
- if (queries("CREATE DATABASE " . idf_escape($name) . ($collation ? " COLLATE " . $connection->quote($collation) : ""))) {
+ if (create_database($name, $collation)) {
//! move triggers
$return = true; // table list may by empty
foreach (tables_list() as $table) {
return $return;
}
+ /** Get trigger options
+ * @return array ("Timing" => array(), "Type" => array())
+ */
function trigger_options() {
return array(
"Timing" => array("BEFORE", "AFTER"),
return $link;
}
+ function close() {
+ $this->_link = @pg_connect($this->_string);
+ }
+
function query($query, $unbuffered = false) {
$result = @pg_query($this->_link, $query);
if (!$result) {
function select_db($database) {
return (DB == $database);
}
+
+ function close() {
+ }
}
}
return $connection->quote($val);
}
+ function create_database($db, $collation) {
+ return queries("CREATE DATABASE " . idf_escape($db) . ($collation ? " ENCODING " . idf_escape($collation) : ""));
+ }
+
+ function drop_databases($databases) {
+ global $connection;
+ $connection->close();
+ foreach ($databases as $db) {
+ if (!queries("DROP DATABASE " . idf_escape($db))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
function rename_database($name, $collation) {
//! current database cannot be renamed
return queries("ALTER DATABASE " . idf_escape(DB) . " RENAME TO " . idf_escape($name));
} else {
if ($_POST["db"] && !$error) {
set_session("databases", null);
- foreach ($_POST["db"] as $db) {
- if (!queries("DROP DATABASE " . idf_escape($db))) {
- break;
- }
- }
- queries_redirect(substr(ME, 0, -1), lang('Database has been dropped.'), !$connection->error);
+ queries_redirect(substr(ME, 0, -1), lang('Database has been dropped.'), drop_databases($_POST["db"]));
}
page_header(lang('Select database'), $error, false);