diff --git a/htdocs/sql/libraries/mult_submits.inc.php b/htdocs/sql/libraries/mult_submits.inc.php new file mode 100755 --- /dev/null +++ b/htdocs/sql/libraries/mult_submits.inc.php @@ -0,0 +1,442 @@ + $sval) { + if ($sql_query == '') { + $sql_query .= 'SELECT ' . PMA_backquote(urldecode($sval)); + } else { + $sql_query .= ', ' . PMA_backquote(urldecode($sval)); + } + } + $sql_query .= ' FROM ' . PMA_backquote(htmlspecialchars($table)); + require './sql.php'; + break; + } + } else { + $what = 'row_delete'; + $selected = $rows_to_delete; + } +} // end if + + +/** + * Displays the confirmation form if required + */ +if (!empty($submit_mult) && !empty($what)) { + $js_to_run = 'functions.js'; + unset($message); + if (strlen($table)) { + require './libraries/tbl_common.php'; + $url_query .= '&goto=tbl_sql.php&back=tbl_sql.php'; + require './libraries/tbl_info.inc.php'; + } elseif (strlen($db)) { + require './libraries/db_common.inc.php'; + require './libraries/db_info.inc.php'; + } + // Builds the query + $full_query = ''; + if ($what == 'drop_tbl') { + $full_query_views = ''; + } + $selected_cnt = count($selected); + $i = 0; + foreach ($selected AS $idx => $sval) { + switch ($what) { + case 'row_delete': + $full_query .= htmlspecialchars(urldecode($sval)) + . ';
'; + break; + case 'drop_db': + $full_query .= 'DROP DATABASE ' + . PMA_backquote(htmlspecialchars(urldecode($sval))) + . ';
'; + $reload = 1; + break; + + case 'drop_tbl': + $current = urldecode($sval); + // here we must compare with the value before urldecode() + // because $views has been treated with htmlspecialchars() + if (!empty($views) && in_array($sval, $views)) { + $full_query_views .= (empty($full_query_views) ? 'DROP VIEW ' : ', ') + . PMA_backquote(htmlspecialchars($current)); + } else { + $full_query .= (empty($full_query) ? 'DROP TABLE ' : ', ') + . PMA_backquote(htmlspecialchars($current)); + } + break; + + case 'empty_tbl': + if (PMA_MYSQL_INT_VERSION >= 40000) { + $full_query .= 'TRUNCATE '; + } else { + $full_query .= 'DELETE FROM '; + } + $full_query .= PMA_backquote(htmlspecialchars(urldecode($sval))) + . ';
'; + break; + + case 'primary_fld': + if ($full_query == '') { + $full_query .= 'ALTER TABLE ' + . PMA_backquote(htmlspecialchars($table)) + . '
  DROP PRIMARY KEY,' + . '
   ADD PRIMARY KEY(' + . '
     ' + . PMA_backquote(htmlspecialchars(urldecode($sval))) + . ','; + } else { + $full_query .= '
     ' + . PMA_backquote(htmlspecialchars(urldecode($sval))) + . ','; + } + if ($i == $selected_cnt-1) { + $full_query = preg_replace('@,$@', ');
', $full_query); + } + break; + + case 'drop_fld': + if ($full_query == '') { + $full_query .= 'ALTER TABLE ' + . PMA_backquote(htmlspecialchars($table)) + . '
  DROP ' + . PMA_backquote(htmlspecialchars(urldecode($sval))) + . ','; + } else { + $full_query .= '
  DROP ' + . PMA_backquote(htmlspecialchars(urldecode($sval))) + . ','; + } + if ($i == $selected_cnt-1) { + $full_query = preg_replace('@,$@', ';
', $full_query); + } + break; + } // end switch + $i++; + } + if ($what == 'drop_tbl') { + if (!empty($full_query)) { + $full_query .= ';
' . "\n"; + } + if (!empty($full_query_views)) { + $full_query .= $full_query_views . ';
' . "\n"; + } + unset($full_query_views); + } + + // Displays the form + ?> + +
+ + + + $sval) { + echo '' . "\n"; + } + if ($what == 'drop_tbl' && !empty($views)) { + foreach ($views as $current) { + echo '' . "\n"; + } + } + if ($what == 'row_delete') { + echo '' . "\n"; + echo '' . "\n"; + } + ?> +
+ : + +
+
+ + +
+ = 40000) { + $a_query = 'TRUNCATE '; + } else { + $a_query = 'DELETE FROM '; + } + $a_query .= PMA_backquote(htmlspecialchars(urldecode($selected[$i]))); + $run_parts = TRUE; + break; + + case 'drop_fld': + PMA_relationsCleanupColumn($db, $table, $selected[$i]); + $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) : ',') + . ' DROP ' . PMA_backquote(urldecode($selected[$i])) + . (($i == $selected_cnt-1) ? ';' : ''); + break; + + case 'primary_fld': + $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . (empty($primary) ? '' : ' DROP PRIMARY KEY,') . ' ADD PRIMARY KEY( ' : ', ') + . PMA_backquote(urldecode($selected[$i])) + . (($i == $selected_cnt-1) ? ');' : ''); + break; + + case 'index_fld': + $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD INDEX( ' : ', ') + . PMA_backquote(urldecode($selected[$i])) + . (($i == $selected_cnt-1) ? ');' : ''); + break; + + case 'unique_fld': + $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD UNIQUE( ' : ', ') + . PMA_backquote(urldecode($selected[$i])) + . (($i == $selected_cnt-1) ? ');' : ''); + break; + + case 'fulltext_fld': + $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD FULLTEXT( ' : ', ') + . PMA_backquote(urldecode($selected[$i])) + . (($i == $selected_cnt-1) ? ');' : ''); + break; + } // end switch + + // All "DROP TABLE", "DROP FIELD", "OPTIMIZE TABLE" and "REPAIR TABLE" + // statements will be run at once below + if ($run_parts) { + $sql_query .= $a_query . ';' . "\n"; + if ($query_type != 'drop_db') { + PMA_DBI_select_db($db); + } + $result = @PMA_DBI_query($a_query) or PMA_mysqlDie('', $a_query, FALSE, $err_url); + } // end if + } // end for + + if ($query_type == 'drop_tbl') { + if (!empty($sql_query)) { + $sql_query .= ';'; + } elseif (!empty($sql_query_views)) { + $sql_query = $sql_query_views . ';'; + unset($sql_query_views); + } + } + + if ($use_sql) { + require './sql.php'; + } elseif (!$run_parts) { + PMA_DBI_select_db($db); + $result = PMA_DBI_query($sql_query); + if (!empty($sql_query_views)) { + $sql_query .= ' ' . $sql_query_views . ';'; + PMA_DBI_query($sql_query_views); + unset($sql_query_views); + } + } + if ($rebuild_database_list) { + // avoid a problem with the database list navigator + // when dropping a db from server_databases + $GLOBALS['PMA_List_Database']->build(); + } +} +?>