2007-07-02 20:21:30 +00:00
< ? php
2013-05-08 15:43:15 +00:00
$row = $_POST ;
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
2013-05-08 15:43:15 +00:00
$name = trim ( $row [ " name " ]);
2010-03-01 22:59:08 +00:00
if ( $_POST [ " drop " ]) {
2010-05-12 16:23:40 +00:00
$_GET [ " db " ] = " " ; // to save in global history
2010-04-22 23:02:28 +00:00
queries_redirect ( remove_from_uri ( " db|database " ), lang ( 'Database has been dropped.' ), drop_databases ( array ( DB )));
2011-09-10 11:06:59 +00:00
} elseif ( DB !== $name ) {
2009-06-21 23:20:32 +00:00
// create or rename database
2010-04-21 12:01:32 +00:00
if ( DB != " " ) {
2011-09-10 11:06:59 +00:00
$_GET [ " db " ] = $name ;
2013-07-03 17:34:19 +00:00
queries_redirect ( preg_replace ( '~\bdb=[^&]*&~' , '' , ME ) . " db= " . urlencode ( $name ), lang ( 'Database has been renamed.' ), rename_database ( $name , $row [ " collation " ]));
2010-04-21 12:01:32 +00:00
} else {
2011-09-10 11:06:59 +00:00
$databases = explode ( " \n " , str_replace ( " \r " , " " , $name ));
2010-04-21 12:01:32 +00:00
$success = true ;
$last = " " ;
2010-10-15 08:58:08 +00:00
foreach ( $databases as $db ) {
if ( count ( $databases ) == 1 || $db != " " ) { // ignore empty lines but always try to create single database
2013-05-08 15:43:15 +00:00
if ( ! create_database ( $db , $row [ " collation " ])) {
2010-04-21 12:01:32 +00:00
$success = false ;
}
$last = $db ;
2009-06-11 11:13:45 +00:00
}
}
2014-06-24 13:26:51 +00:00
restart_session ();
set_session ( " dbs " , null );
2010-04-21 12:01:32 +00:00
queries_redirect ( ME . " db= " . urlencode ( $last ), lang ( 'Database has been created.' ), $success );
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
2013-05-08 15:43:15 +00:00
if ( ! $row [ " collation " ]) {
2009-07-30 08:12:54 +00:00
redirect ( substr ( ME , 0 , - 1 ));
2008-09-02 08:42:14 +00:00
}
2013-07-24 23:26:41 +00:00
query_redirect ( " ALTER DATABASE " . idf_escape ( $name ) . ( preg_match ( '~^[a-z0-9_]+$~i' , $row [ " collation " ]) ? " COLLATE $row[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
2013-07-05 08:31:53 +00:00
page_header ( DB != " " ? lang ( 'Alter database' ) : lang ( 'Create database' ), $error , array (), h ( 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 ;
2008-03-18 10:29:20 +00:00
if ( $_POST ) {
2013-05-08 15:43:15 +00:00
$name = $row [ " name " ];
2010-04-21 12:01:32 +00:00
} elseif ( DB != " " ) {
2013-05-08 15:43:15 +00:00
$row [ " collation " ] = db_collation ( DB , $collations );
2010-05-07 13:44:22 +00:00
} elseif ( $jush == " sql " ) {
2009-06-21 23:20:32 +00:00
// propose database name with limited privileges
2010-04-21 12:01:32 +00:00
foreach ( get_vals ( " SHOW GRANTS " ) as $grant ) {
2018-02-20 15:27:40 +00:00
if ( preg_match ( '~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~' , $grant , $match ) && $match [ 1 ]) {
2010-04-21 12:01:32 +00:00
$name = stripcslashes ( idf_unescape ( " ` $match[2] ` " ));
2009-06-21 23:20:32 +00:00
break ;
2007-07-26 11:11:58 +00:00
}
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 >
2010-04-22 23:02:28 +00:00
< ? php
echo ( $_POST [ " add_x " ] || strpos ( $name , " \n " )
2011-03-21 12:53:48 +00:00
? '<textarea id="name" name="name" rows="10" cols="40">' . h ( $name ) . '</textarea><br>'
2018-07-15 19:05:26 +00:00
: '<input name="name" id="name" value="' . h ( $name ) . '" data-maxlength="64" autocapitalize="off">'
2013-08-06 01:55:27 +00:00
) . " \n " . ( $collations ? html_select ( " collation " , array ( " " => " ( " . lang ( 'collation' ) . " ) " ) + $collations , $row [ " collation " ]) . doc_link ( array (
'sql' => " charset-charsets.html " ,
2018-02-08 12:56:22 +00:00
'mariadb' => " supported-character-sets-and-collations/ " ,
2013-08-06 01:55:27 +00:00
'mssql' => " ms187963.aspx " ,
)) : " " );
2018-01-12 14:27:44 +00:00
echo script ( " focus(qs('#name')); " );
2010-04-22 23:02:28 +00:00
?>
2010-02-26 14:58:58 +00:00
< input type = " submit " value = " <?php echo lang('Save'); ?> " >
2009-06-15 09:50:00 +00:00
< ? php
2010-05-05 16:30:55 +00:00
if ( DB != " " ) {
2018-01-24 17:36:19 +00:00
echo " <input type='submit' name='drop' value=' " . lang ( 'Drop' ) . " '> " . confirm ( lang ( 'Drop %s?' , DB )) . " \n " ;
2010-03-01 22:59:08 +00:00
} elseif ( ! $_POST [ " add_x " ] && $_GET [ " db " ] == " " ) {
2013-07-10 15:57:08 +00:00
echo " <input type='image' class='icon' name='add' src='../adminer/static/plus.gif' alt='+' title=' " . lang ( 'Add next' ) . " '> \n " ;
2009-06-15 09:50:00 +00:00
}
?>
2011-03-08 12:43:05 +00:00
< input type = " hidden " name = " token " value = " <?php echo $token ; ?> " >
2007-07-11 21:06:19 +00:00
</ form >