2007-07-02 20:21:30 +00:00
|
|
|
<?php
|
2007-07-09 06:12:22 +00:00
|
|
|
if ($_POST && !$error) {
|
2007-07-02 20:21:30 +00:00
|
|
|
if ($_POST["drop"]) {
|
2007-07-10 13:30:42 +00:00
|
|
|
if ($mysql->query("DROP DATABASE " . idf_escape($_GET["db"]))) {
|
2007-07-25 14:09:08 +00:00
|
|
|
unset($_SESSION["databases"][$_GET["server"]]);
|
2007-07-10 18:53:35 +00:00
|
|
|
redirect(substr(preg_replace('~db=[^&]*&~', '', $SELF), 0, -1), lang('Database has been dropped.'));
|
2007-07-02 20:21:30 +00:00
|
|
|
}
|
|
|
|
} elseif ($_GET["db"] !== $_POST["name"]) {
|
2007-07-10 14:16:44 +00:00
|
|
|
if ($mysql->query("CREATE DATABASE " . idf_escape($_POST["name"]) . ($_POST["collation"] ? " COLLATE '" . $mysql->escape_string($_POST["collation"]) . "'" : ""))) {
|
2007-07-16 11:41:49 +00:00
|
|
|
unset($_SESSION["databases"][$_GET["server"]]);
|
2007-07-02 20:21:30 +00:00
|
|
|
if (!strlen($_GET["db"])) {
|
2007-07-27 11:43:44 +00:00
|
|
|
redirect($SELF . "db=" . urlencode($_POST["name"]), lang('Database has been created.'));
|
2007-07-02 20:21:30 +00:00
|
|
|
}
|
2007-07-10 13:30:42 +00:00
|
|
|
$result = $mysql->query("SHOW TABLES");
|
|
|
|
while ($row = $result->fetch_row()) {
|
|
|
|
if (!$mysql->query("RENAME TABLE " . idf_escape($row[0]) . " TO " . idf_escape($_POST["name"]) . "." . idf_escape($row[0]))) {
|
2007-07-02 20:21:30 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2007-07-10 13:30:42 +00:00
|
|
|
$result->free();
|
2007-07-02 20:21:30 +00:00
|
|
|
if (!$row) {
|
2007-07-10 13:30:42 +00:00
|
|
|
$mysql->query("DROP DATABASE " . idf_escape($_GET["db"]));
|
2007-07-10 18:53:35 +00:00
|
|
|
redirect(preg_replace('~db=[^&]*&~', '', $SELF) . "db=" . urlencode($_POST["name"]), lang('Database has been renamed.'));
|
2007-07-02 20:21:30 +00:00
|
|
|
}
|
|
|
|
}
|
2007-07-10 14:16:44 +00:00
|
|
|
} elseif (!$_POST["collation"] || $mysql->query("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE '" . $mysql->escape_string($_POST["collation"]) . "'")) {
|
2007-07-03 06:48:18 +00:00
|
|
|
redirect(substr($SELF, 0, -1), ($_POST["collation"] ? lang('Database has been altered.') : null));
|
2007-07-02 20:21:30 +00:00
|
|
|
}
|
2007-07-10 13:30:42 +00:00
|
|
|
$error = $mysql->error;
|
2007-07-02 20:21:30 +00:00
|
|
|
}
|
2008-04-10 14:37:10 +00:00
|
|
|
page_header(strlen($_GET["db"]) ? lang('Alter database') : lang('Create database'), $error, array(), $_GET["db"]);
|
2007-07-02 20:21:30 +00:00
|
|
|
|
2008-03-18 10:29:20 +00:00
|
|
|
$collations = collations();
|
|
|
|
if ($_POST) {
|
2007-07-02 20:21:30 +00:00
|
|
|
$name = $_POST["name"];
|
2007-07-06 13:00:58 +00:00
|
|
|
$collate = $_POST["collation"];
|
2007-07-02 20:21:30 +00:00
|
|
|
} else {
|
|
|
|
$name = $_GET["db"];
|
2007-07-06 13:00:58 +00:00
|
|
|
$collate = array();
|
2007-07-26 11:11:58 +00:00
|
|
|
if (!strlen($_GET["db"])) {
|
|
|
|
$result = $mysql->query("SHOW GRANTS");
|
|
|
|
while ($row = $result->fetch_row()) {
|
|
|
|
if (preg_match('~ ON (`(([^\\\\`]+|``|\\\\.)*)%`\\.\\*)?~', $row[0], $match) && $match[1]) {
|
|
|
|
$name = stripcslashes(idf_unescape($match[2]));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$result->free();
|
|
|
|
} elseif (($result = $mysql->query("SHOW CREATE DATABASE " . idf_escape($_GET["db"])))) {
|
2007-07-25 19:54:56 +00:00
|
|
|
$create = $mysql->result($result, 1);
|
|
|
|
if (preg_match('~ COLLATE ([^ ]+)~', $create, $match)) {
|
2007-07-06 13:00:58 +00:00
|
|
|
$collate = $match[1];
|
2007-07-25 19:54:56 +00:00
|
|
|
} elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $create, $match)) {
|
|
|
|
$collate = $collations[$match[1]][0];
|
2007-07-06 13:00:58 +00:00
|
|
|
}
|
2007-07-10 13:30:42 +00:00
|
|
|
$result->free();
|
2007-07-06 13:00:58 +00:00
|
|
|
}
|
2007-07-02 20:21:30 +00:00
|
|
|
}
|
|
|
|
?>
|
2007-07-09 14:47:46 +00:00
|
|
|
|
2007-07-11 21:06:19 +00:00
|
|
|
<form action="" method="post">
|
|
|
|
<p>
|
2007-07-02 20:21:30 +00:00
|
|
|
<input name="name" value="<?php echo htmlspecialchars($name); ?>" maxlength="64" />
|
2007-07-25 19:54:56 +00:00
|
|
|
<select name="collation"><option value="">(<?php echo lang('collation'); ?>)</option><?php echo optionlist($collations, $collate); ?></select>
|
2007-07-09 06:12:22 +00:00
|
|
|
<input type="hidden" name="token" value="<?php echo $token; ?>" />
|
2007-07-02 20:21:30 +00:00
|
|
|
<input type="submit" value="<?php echo lang('Save'); ?>" />
|
2007-07-26 11:16:17 +00:00
|
|
|
<?php if (strlen($_GET["db"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>" onclick="return confirm('<?php echo lang('Are you sure?'); ?>');" /><?php } ?>
|
2007-07-11 21:06:19 +00:00
|
|
|
</p>
|
|
|
|
</form>
|