diff --git a/libraries/classes/Common.php b/libraries/classes/Common.php index 0ea25f1b81..22e2a0f2f3 100644 --- a/libraries/classes/Common.php +++ b/libraries/classes/Common.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin; +use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Dbal\DatabaseName; use PhpMyAdmin\Dbal\TableName; @@ -38,7 +39,9 @@ use function mb_strlen; use function mb_strpos; use function mb_strrpos; use function mb_substr; +use function ob_start; use function register_shutdown_function; +use function restore_error_handler; use function session_id; use function strlen; use function time; @@ -219,6 +222,10 @@ final class Common UrlRedirector::redirect($_GET['url'] ?? ''); } + if ($isSetupPage) { + self::setupPageBootstrap($config); + } + return; } @@ -629,4 +636,34 @@ final class Common return self::$request; } + + private static function setupPageBootstrap(Config $config): void + { + // use default error handler + restore_error_handler(); + + // Save current language in a cookie, since it was not set in Common::run(). + $config->setCookie('pma_lang', (string) $GLOBALS['lang']); + $config->set('is_setup', true); + + $GLOBALS['ConfigFile'] = new ConfigFile(); + $GLOBALS['ConfigFile']->setPersistKeys([ + 'DefaultLang', + 'ServerDefault', + 'UploadDir', + 'SaveDir', + 'Servers/1/verbose', + 'Servers/1/host', + 'Servers/1/port', + 'Servers/1/socket', + 'Servers/1/auth_type', + 'Servers/1/user', + 'Servers/1/password', + ]); + + $GLOBALS['dbi'] = DatabaseInterface::load(); + + // allows for redirection even after sending some data + ob_start(); + } } diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 20240c86cd..b68cb2d992 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -239,7 +239,8 @@ $_REQUEST['back'] $_REQUEST['goto'] - + + (string) $GLOBALS['lang'] (string) $_POST['token'] (string) $_POST['token'] @@ -14438,11 +14439,6 @@ $serviceName - - - (string) $GLOBALS['lang'] - - $http_response_code_param diff --git a/setup/index.php b/setup/index.php index 1b1077c372..dc4d1ffe20 100644 --- a/setup/index.php +++ b/setup/index.php @@ -3,12 +3,10 @@ declare(strict_types=1); use PhpMyAdmin\Common; -use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Controllers\Setup\MainController; use PhpMyAdmin\Controllers\Setup\ShowConfigController; use PhpMyAdmin\Controllers\Setup\ValidateController; use PhpMyAdmin\Core; -use PhpMyAdmin\DatabaseInterface; // phpcs:disable PSR1.Files.SideEffects if (! defined('ROOT_PATH')) { @@ -37,35 +35,6 @@ require AUTOLOAD_FILE; Common::run(true); -// use default error handler -restore_error_handler(); - -// Save current language in a cookie, since it was not set in Common::run(). -$GLOBALS['config']->setCookie('pma_lang', (string) $GLOBALS['lang']); -$GLOBALS['config']->set('is_setup', true); - -$GLOBALS['ConfigFile'] = new ConfigFile(); -$GLOBALS['ConfigFile']->setPersistKeys( - [ - 'DefaultLang', - 'ServerDefault', - 'UploadDir', - 'SaveDir', - 'Servers/1/verbose', - 'Servers/1/host', - 'Servers/1/port', - 'Servers/1/socket', - 'Servers/1/auth_type', - 'Servers/1/user', - 'Servers/1/password', - ] -); - -$GLOBALS['dbi'] = DatabaseInterface::load(); - -// allows for redirection even after sending some data -ob_start(); - $request = Common::getRequest(); $route = $request->getRoute(); if ($route === '/setup' || $route === '/') {