96 lines
2.5 KiB
PHP
96 lines
2.5 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace PhpMyAdmin\Controllers\Server;
|
||
|
|
||
|
use PhpMyAdmin\Config\PageSettings;
|
||
|
use PhpMyAdmin\Controllers\AbstractController;
|
||
|
use PhpMyAdmin\DatabaseInterface;
|
||
|
use PhpMyAdmin\Export\Options;
|
||
|
use PhpMyAdmin\Message;
|
||
|
use PhpMyAdmin\Plugins;
|
||
|
use PhpMyAdmin\ResponseRenderer;
|
||
|
use PhpMyAdmin\Template;
|
||
|
use PhpMyAdmin\Url;
|
||
|
|
||
|
use function __;
|
||
|
use function array_merge;
|
||
|
|
||
|
final class ExportController extends AbstractController
|
||
|
{
|
||
|
/** @var Options */
|
||
|
private $export;
|
||
|
|
||
|
/** @var DatabaseInterface */
|
||
|
private $dbi;
|
||
|
|
||
|
public function __construct(ResponseRenderer $response, Template $template, Options $export, DatabaseInterface $dbi)
|
||
|
{
|
||
|
parent::__construct($response, $template);
|
||
|
$this->export = $export;
|
||
|
$this->dbi = $dbi;
|
||
|
}
|
||
|
|
||
|
public function __invoke(): void
|
||
|
{
|
||
|
global $db, $table, $sql_query, $num_tables, $unlim_num_rows;
|
||
|
global $tmp_select, $select_item, $errorUrl;
|
||
|
|
||
|
$errorUrl = Url::getFromRoute('/');
|
||
|
|
||
|
if ($this->dbi->isSuperUser()) {
|
||
|
$this->dbi->selectDb('mysql');
|
||
|
}
|
||
|
|
||
|
$pageSettings = new PageSettings('Export');
|
||
|
$pageSettingsErrorHtml = $pageSettings->getErrorHTML();
|
||
|
$pageSettingsHtml = $pageSettings->getHTML();
|
||
|
|
||
|
$this->addScriptFiles(['export.js']);
|
||
|
|
||
|
$select_item = $tmp_select ?? '';
|
||
|
$databases = $this->export->getDatabasesForSelectOptions($select_item);
|
||
|
|
||
|
if (! isset($sql_query)) {
|
||
|
$sql_query = '';
|
||
|
}
|
||
|
|
||
|
if (! isset($num_tables)) {
|
||
|
$num_tables = 0;
|
||
|
}
|
||
|
|
||
|
if (! isset($unlim_num_rows)) {
|
||
|
$unlim_num_rows = 0;
|
||
|
}
|
||
|
|
||
|
$GLOBALS['single_table'] = $_POST['single_table'] ?? $_GET['single_table'] ?? $GLOBALS['single_table'] ?? null;
|
||
|
|
||
|
$exportList = Plugins::getExport('server', isset($GLOBALS['single_table']));
|
||
|
|
||
|
if (empty($exportList)) {
|
||
|
$this->response->addHTML(Message::error(
|
||
|
__('Could not load export plugins, please check your installation!')
|
||
|
)->getDisplay());
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$options = $this->export->getOptions(
|
||
|
'server',
|
||
|
$db,
|
||
|
$table,
|
||
|
$sql_query,
|
||
|
$num_tables,
|
||
|
$unlim_num_rows,
|
||
|
$exportList
|
||
|
);
|
||
|
|
||
|
$this->render('server/export/index', array_merge($options, [
|
||
|
'page_settings_error_html' => $pageSettingsErrorHtml,
|
||
|
'page_settings_html' => $pageSettingsHtml,
|
||
|
'databases' => $databases,
|
||
|
]));
|
||
|
}
|
||
|
}
|