3 declare(strict_types
=1);
5 namespace PhpMyAdmin\Controllers\Preferences
;
7 use PhpMyAdmin\Config\ConfigFile
;
8 use PhpMyAdmin\Config\Forms\User\SqlForm
;
9 use PhpMyAdmin\Controllers\AbstractController
;
11 use PhpMyAdmin\DatabaseInterface
;
12 use PhpMyAdmin\Relation
;
13 use PhpMyAdmin\Response
;
14 use PhpMyAdmin\Template
;
15 use PhpMyAdmin\TwoFactor
;
17 use PhpMyAdmin\UserPreferences
;
18 use PhpMyAdmin\UserPreferencesHeader
;
20 class SqlController
extends AbstractController
22 /** @var UserPreferences */
23 private $userPreferences;
29 * @param Response $response A Response instance.
30 * @param DatabaseInterface $dbi A DatabaseInterface instance.
31 * @param Template $template A Template instance.
32 * @param UserPreferences $userPreferences A UserPreferences instance.
33 * @param Relation $relation A Relation instance.
35 public function __construct(
39 UserPreferences
$userPreferences,
42 parent
::__construct($response, $dbi, $template);
43 $this->userPreferences
= $userPreferences;
44 $this->relation
= $relation;
47 public function index(): void
49 global $cfg, $cf, $error, $tabHash, $hash;
50 global $server, $PMA_Config, $route;
52 $cf = new ConfigFile($PMA_Config->base_settings
);
53 $this->userPreferences
->pageInit($cf);
55 $formDisplay = new SqlForm($cf, 1);
57 if (isset($_POST['revert'])) {
58 // revert erroneous fields to their default values
59 $formDisplay->fixErrors();
60 Core
::sendHeaderLocation('./index.php?route=/preferences/sql');
65 if ($formDisplay->process(false) && ! $formDisplay->hasErrors()) {
67 $twoFactor = new TwoFactor($cfg['Server']['user']);
69 $result = $this->userPreferences
->save($cf->getConfigArray());
70 // save back the 2FA setting only
72 if ($result === true) {
74 $PMA_Config->loadUserPreferences();
75 $tabHash = $_POST['tab_hash'] ??
null;
76 $hash = ltrim($tabHash, '#');
77 $this->userPreferences
->redirect(
78 'index.php?route=/preferences/sql',
89 $header = $this->response
->getHeader();
90 $scripts = $header->getScripts();
91 $scripts->addFile('config.js');
93 $cfgRelation = $this->relation
->getRelationsParam();
95 $this->render('preferences/header', [
97 'is_saved' => ! empty($_GET['saved']),
98 'has_config_storage' => $cfgRelation['userconfigwork'],
101 if ($formDisplay->hasErrors()) {
102 $formErrors = $formDisplay->displayErrors();
105 $this->render('preferences/forms/main', [
106 'error' => $error ?
$error->getDisplay() : '',
107 'has_errors' => $formDisplay->hasErrors(),
108 'errors' => $formErrors ??
null,
109 'form' => $formDisplay->getDisplay(
113 Url
::getFromRoute('/preferences/sql'),
114 ['server' => $server]
118 if ($this->response
->isAjax()) {
119 $this->response
->addJSON('disableNaviSettings', true);
121 define('PMA_DISABLE_NAVI_SETTINGS', true);