[adminer-svn] SF.net SVN: adminer:[1480] trunk/adminer
Database management in a single PHP file
Brought to you by:
jakubvrana
From: <jak...@us...> - 2010-04-22 23:02:34
|
Revision: 1480 http://adminer.svn.sourceforge.net/adminer/?rev=1480&view=rev Author: jakubvrana Date: 2010-04-22 23:02:28 +0000 (Thu, 22 Apr 2010) Log Message: ----------- Driver specific create and drop database Modified Paths: -------------- trunk/adminer/database.inc.php trunk/adminer/drivers/mssql.inc.php trunk/adminer/drivers/mysql.inc.php trunk/adminer/drivers/pgsql.inc.php trunk/adminer/include/connect.inc.php Modified: trunk/adminer/database.inc.php =================================================================== --- trunk/adminer/database.inc.php 2010-04-22 19:43:36 UTC (rev 1479) +++ trunk/adminer/database.inc.php 2010-04-22 23:02:28 UTC (rev 1480) @@ -3,7 +3,7 @@ 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 @@ -15,7 +15,7 @@ $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; @@ -55,11 +55,15 @@ <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 Modified: trunk/adminer/drivers/mssql.inc.php =================================================================== --- trunk/adminer/drivers/mssql.inc.php 2010-04-22 19:43:36 UTC (rev 1479) +++ trunk/adminer/drivers/mssql.inc.php 2010-04-22 23:02:28 UTC (rev 1480) @@ -359,6 +359,14 @@ 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)); Modified: trunk/adminer/drivers/mysql.inc.php =================================================================== --- trunk/adminer/drivers/mysql.inc.php 2010-04-22 19:43:36 UTC (rev 1479) +++ trunk/adminer/drivers/mysql.inc.php 2010-04-22 23:02:28 UTC (rev 1480) @@ -500,6 +500,27 @@ 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 @@ -508,7 +529,7 @@ 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) { @@ -648,6 +669,9 @@ return $return; } + /** Get trigger options + * @return array ("Timing" => array(), "Type" => array()) + */ function trigger_options() { return array( "Timing" => array("BEFORE", "AFTER"), Modified: trunk/adminer/drivers/pgsql.inc.php =================================================================== --- trunk/adminer/drivers/pgsql.inc.php 2010-04-22 19:43:36 UTC (rev 1479) +++ trunk/adminer/drivers/pgsql.inc.php 2010-04-22 23:02:28 UTC (rev 1480) @@ -52,6 +52,10 @@ return $link; } + function close() { + $this->_link = @pg_connect($this->_string); + } + function query($query, $unbuffered = false) { $result = @pg_query($this->_link, $query); if (!$result) { @@ -134,6 +138,9 @@ function select_db($database) { return (DB == $database); } + + function close() { + } } } @@ -301,6 +308,21 @@ 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)); Modified: trunk/adminer/include/connect.inc.php =================================================================== --- trunk/adminer/include/connect.inc.php 2010-04-22 19:43:36 UTC (rev 1479) +++ trunk/adminer/include/connect.inc.php 2010-04-22 23:02:28 UTC (rev 1480) @@ -7,12 +7,7 @@ } 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); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |