diff --git a/js/global.d.ts b/js/global.d.ts index 1cf63c5a38..51e124750a 100644 --- a/js/global.d.ts +++ b/js/global.d.ts @@ -1,4 +1,4 @@ -// js/messages.php +// libraries/classes/Controllers/JavaScriptMessagesController.php declare var Messages: { [p: string]: string }; // templates/javascript/variables.twig diff --git a/js/messages.php b/js/messages.php deleted file mode 100644 index 2844458935..0000000000 --- a/js/messages.php +++ /dev/null @@ -1,64 +0,0 @@ -PHP 7.2.5+ is required.

Currently installed version is: ' . PHP_VERSION . '

'); -} - -// phpcs:disable PSR1.Files.SideEffects -define('PHPMYADMIN', true); -// phpcs:enable - -require_once ROOT_PATH . 'libraries/constants.php'; - -/** - * Activate autoloader - */ -if (! @is_readable(AUTOLOAD_FILE)) { - die( - '

File ' . AUTOLOAD_FILE . ' missing or not readable.

' - . '

Most likely you did not run Composer to ' - . '' - . 'install library files.

' - ); -} - -require AUTOLOAD_FILE; - -chdir('..'); - -// Send correct type. -header('Content-Type: text/javascript; charset=UTF-8'); - -// Cache output in client - the nocache query parameter makes sure that this file is reloaded when config changes. -header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT'); - -$GLOBALS['isMinimumCommon'] = true; -// phpcs:disable PSR1.Files.SideEffects -define('PMA_PATH_TO_BASEDIR', '../'); -define('PMA_NO_SESSION', true); -// phpcs:enable - -Common::run(); - -$buffer = OutputBuffering::getInstance(); -$buffer->start(); - -register_shutdown_function(static function (): void { - echo OutputBuffering::getInstance()->getContents(); -}); - -/** @var JavaScriptMessagesController $controller */ -$controller = $GLOBALS['containerBuilder']->get(JavaScriptMessagesController::class); -$controller(); diff --git a/libraries/classes/Common.php b/libraries/classes/Common.php index 706074dc33..1670cf572c 100644 --- a/libraries/classes/Common.php +++ b/libraries/classes/Common.php @@ -25,7 +25,9 @@ use function defined; use function explode; use function extension_loaded; use function function_exists; +use function gmdate; use function hash_equals; +use function header; use function htmlspecialchars; use function implode; use function ini_get; @@ -41,6 +43,7 @@ use function mb_substr; use function register_shutdown_function; use function session_id; use function strlen; +use function time; use function trigger_error; use function urldecode; @@ -95,10 +98,20 @@ final class Common $request = self::getRequest(); $route = $request->getRoute(); - if ($route === '/import-status' || $route === '/url') { + if ($route === '/import-status' || $route === '/url' || $route === '/messages') { $GLOBALS['isMinimumCommon'] = true; } + if ($route === '/messages') { + // Send correct type. + header('Content-Type: text/javascript; charset=UTF-8'); + // Cache output in client + // the nocache query parameter makes sure that this file is reloaded when config changes. + header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT'); + + define('PMA_NO_SESSION', true); + } + $GLOBALS['containerBuilder'] = Core::getContainerBuilder(); $GLOBALS['errorHandler'] = $GLOBALS['containerBuilder']->get('error_handler'); diff --git a/libraries/classes/Header.php b/libraries/classes/Header.php index 85bc1dcd10..c9217a4dea 100644 --- a/libraries/classes/Header.php +++ b/libraries/classes/Header.php @@ -141,7 +141,7 @@ class Header $this->scripts->addFile('vendor/jquery/jquery-ui-timepicker-addon.js'); $this->scripts->addFile('menu_resizer.js'); $this->scripts->addFile('cross_framing_protection.js'); - $this->scripts->addFile('messages.php', ['l' => $GLOBALS['lang']]); + $this->scripts->addFile('index.php', ['route' => '/messages', 'l' => $GLOBALS['lang']]); $this->scripts->addFile('config.js'); $this->scripts->addFile('functions.js'); $this->scripts->addFile('navigation.js'); diff --git a/libraries/classes/Scripts.php b/libraries/classes/Scripts.php index 4ccfc1a4a6..66e86729ed 100644 --- a/libraries/classes/Scripts.php +++ b/libraries/classes/Scripts.php @@ -88,7 +88,7 @@ class Scripts { return ! str_contains($filename, 'jquery') && ! str_contains($filename, 'codemirror') - && ! str_contains($filename, 'messages.php') + && ! str_contains($filename, 'index.php') && ! str_contains($filename, 'ajax.js') && ! str_contains($filename, 'datetimepicker.js') && ! str_contains($filename, 'validator-messages.js') diff --git a/libraries/routes.php b/libraries/routes.php index 44f1062780..5e95d0a2ac 100644 --- a/libraries/routes.php +++ b/libraries/routes.php @@ -17,6 +17,7 @@ use PhpMyAdmin\Controllers\GisDataEditorController; use PhpMyAdmin\Controllers\GitInfoController; use PhpMyAdmin\Controllers\HomeController; use PhpMyAdmin\Controllers\Import; +use PhpMyAdmin\Controllers\JavaScriptMessagesController; use PhpMyAdmin\Controllers\LicenseController; use PhpMyAdmin\Controllers\LintController; use PhpMyAdmin\Controllers\LogoutController; @@ -128,6 +129,7 @@ return static function (RouteCollector $routes): void { $routes->get('/license', LicenseController::class); $routes->addRoute(['GET', 'POST'], '/lint', LintController::class); $routes->addRoute(['GET', 'POST'], '/logout', LogoutController::class); + $routes->get('/messages', JavaScriptMessagesController::class); $routes->addRoute(['GET', 'POST'], '/navigation', NavigationController::class); $routes->addGroup('/normalization', static function (RouteCollector $routes): void { $routes->addRoute(['GET', 'POST'], '', Normalization\MainController::class); diff --git a/psalm.xml b/psalm.xml index 83a7d3d1ab..59407f9bb5 100644 --- a/psalm.xml +++ b/psalm.xml @@ -15,7 +15,6 @@ - diff --git a/scripts/check-release-excludes.sh b/scripts/check-release-excludes.sh index 0d945400d6..8d3a95fb08 100755 --- a/scripts/check-release-excludes.sh +++ b/scripts/check-release-excludes.sh @@ -183,8 +183,6 @@ validateExtension() { ;; index.php) ;; - js/messages.php) - ;; config.sample.inc.php) ;; show_config_errors.php) diff --git a/templates/scripts.twig b/templates/scripts.twig index ddaf2748a9..c152edbd38 100644 --- a/templates/scripts.twig +++ b/templates/scripts.twig @@ -1,6 +1,6 @@ {% for file in files %} - {% endfor %} diff --git a/templates/setup/base.twig b/templates/setup/base.twig index 68aeb0a751..509df95e6c 100644 --- a/templates/setup/base.twig +++ b/templates/setup/base.twig @@ -13,7 +13,7 @@ - +