From bd2dcfcdc7e04a69353dcdc3d26c445c4856c1fb Mon Sep 17 00:00:00 2001 From: Achilles-96 Date: Sun, 27 Dec 2015 11:37:23 +0530 Subject: [PATCH] Fixes #11538 Signed-off-by: Raghuram Vadapalli --- libraries/mult_submits.inc.php | 16 +++++++++ libraries/mult_submits.lib.php | 35 ++++++++++++++++++- .../database/structure/check_all_tables.phtml | 1 + 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/libraries/mult_submits.inc.php b/libraries/mult_submits.inc.php index f0fe32d896..294cce1627 100644 --- a/libraries/mult_submits.inc.php +++ b/libraries/mult_submits.inc.php @@ -88,6 +88,22 @@ if (! empty($submit_mult) unset($submit_mult); include 'db_export.php'; exit; + case 'copy_tbl': + $views = $GLOBALS['dbi']->getVirtualTables($db); + list($full_query, $reload, $full_query_views) + = PMA_getQueryFromSelected( + $submit_mult, $table, $selected, $views + ); + $_url_params = PMA_getUrlParams( + $submit_mult, $reload, $action, $db, $table, $selected, $views, + isset($original_sql_query)? $original_sql_query : null, + isset($original_url_query)? $original_url_query : null + ); + $response = PMA\libraries\Response::getInstance(); + $response->addHTML( + PMA_getHtmlForCopyMultipleTables($action, $_url_params) + ); + exit; case 'show_create': $show_create = PMA\libraries\Template::get( 'database/structure/show_create' diff --git a/libraries/mult_submits.lib.php b/libraries/mult_submits.lib.php index 12b4abc06c..01a676e437 100644 --- a/libraries/mult_submits.lib.php +++ b/libraries/mult_submits.lib.php @@ -7,6 +7,7 @@ * * @package PhpMyAdmin */ +use PMA\libraries\Table; /** * Gets url params @@ -98,6 +99,7 @@ function PMA_buildOrExecuteQueryForMulti( $selected_cnt = count($selected); $deletes = false; + $copy_tbl =false; for ($i = 0; $i < $selected_cnt; $i++) { switch ($query_type) { @@ -268,11 +270,16 @@ function PMA_buildOrExecuteQueryForMulti( $run_parts = true; break; + case 'copy_tbl': + $run_parts = true; + $copy_tbl = true; + Table::moveCopy($db, $selected[$i], $_POST['target_db'], $selected[$i], 'data', false, 'one_table'); + break; } // end switch // All "DROP TABLE", "DROP FIELD", "OPTIMIZE TABLE" and "REPAIR TABLE" // statements will be run at once below - if ($run_parts) { + if ($run_parts && !$copy_tbl) { $sql_query .= $a_query . ';' . "\n"; if ($query_type != 'drop_db') { $GLOBALS['dbi']->selectDb($db); @@ -301,6 +308,32 @@ function PMA_buildOrExecuteQueryForMulti( ); } +/** + * Gets HTML for copy tables form + * + * @param string $action action type + * @param array $_url_params URL params + * + * @return string + */ +function PMA_getHtmlForCopyMultipleTables($action, $_url_params) +{ + $html = '
'; + $html .= PMA_URL_getHiddenInputs($_url_params); + $html .= '
'; + $html .= '' . __('Copy tables') . ''; + $html .= ''; + $html .= '
'; + $html .= '
'; + $html .= ''; + $html .= ''; + $html .= '
'; + $html .= '
'; + return $html; +} + /** * Gets HTML for replace_prefix_tbl or copy_tbl_change_prefix * diff --git a/templates/database/structure/check_all_tables.phtml b/templates/database/structure/check_all_tables.phtml index 71cdde677a..35ca24edf4 100644 --- a/templates/database/structure/check_all_tables.phtml +++ b/templates/database/structure/check_all_tables.phtml @@ -7,6 +7,7 @@