1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\View;
use PhpMyAdmin\Controllers\AbstractController;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\DbTableExists;
use PhpMyAdmin\Html\Generator;
use PhpMyAdmin\Message;
use PhpMyAdmin\Operations;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Template;
use PhpMyAdmin\Url;
use PhpMyAdmin\Util;
use function __;
/**
* View manipulations
*/
class OperationsController extends AbstractController
{
/** @var Operations */
private $operations;
/** @var DatabaseInterface */
private $dbi;
public function __construct(
ResponseRenderer $response,
Template $template,
Operations $operations,
DatabaseInterface $dbi
) {
parent::__construct($response, $template);
$this->operations = $operations;
$this->dbi = $dbi;
}
public function __invoke(): void
{
global $sql_query, $urlParams, $reload, $result, $warning_messages;
global $db, $table, $cfg, $errorUrl;
$tableObject = $this->dbi->getTable($db, $table);
$this->addScriptFiles(['table/operations.js']);
Util::checkParameters(['db', 'table']);
$urlParams = ['db' => $db, 'table' => $table];
$errorUrl = Util::getScriptNameForOption($cfg['DefaultTabTable'], 'table');
$errorUrl .= Url::getCommon($urlParams, '&');
DbTableExists::check();
$urlParams['goto'] = $urlParams['back'] = Url::getFromRoute('/view/operations');
$message = new Message();
$type = 'success';
if (isset($_POST['submitoptions'])) {
if (isset($_POST['new_name'])) {
if ($tableObject->rename($_POST['new_name'])) {
$message->addText($tableObject->getLastMessage());
$result = true;
$table = $tableObject->getName();
/* Force reread after rename */
$tableObject->getStatusInfo(null, true);
$reload = true;
} else {
$message->addText($tableObject->getLastError());
$result = false;
}
}
$warning_messages = $this->operations->getWarningMessagesArray();
}
if (isset($result)) {
// set to success by default, because result set could be empty
// (for example, a table rename)
if (empty($message->getString())) {
if ($result) {
$message->addText(
__('Your SQL query has been executed successfully.')
);
} else {
$message->addText(__('Error'));
}
// $result should exist, regardless of $_message
$type = $result ? 'success' : 'error';
}
if (! empty($warning_messages)) {
$message->addMessagesString($warning_messages);
$message->isError(true);
}
$this->response->addHTML(Generator::getMessage(
$message,
$sql_query,
$type
));
}
$this->render('table/operations/view', [
'db' => $db,
'table' => $table,
'url_params' => $urlParams,
]);
}
}
|