From ff16bee5ade00243f2695c859a19985538227f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Sun, 7 Jul 2019 16:56:08 -0300 Subject: [PATCH] Add router for server_databases.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- composer.json | 1 + index.php | 24 +++++++++++++++++++ js/server/databases.js | 2 +- libraries/classes/Menu.php | 2 +- .../Nodes/NodeDatabaseContainer.php | 4 ++-- libraries/classes/Util.php | 2 +- server_databases.php | 2 ++ templates/server/databases/index.twig | 20 ++++++++-------- 8 files changed, 42 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index dc1edc4137..f804dcd6c1 100644 --- a/composer.json +++ b/composer.json @@ -46,6 +46,7 @@ "ext-pcre": "*", "ext-xml": "*", "google/recaptcha": "^1.1", + "nikic/fast-route": "^1.3", "phpmyadmin/motranslator": "^4.0", "phpmyadmin/shapefile": "^2.0", "phpmyadmin/sql-parser": "^5.0", diff --git a/index.php b/index.php index 11d40b7ed1..a530eca7b5 100644 --- a/index.php +++ b/index.php @@ -7,6 +7,8 @@ */ declare(strict_types=1); +use FastRoute\Dispatcher; +use FastRoute\RouteCollector; use PhpMyAdmin\Controllers\HomeController; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; @@ -14,6 +16,8 @@ use PhpMyAdmin\Response; use PhpMyAdmin\Url; use PhpMyAdmin\Util; +use function FastRoute\simpleDispatcher; + if (! defined('ROOT_PATH')) { define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR); } @@ -22,6 +26,26 @@ global $server; require_once ROOT_PATH . 'libraries/common.inc.php'; +if (isset($_GET['route']) || isset($_POST['route'])) { + $dispatcher = simpleDispatcher(function (RouteCollector $r) { + $r->addRoute([ + 'GET', + 'POST', + ], '/server/databases', function () { + require_once ROOT_PATH . 'server_databases.php'; + }); + }); + $routeInfo = $dispatcher->dispatch( + $_SERVER['REQUEST_METHOD'], + rawurldecode($_GET['route'] ?? $_POST['route']) + ); + if ($routeInfo[0] === Dispatcher::FOUND) { + $handler = $routeInfo[1]; + $handler($routeInfo[2]); + exit; + } +} + /** * pass variables to child pages */ diff --git a/js/server/databases.js b/js/server/databases.js index 1a943ce5d5..b10d0ddd0f 100644 --- a/js/server/databases.js +++ b/js/server/databases.js @@ -61,7 +61,7 @@ AJAX.registerOnload('server/databases.js', function () { var argsep = CommonParams.get('arg_separator'); $(this).confirm( question, - $form.prop('action') + '?' + $(this).serialize() + + $form.prop('action') + '&' + $(this).serialize() + argsep + 'drop_selected_dbs=1', function (url) { Functions.ajaxShowMessage(Messages.strProcessingRequest, false); diff --git a/libraries/classes/Menu.php b/libraries/classes/Menu.php index f69c31822d..4d90378221 100644 --- a/libraries/classes/Menu.php +++ b/libraries/classes/Menu.php @@ -578,7 +578,7 @@ class Menu $tabs = []; $tabs['databases']['icon'] = 's_db'; - $tabs['databases']['link'] = 'server_databases.php'; + $tabs['databases']['link'] = 'index.php?route=/server/databases'; $tabs['databases']['text'] = __('Databases'); $tabs['sql']['icon'] = 'b_sql'; diff --git a/libraries/classes/Navigation/Nodes/NodeDatabaseContainer.php b/libraries/classes/Navigation/Nodes/NodeDatabaseContainer.php index 9b5746f090..16a1932790 100644 --- a/libraries/classes/Navigation/Nodes/NodeDatabaseContainer.php +++ b/libraries/classes/Navigation/Nodes/NodeDatabaseContainer.php @@ -42,8 +42,8 @@ class NodeDatabaseContainer extends Node $new->isNew = true; $new->icon = Util::getImage('b_newdb', ''); $new->links = [ - 'text' => 'server_databases.php?server=' . $GLOBALS['server'], - 'icon' => 'server_databases.php?server=' . $GLOBALS['server'], + 'text' => 'index.php?route=/server/databases&server=' . $GLOBALS['server'], + 'icon' => 'index.php?route=/server/databases&server=' . $GLOBALS['server'], ]; $new->classes = 'new_database italics'; $this->addChild($new); diff --git a/libraries/classes/Util.php b/libraries/classes/Util.php index b488c26fba..9459d03752 100644 --- a/libraries/classes/Util.php +++ b/libraries/classes/Util.php @@ -3193,7 +3193,7 @@ class Util case 'welcome': return 'index.php'; case 'databases': - return 'server_databases.php'; + return 'index.php?route=/server/databases'; case 'status': return 'server_status.php'; case 'variables': diff --git a/server_databases.php b/server_databases.php index a81b278e34..2e43044540 100644 --- a/server_databases.php +++ b/server_databases.php @@ -16,6 +16,8 @@ if (! defined('ROOT_PATH')) { define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR); } +global $containerBuilder; + require_once ROOT_PATH . 'libraries/common.inc.php'; /** @var DatabasesController $controller */ diff --git a/templates/server/databases/index.twig b/templates/server/databases/index.twig index f8965f8426..f70d318e57 100644 --- a/templates/server/databases/index.twig +++ b/templates/server/databases/index.twig @@ -11,7 +11,7 @@