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 " ]) {
2008-09-02 08:42:14 +00:00
unset ( $_SESSION [ " databases " ][ $_GET [ " server " ]]);
query_redirect ( " DROP DATABASE " . idf_escape ( $_GET [ " db " ]), 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 " ]) {
2008-09-02 12:39:04 +00:00
unset ( $_SESSION [ " databases " ][ $_GET [ " server " ]]);
2009-06-11 11:13:45 +00:00
$dbs = explode ( " \n " , str_replace ( " \r " , " " , $_POST [ " name " ]));
$failed = false ;
foreach ( $dbs as $db ) {
if ( count ( $dbs ) == 1 || strlen ( $db )) {
if ( ! queries ( " CREATE DATABASE " . idf_escape ( $db ) . ( $_POST [ " collation " ] ? " COLLATE ' " . $dbh -> escape_string ( $_POST [ " collation " ]) . " ' " : " " ))) {
$failed = true ;
}
$last = $db ;
}
}
if ( query_redirect ( queries (), $SELF . " db= " . urlencode ( $last ), lang ( 'Database has been created.' ), ! strlen ( $_GET [ " db " ]), false , $failed )) {
2009-05-08 05:23:03 +00:00
$result = $dbh -> query ( " SHOW TABLES " );
2007-07-10 13:30:42 +00:00
while ( $row = $result -> fetch_row ()) {
2008-09-03 13:55:43 +00:00
if ( ! queries ( " 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 ) {
2009-06-11 11:13:45 +00:00
queries ( " DROP DATABASE " . idf_escape ( $_GET [ " db " ]));
2007-07-02 20:21:30 +00:00
}
2008-09-03 13:55:43 +00:00
query_redirect ( queries (), preg_replace ( '~db=[^&]*&~' , '' , $SELF ) . " db= " . urlencode ( $_POST [ " name " ]), lang ( 'Database has been renamed.' ), ! $row , false , $row );
2007-07-02 20:21:30 +00:00
}
2008-09-02 08:42:14 +00:00
} else {
if ( ! $_POST [ " collation " ]) {
redirect ( substr ( $SELF , 0 , - 1 ));
}
2009-05-08 05:23:03 +00:00
query_redirect ( " ALTER DATABASE " . idf_escape ( $_POST [ " name " ]) . " COLLATE ' " . $dbh -> escape_string ( $_POST [ " collation " ]) . " ' " , substr ( $SELF , 0 , - 1 ), lang ( 'Database has been altered.' ));
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 ();
2008-07-10 15:39:24 +00:00
$name = $_GET [ " db " ];
$collate = array ();
2008-03-18 10:29:20 +00:00
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 {
2007-07-26 11:11:58 +00:00
if ( ! strlen ( $_GET [ " db " ])) {
2009-05-08 05:23:03 +00:00
$result = $dbh -> query ( " SHOW GRANTS " );
2007-07-26 11:11:58 +00:00
while ( $row = $result -> fetch_row ()) {
if ( preg_match ( '~ ON (`(([^\\\\`]+|``|\\\\.)*)%`\\.\\*)?~' , $row [ 0 ], $match ) && $match [ 1 ]) {
$name = stripcslashes ( idf_unescape ( $match [ 2 ]));
break ;
}
}
$result -> free ();
2009-05-08 05:23:03 +00:00
} elseif (( $result = $dbh -> query ( " SHOW CREATE DATABASE " . idf_escape ( $_GET [ " db " ])))) {
$create = $dbh -> result ( $result , 1 );
2007-07-25 19:54:56 +00:00
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'); ?> " />
2008-10-09 14:13:17 +00:00
< ? php if ( strlen ( $_GET [ " db " ])) { ?> <input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?> /><?php } ?>
2007-07-11 21:06:19 +00:00
</ p >
</ form >