Add router for server_databases.php

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2019-07-07 16:56:08 -03:00
parent 0371f104a9
commit ff16bee5ad
8 changed files with 42 additions and 15 deletions

View File

@ -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",

View File

@ -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
*/

View File

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

View File

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

View File

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

View File

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

View File

@ -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 */

View File

@ -11,7 +11,7 @@
<ul>
<li id="li_create_database" class="no_bullets">
{% if has_create_database_privileges %}
<form method="post" action="server_databases.php" id="create_database_form" class="ajax">
<form method="post" action="index.php?route=/server/databases" id="create_database_form" class="ajax">
<p>
<strong>
<label for="text_create_db">
@ -80,12 +80,12 @@
database_count,
pos,
url_params,
'server_databases.php',
'index.php?route=/server/databases',
'frame_content',
max_db_list
) }}
<form class="ajax" action="server_databases.php" method="post" name="dbStatsForm" id="dbStatsForm">
<form class="ajax" action="index.php?route=/server/databases" method="post" name="dbStatsForm" id="dbStatsForm">
{{ get_hidden_inputs(url_params) }}
<div class="responsivetable">
<table id="tabledatabases" class="data">
@ -95,11 +95,11 @@
<th></th>
{% endif %}
<th>
<a href="server_databases.php{{ get_common(url_params|merge({
<a href="index.php?route=/server/databases{{ get_common(url_params|merge({
'sort_by': 'SCHEMA_NAME',
'sort_order': url_params.sort_by == 'SCHEMA_NAME'
and url_params.sort_order == 'asc' ? 'desc' : 'asc'
})) }}">
}), '&') }}">
{% trans 'Database' %}
{% if url_params.sort_by == 'SCHEMA_NAME' %}
{% if url_params.sort_order == 'asc' %}
@ -112,11 +112,11 @@
</th>
<th>
<a href="server_databases.php{{ get_common(url_params|merge({
<a href="index.php?route=/server/databases{{ get_common(url_params|merge({
'sort_by': 'DEFAULT_COLLATION_NAME',
'sort_order': url_params.sort_by == 'DEFAULT_COLLATION_NAME'
and url_params.sort_order == 'asc' ? 'desc' : 'asc'
})) }}">
}), '&') }}">
{% trans 'Collation' %}
{% if url_params.sort_by == 'DEFAULT_COLLATION_NAME' %}
{% if url_params.sort_order == 'asc' %}
@ -131,11 +131,11 @@
{% if has_statistics %}
{% for name, statistic in header_statistics %}
<th{{ statistic.format == 'byte' ? ' colspan="2"' }}>
<a href="server_databases.php{{ get_common(url_params|merge({
<a href="index.php?route=/server/databases{{ get_common(url_params|merge({
'sort_by': name,
'sort_order': url_params.sort_by == name
and url_params.sort_order == 'asc' ? 'desc' : 'asc'
})) }}">
}), '&') }}">
{{ statistic.title }}
{% if url_params.sort_by == name %}
{% if url_params.sort_order == 'asc' %}
@ -316,7 +316,7 @@
'content': content,
'class': 'li_switch_dbstats',
'url': {
'href': 'server_databases.php' ~ get_common({'statistics': '1'}),
'href': 'index.php?route=/server/databases' ~ get_common({'statistics': '1'}, '&'),
'title': 'Enable statistics'|trans
}
}] %}