123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- declare(strict_types=1);
- namespace PhpMyAdmin\Controllers\Preferences;
- use PhpMyAdmin\Config\ConfigFile;
- use PhpMyAdmin\Config\Forms\User\MainForm;
- use PhpMyAdmin\Controllers\AbstractController;
- use PhpMyAdmin\Core;
- use PhpMyAdmin\Relation;
- use PhpMyAdmin\Response;
- use PhpMyAdmin\Template;
- use PhpMyAdmin\TwoFactor;
- use PhpMyAdmin\Url;
- use PhpMyAdmin\UserPreferences;
- use function define;
- use function ltrim;
- class MainPanelController extends AbstractController
- {
- /** @var UserPreferences */
- private $userPreferences;
- /** @var Relation */
- private $relation;
- /**
- * @param Response $response
- */
- public function __construct(
- $response,
- Template $template,
- UserPreferences $userPreferences,
- Relation $relation
- ) {
- parent::__construct($response, $template);
- $this->userPreferences = $userPreferences;
- $this->relation = $relation;
- }
- public function index(): void
- {
- global $cfg, $cf, $error, $tabHash, $hash;
- global $server, $PMA_Config, $route;
- $cf = new ConfigFile($PMA_Config->baseSettings);
- $this->userPreferences->pageInit($cf);
- $formDisplay = new MainForm($cf, 1);
- if (isset($_POST['revert'])) {
- // revert erroneous fields to their default values
- $formDisplay->fixErrors();
- Core::sendHeaderLocation('./index.php?route=/preferences/main-panel');
- return;
- }
- $error = null;
- if ($formDisplay->process(false) && ! $formDisplay->hasErrors()) {
- // Load 2FA settings
- $twoFactor = new TwoFactor($cfg['Server']['user']);
- // save settings
- $result = $this->userPreferences->save($cf->getConfigArray());
- // save back the 2FA setting only
- $twoFactor->save();
- if ($result === true) {
- // reload config
- $PMA_Config->loadUserPreferences();
- $tabHash = $_POST['tab_hash'] ?? null;
- $hash = ltrim($tabHash, '#');
- $this->userPreferences->redirect(
- 'index.php?route=/preferences/main-panel',
- null,
- $hash
- );
- return;
- }
- $error = $result;
- }
- $this->addScriptFiles(['config.js']);
- $cfgRelation = $this->relation->getRelationsParam();
- $this->render('preferences/header', [
- 'route' => $route,
- 'is_saved' => ! empty($_GET['saved']),
- 'has_config_storage' => $cfgRelation['userconfigwork'],
- ]);
- if ($formDisplay->hasErrors()) {
- $formErrors = $formDisplay->displayErrors();
- }
- $this->render('preferences/forms/main', [
- 'error' => $error ? $error->getDisplay() : '',
- 'has_errors' => $formDisplay->hasErrors(),
- 'errors' => $formErrors ?? null,
- 'form' => $formDisplay->getDisplay(
- true,
- true,
- true,
- Url::getFromRoute('/preferences/main-panel'),
- ['server' => $server]
- ),
- ]);
- if ($this->response->isAjax()) {
- $this->response->addJSON('disableNaviSettings', true);
- } else {
- define('PMA_DISABLE_NAVI_SETTINGS', true);
- }
- }
- }
|