Extract js/messages.php entry point into a route

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2022-08-06 22:25:32 -03:00
parent 2d41333104
commit 87d695f2c8
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
10 changed files with 22 additions and 74 deletions

2
js/global.d.ts vendored
View File

@ -1,4 +1,4 @@
// js/messages.php
// libraries/classes/Controllers/JavaScriptMessagesController.php
declare var Messages: { [p: string]: string };
// templates/javascript/variables.twig

View File

@ -1,64 +0,0 @@
<?php
declare(strict_types=1);
use PhpMyAdmin\Common;
use PhpMyAdmin\Controllers\JavaScriptMessagesController;
use PhpMyAdmin\OutputBuffering;
if (! defined('ROOT_PATH')) {
// phpcs:disable PSR1.Files.SideEffects
define('ROOT_PATH', dirname(__DIR__) . DIRECTORY_SEPARATOR);
// phpcs:enable
}
if (PHP_VERSION_ID < 70205) {
die('<p>PHP 7.2.5+ is required.</p><p>Currently installed version is: ' . PHP_VERSION . '</p>');
}
// 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(
'<p>File <samp>' . AUTOLOAD_FILE . '</samp> missing or not readable.</p>'
. '<p>Most likely you did not run Composer to '
. '<a href="https://docs.phpmyadmin.net/en/latest/setup.html#installing-from-git">'
. 'install library files</a>.</p>'
);
}
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();

View File

@ -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');

View File

@ -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');

View File

@ -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')

View File

@ -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);

View File

@ -15,7 +15,6 @@
<directory name="setup"/>
<directory name="test/classes"/>
<directory name="test/selenium"/>
<file name="js/messages.php"/>
<file name="index.php"/>
<file name="show_config_errors.php"/>
<ignoreFiles>

View File

@ -183,8 +183,6 @@ validateExtension() {
;;
index.php)
;;
js/messages.php)
;;
config.sample.inc.php)
;;
show_config_errors.php)

View File

@ -1,6 +1,6 @@
{% for file in files %}
<script data-cfasync="false" type="text/javascript" src="{{ base_dir }}js/
{{- file.filename starts with 'vendor/' or file.filename starts with 'messages.php' ? file.filename : 'dist/' ~ file.filename -}}
<script data-cfasync="false" type="text/javascript" src="{{ base_dir }}{{ not (file.filename starts with 'index.php') ? 'js/' -}}
{{- file.filename starts with 'vendor/' or file.filename starts with 'index.php' ? file.filename : 'dist/' ~ file.filename -}}
{{- '.php' in file.filename ? get_common(file.params|merge({'v': version})) : '?v=' ~ version|url_encode }}"></script>
{% endfor %}

View File

@ -13,7 +13,7 @@
<script type="text/javascript" src="../js/dist/setup/ajax.js"></script>
<script type="text/javascript" src="../js/dist/config.js"></script>
<script type="text/javascript" src="../js/dist/setup/scripts.js"></script>
<script type="text/javascript" src="../js/messages.php"></script>
<script type="text/javascript" src="../{{ url('/messages') }}"></script>
</head>
<body>