diff options
Diffstat (limited to 'srcs/phpmyadmin/db_export.php')
| -rw-r--r-- | srcs/phpmyadmin/db_export.php | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/db_export.php b/srcs/phpmyadmin/db_export.php new file mode 100644 index 0000000..44a2643 --- /dev/null +++ b/srcs/phpmyadmin/db_export.php @@ -0,0 +1,173 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * dumps a database + * + * @package PhpMyAdmin + */ +declare(strict_types=1); + +use PhpMyAdmin\Config\PageSettings; +use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Display\Export as DisplayExport; +use PhpMyAdmin\Export; +use PhpMyAdmin\Message; +use PhpMyAdmin\Response; +use PhpMyAdmin\Util; + +if (! defined('ROOT_PATH')) { + define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR); +} + +global $db, $table, $url_query, $containerBuilder; + +require_once ROOT_PATH . 'libraries/common.inc.php'; + +/** @var Response $response */ +$response = $containerBuilder->get(Response::class); + +/** @var DatabaseInterface $dbi */ +$dbi = $containerBuilder->get(DatabaseInterface::class); + +PageSettings::showGroup('Export'); + +$header = $response->getHeader(); +$scripts = $header->getScripts(); +$scripts->addFile('export.js'); + +/** @var Export $export */ +$export = $containerBuilder->get('export'); + +// $sub_part is used in Util::getDbInfo() to see if we are coming from +// db_export.php, in which case we don't obey $cfg['MaxTableList'] +$sub_part = '_export'; +require_once ROOT_PATH . 'libraries/db_common.inc.php'; +$url_query .= '&goto=db_export.php'; + +list( + $tables, + $num_tables, + $total_num_tables, + $sub_part, + $is_show_stats, + $db_is_system_schema, + $tooltip_truename, + $tooltip_aliasname, + $pos +) = Util::getDbInfo($db, $sub_part === null ? '' : $sub_part); + +/** + * Displays the form + */ +$export_page_title = __('View dump (schema) of database'); + +// exit if no tables in db found +if ($num_tables < 1) { + $response->addHTML( + Message::error(__('No tables found in database.'))->getDisplay() + ); + exit; +} // end if + +$multi_values = '<div class="export_table_list_container">'; +if (isset($_POST['structure_or_data_forced'])) { + $force_val = htmlspecialchars($_POST['structure_or_data_forced']); +} else { + $force_val = 0; +} +$multi_values .= '<input type="hidden" name="structure_or_data_forced" value="' + . $force_val . '">'; +$multi_values .= '<table class="export_table_select">' + . '<thead><tr><th></th>' + . '<th>' . __('Tables') . '</th>' + . '<th class="export_structure">' . __('Structure') . '</th>' + . '<th class="export_data">' . __('Data') . '</th>' + . '</tr><tr>' + . '<td></td>' + . '<td class="export_table_name all">' . __('Select all') . '</td>' + . '<td class="export_structure all">' + . '<input type="checkbox" id="table_structure_all"></td>' + . '<td class="export_data all"><input type="checkbox" id="table_data_all">' + . '</td>' + . '</tr></thead>' + . '<tbody>'; +$multi_values .= "\n"; + +// when called by libraries/mult_submits.inc.php +if (! empty($_POST['selected_tbl']) && empty($table_select)) { + $table_select = $_POST['selected_tbl']; +} + +foreach ($tables as $each_table) { + if (isset($_POST['table_select']) && is_array($_POST['table_select'])) { + $is_checked = $export->getCheckedClause( + $each_table['Name'], + $_POST['table_select'] + ); + } elseif (isset($table_select)) { + $is_checked = $export->getCheckedClause( + $each_table['Name'], + $table_select + ); + } else { + $is_checked = ' checked="checked"'; + } + if (isset($_POST['table_structure']) && is_array($_POST['table_structure'])) { + $structure_checked = $export->getCheckedClause( + $each_table['Name'], + $_POST['table_structure'] + ); + } else { + $structure_checked = $is_checked; + } + if (isset($_POST['table_data']) && is_array($_POST['table_data'])) { + $data_checked = $export->getCheckedClause( + $each_table['Name'], + $_POST['table_data'] + ); + } else { + $data_checked = $is_checked; + } + $table_html = htmlspecialchars($each_table['Name']); + $multi_values .= '<tr class="marked">'; + $multi_values .= '<td><input type="checkbox" name="table_select[]"' + . ' value="' . $table_html . '"' . $is_checked . ' class="checkall"></td>'; + $multi_values .= '<td class="export_table_name">' + . str_replace(' ', ' ', $table_html) . '</td>'; + $multi_values .= '<td class="export_structure">' + . '<input type="checkbox" name="table_structure[]"' + . ' value="' . $table_html . '"' . $structure_checked . '></td>'; + $multi_values .= '<td class="export_data">' + . '<input type="checkbox" name="table_data[]"' + . ' value="' . $table_html . '"' . $data_checked . '></td>'; + $multi_values .= '</tr>'; +} // end for + +$multi_values .= "\n"; +$multi_values .= '</tbody></table></div>'; + +if (! isset($sql_query)) { + $sql_query = ''; +} +if (! isset($num_tables)) { + $num_tables = 0; +} +if (! isset($unlim_num_rows)) { + $unlim_num_rows = 0; +} +if ($multi_values === null) { + $multi_values = ''; +} +$response = Response::getInstance(); +$displayExport = new DisplayExport(); +$response->addHTML( + $displayExport->getDisplay( + 'database', + $db, + $table, + $sql_query, + $num_tables, + $unlim_num_rows, + $multi_values + ) +); |
