2007-07-02 20:21:30 +00:00
< ? php
2009-06-21 23:20:32 +00:00
if ( $_POST && ! $error && ! isset ( $_POST [ " add_x " ])) { // add is an image and PHP changes add.x to add_x
2009-10-18 09:29:01 +00:00
if ( DB !== $_POST [ " name " ]) {
2009-06-21 23:20:32 +00:00
// create or rename database
2009-11-03 10:55:57 +00:00
restart_session ();
2009-06-21 23:20:32 +00:00
unset ( $_SESSION [ " databases " ][ $_GET [ " server " ]]); // clear cache
2009-06-11 11:13:45 +00:00
$dbs = explode ( " \n " , str_replace ( " \r " , " " , $_POST [ " name " ]));
$failed = false ;
2009-07-12 08:25:45 +00:00
$last = " " ;
2009-06-11 11:13:45 +00:00
foreach ( $dbs as $db ) {
2010-01-09 23:33:41 +00:00
if ( count ( $dbs ) == 1 || $db != " " ) { // ignore empty lines but always try to create single database
2009-09-22 10:51:40 +00:00
if ( ! queries ( " CREATE DATABASE " . idf_escape ( $db ) . ( $_POST [ " collation " ] ? " COLLATE " . $connection -> quote ( $_POST [ " collation " ]) : " " ))) {
2009-06-11 11:13:45 +00:00
$failed = true ;
}
$last = $db ;
}
}
2010-01-09 23:33:41 +00:00
if ( query_redirect ( queries (), ME . " db= " . urlencode ( $last ), lang ( 'Database has been created.' ), DB == " " , false , $failed )) {
2009-11-03 10:55:57 +00:00
//! move triggers
2009-09-22 10:51:40 +00:00
$result = $connection -> 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 ;
}
}
if ( ! $row ) {
2009-08-29 13:54:25 +00:00
queries ( " DROP DATABASE " . idf_escape ( DB ));
2009-10-30 16:48:18 +00:00
//! saved to history of removed database
2007-07-02 20:21:30 +00:00
}
2009-10-13 20:01:52 +00:00
queries_redirect ( preg_replace ( '~db=[^&]*&~' , '' , ME ) . " db= " . urlencode ( $_POST [ " name " ]), lang ( 'Database has been renamed.' ), ! $row );
2007-07-02 20:21:30 +00:00
}
2008-09-02 08:42:14 +00:00
} else {
2009-06-21 23:20:32 +00:00
// alter database
2008-09-02 08:42:14 +00:00
if ( ! $_POST [ " collation " ]) {
2009-07-30 08:12:54 +00:00
redirect ( substr ( ME , 0 , - 1 ));
2008-09-02 08:42:14 +00:00
}
2009-09-22 10:51:40 +00:00
query_redirect ( " ALTER DATABASE " . idf_escape ( $_POST [ " name " ]) . " COLLATE " . $connection -> quote ( $_POST [ " collation " ]), substr ( ME , 0 , - 1 ), lang ( 'Database has been altered.' ));
2007-07-02 20:21:30 +00:00
}
}
2009-07-20 12:12:55 +00:00
2010-01-09 23:33:41 +00:00
page_header ( DB != " " ? lang ( 'Alter database' ) : lang ( 'Create database' ), $error , array (), DB );
2007-07-02 20:21:30 +00:00
2008-03-18 10:29:20 +00:00
$collations = collations ();
2009-08-29 13:54:25 +00:00
$name = DB ;
2009-10-18 09:29:01 +00:00
$collate = null ;
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 " ];
2010-01-09 23:33:41 +00:00
} elseif ( DB == " " ) {
2009-06-21 23:20:32 +00:00
// propose database name with limited privileges
2009-09-22 10:51:40 +00:00
$result = $connection -> query ( " SHOW GRANTS " );
2009-06-21 23:20:32 +00:00
while ( $row = $result -> fetch_row ()) {
2009-08-19 17:10:06 +00:00
if ( preg_match ( '~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~' , $row [ 0 ], $match ) && $match [ 1 ]) {
2009-06-21 23:20:32 +00:00
$name = stripcslashes ( idf_unescape ( $match [ 2 ]));
break ;
2007-07-26 11:11:58 +00:00
}
2007-07-06 13:00:58 +00:00
}
2009-10-18 09:29:01 +00:00
} else {
$collate = db_collation ( DB , $collations );
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 >
2009-09-14 13:42:24 +00:00
< ? php echo ( $_POST [ " add_x " ] || strpos ( $name , " \n " )
2009-07-28 16:20:50 +00:00
? '<textarea name="name" rows="10" cols="40">' . h ( $name ) . '</textarea><br>'
: '<input name="name" value="' . h ( $name ) . '" maxlength="64">'
2009-07-20 12:12:55 +00:00
) . " \n " ; ?>
2009-10-02 13:21:34 +00:00
< ? php echo html_select ( " collation " , array ( " " => " ( " . lang ( 'collation' ) . " ) " ) + $collations , $collate ); ?>
2009-07-11 20:30:40 +00:00
< input type = " hidden " name = " token " value = " <?php echo $token ; ?> " >
2009-10-28 13:42:51 +00:00
< input type = " submit " value = " <?php echo lang('Save'); ?> " >
2009-06-15 09:50:00 +00:00
< ? php
2010-01-09 23:33:41 +00:00
if ( ! $_POST [ " add_x " ] && $_GET [ " db " ] == " " ) {
2009-09-23 09:56:07 +00:00
echo " <input type='image' name='add' src='../adminer/static/plus.gif' alt='+' title=' " . lang ( 'Add next' ) . " '> \n " ;
2009-06-15 09:50:00 +00:00
}
?>
2007-07-11 21:06:19 +00:00
</ form >