Merge remote-tracking branch 'origin/master'
[phpmyadmin.git] / server_databases.php
blob7120e9d51473826ce096c59d83983c6f2e23bdff
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
5 * @package PhpMyAdmin
6 */
8 /**
9 * Does the common work
11 require_once 'libraries/common.inc.php';
12 require_once 'libraries/server_common.inc.php';
13 require_once 'libraries/server_databases.lib.php';
15 $response = PMA_Response::getInstance();
16 $header = $response->getHeader();
17 $scripts = $header->getScripts();
18 $scripts->addFile('server_databases.js');
20 if (! PMA_DRIZZLE) {
21 include_once 'libraries/replication.inc.php';
22 } else {
23 $replication_types = array();
24 $replication_info = null;
26 require 'libraries/build_html_for_db.lib.php';
28 /**
29 * Sets globals from $_POST
31 $post_params = array(
32 'mult_btn',
33 'query_type',
34 'selected'
36 foreach ($post_params as $one_post_param) {
37 if (isset($_POST[$one_post_param])) {
38 $GLOBALS[$one_post_param] = $_POST[$one_post_param];
42 /**
43 * avoids 'undefined index' errors
45 if (empty($_REQUEST['sort_by'])) {
46 $sort_by = 'SCHEMA_NAME';
47 } else {
48 $sort_by_whitelist = array(
49 'SCHEMA_NAME',
50 'DEFAULT_COLLATION_NAME',
51 'SCHEMA_TABLES',
52 'SCHEMA_TABLE_ROWS',
53 'SCHEMA_DATA_LENGTH',
54 'SCHEMA_INDEX_LENGTH',
55 'SCHEMA_LENGTH',
56 'SCHEMA_DATA_FREE'
58 if (in_array($_REQUEST['sort_by'], $sort_by_whitelist)) {
59 $sort_by = $_REQUEST['sort_by'];
60 } else {
61 $sort_by = 'SCHEMA_NAME';
65 if (isset($_REQUEST['sort_order'])
66 && strtolower($_REQUEST['sort_order']) == 'desc'
67 ) {
68 $sort_order = 'desc';
69 } else {
70 $sort_order = 'asc';
73 $dbstats = empty($_REQUEST['dbstats']) ? 0 : 1;
74 $pos = empty($_REQUEST['pos']) ? 0 : (int) $_REQUEST['pos'];
77 /**
78 * Drops multiple databases
80 // workaround for IE behavior (it returns some coordinates based on where
81 // the mouse was on the Drop image):
82 if (isset($_REQUEST['drop_selected_dbs_x'])) {
83 $_REQUEST['drop_selected_dbs'] = true;
86 if ((isset($_REQUEST['drop_selected_dbs']) || isset($_REQUEST['query_type']))
87 && ($is_superuser || $cfg['AllowUserDropDatabase'])
88 ) {
89 if (! isset($_REQUEST['selected_dbs']) && ! isset($_REQUEST['query_type'])) {
90 $message = PMA_Message::error(__('No databases selected.'));
91 } else {
92 $action = 'server_databases.php';
93 $submit_mult = 'drop_db';
94 $err_url = 'server_databases.php?' . PMA_generate_common_url();
95 if (isset($_REQUEST['selected_dbs'])
96 && !isset($_REQUEST['is_js_confirmed'])
97 ) {
98 $selected_db = $_REQUEST['selected_dbs'];
100 if (isset($_REQUEST['is_js_confirmed'])) {
101 $_REQUEST = array(
102 'query_type' => $submit_mult,
103 'selected' => $_REQUEST['selected_dbs'],
104 'mult_btn' => __('Yes'),
105 'db' => $GLOBALS['db'],
106 'table' => $GLOBALS['table']);
108 include 'libraries/mult_submits.inc.php';
109 unset($action, $submit_mult, $err_url, $selected_db, $GLOBALS['db']);
110 if (empty($message)) {
111 if ($mult_btn == __('Yes')) {
112 $number_of_databases = count($selected);
113 } else {
114 $number_of_databases = 0;
116 $message = PMA_Message::success(
117 _ngettext(
118 '%1$d database has been dropped successfully.',
119 '%1$d databases have been dropped successfully.',
120 $number_of_databases
123 $message->addParam($number_of_databases);
126 if ($GLOBALS['is_ajax_request'] && $message instanceof PMA_Message) {
127 $response = PMA_Response::getInstance();
128 $response->isSuccess($message->isSuccess());
129 $response->addJSON('message', $message);
130 exit;
135 * Displays the sub-page heading
137 $header_type = $dbstats ? "database_statistics" : "databases";
138 $response->addHTML(PMA_getSubPageHeader($header_type));
141 * Displays For Create database.
143 $html = '';
144 if ($cfg['ShowCreateDb']) {
145 $html .= '<ul><li id="li_create_database" class="no_bullets">' . "\n";
146 include 'libraries/display_create_database.lib.php';
147 $html .= ' </li>' . "\n";
148 $html .= '</ul>' . "\n";
152 * Gets the databases list
154 if ($server > 0) {
155 $databases = $GLOBALS['dbi']->getDatabasesFull(
156 null, $dbstats, null, $sort_by, $sort_order, $pos, true
158 $databases_count = count($GLOBALS['pma']->databases);
159 } else {
160 $databases_count = 0;
165 * Displays the page
167 if ($databases_count > 0) {
168 $html .= PMA_getHtmlForDatabase(
169 $databases,
170 $databases_count,
171 $pos,
172 $dbstats,
173 $sort_by,
174 $sort_order,
175 $is_superuser,
176 $cfg,
177 $replication_types,
178 $replication_info,
179 $url_query
181 } else {
182 $html .= __('No databases');
184 unset($databases_count);
186 $response->addHTML($html);