Move home entry point logic to the routes file

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2019-11-05 21:46:47 -03:00
parent a9df8a4dbb
commit f29239d72f
9 changed files with 55 additions and 74 deletions

View File

@ -612,10 +612,9 @@ Functions.displayGitRevision = function () {
$('#is_git_revision').remove();
$('#li_pma_version_git').remove();
$.get(
'index.php?route=/',
'index.php?route=/git-revision',
{
'server': CommonParams.get('server'),
'git_revision': true,
'ajax_request': true,
'no_debug': true
},

View File

@ -61,11 +61,25 @@ class HomeController extends AbstractController
/**
* @param array $params Request parameters
*
* @return string HTML
*/
public function index(): string
public function index(array $params): string
{
global $cfg, $server, $collation_connection, $message;
global $cfg, $server, $collation_connection, $message, $show_query, $db, $table;
if ($this->response->isAjax() && ! empty($params['access_time'])) {
return '';
}
$db = '';
$table = '';
$show_query = '1';
if ($server > 0) {
include ROOT_PATH . 'libraries/server_common.inc.php';
}
$languageManager = LanguageManager::getInstance();
@ -289,6 +303,8 @@ class HomeController extends AbstractController
$preferences = $userPreferences->load();
$preferences['config_data']['ThemeDefault'] = $params['set_theme'];
$userPreferences->save($preferences['config_data']);
$this->response->header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
}
/**
@ -303,6 +319,8 @@ class HomeController extends AbstractController
$params['collation_connection'],
'utf8mb4_unicode_ci'
);
$this->response->header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
}
/**
@ -310,6 +328,9 @@ class HomeController extends AbstractController
*/
public function reloadRecentTablesList(): array
{
if (! $this->response->isAjax()) {
return [];
}
return [
'list' => RecentFavoriteTable::getInstance('recent')->getHtmlList(),
];
@ -320,6 +341,13 @@ class HomeController extends AbstractController
*/
public function gitRevision(): string
{
global $PMA_Config;
/** @var Config $PMA_Config */
if (! $this->response->isAjax() || ! $PMA_Config->isGitRevision()) {
return '';
}
return (new GitRevision(
$this->response,
$this->config,

View File

@ -365,7 +365,7 @@ class RecentFavoriteTable
public static function getHtmlUpdateRecentTables()
{
$retval = '<a class="hide" id="update_recent_tables" href="';
$retval .= Url::getFromRoute('/', [
$retval .= Url::getFromRoute('/recent-table', [
'ajax_request' => true,
'recent_table' => true,
]);

View File

@ -338,7 +338,7 @@ class ThemeManager
if ($form) {
$select_box .= '<form name="setTheme" method="post"';
$select_box .= ' action="index.php?route=/" class="disableAjax">';
$select_box .= ' action="index.php?route=/set-theme" class="disableAjax">';
$select_box .= Url::getHiddenInputs();
}

View File

@ -1,63 +0,0 @@
<?php
/**
* Handles the home page
*
* @package PhpMyAdmin
*/
declare(strict_types=1);
use PhpMyAdmin\Controllers\HomeController;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\Response;
use PhpMyAdmin\Url;
if (! defined('PHPMYADMIN')) {
exit;
}
global $containerBuilder, $server, $show_query, $db, $table;
/** @var Response $response */
$response = $containerBuilder->get(Response::class);
/** @var DatabaseInterface $dbi */
$dbi = $containerBuilder->get(DatabaseInterface::class);
/** @var HomeController $controller */
$controller = $containerBuilder->get(HomeController::class);
if (isset($_REQUEST['ajax_request']) && ! empty($_REQUEST['access_time'])) {
exit;
}
if (isset($_POST['set_theme'])) {
$controller->setTheme([
'set_theme' => $_POST['set_theme'],
]);
header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
} elseif (isset($_POST['collation_connection'])) {
$controller->setCollationConnection([
'collation_connection' => $_POST['collation_connection'],
]);
header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
} elseif ($response->isAjax() && ! empty($_REQUEST['recent_table'])) {
$response->addJSON($controller->reloadRecentTablesList());
} elseif ($GLOBALS['PMA_Config']->isGitRevision()
&& isset($_REQUEST['git_revision'])
&& $response->isAjax()
) {
$response->addHTML($controller->gitRevision());
} else {
// Handles some variables that may have been sent by the calling script
$db = '';
$table = '';
$show_query = '1';
if ($server > 0) {
include ROOT_PATH . 'libraries/server_common.inc.php';
}
$response->addHTML($controller->index());
}

View File

@ -9,6 +9,7 @@ use FastRoute\RouteCollector;
use PhpMyAdmin\Controllers\Database\DataDictionaryController;
use PhpMyAdmin\Controllers\Database\MultiTableQueryController;
use PhpMyAdmin\Controllers\Database\StructureController;
use PhpMyAdmin\Controllers\HomeController;
use PhpMyAdmin\Controllers\Server\BinlogController;
use PhpMyAdmin\Controllers\Server\CollationsController;
use PhpMyAdmin\Controllers\Server\DatabasesController;
@ -35,8 +36,24 @@ if (! defined('PHPMYADMIN')) {
$response = $containerBuilder->get(Response::class);
return function (RouteCollector $routes) use ($containerBuilder, $response) {
$routes->addRoute(['GET', 'POST'], '[/]', function () {
require_once ROOT_PATH . 'libraries/entry_points/home.php';
$routes->addGroup('', function (RouteCollector $routes) use ($containerBuilder, $response) {
/** @var HomeController $controller */
$controller = $containerBuilder->get(HomeController::class);
$routes->addRoute(['GET', 'POST'], '[/]', function () use ($response, $controller) {
$response->addHTML($controller->index(['access_time' => $_REQUEST['access_time'] ?? null]));
});
$routes->post('/set-theme', function () use ($controller) {
$controller->setTheme(['set_theme' => $_POST['set_theme']]);
});
$routes->post('/collation-connection', function () use ($controller) {
$controller->setCollationConnection(['collation_connection' => $_POST['collation_connection']]);
});
$routes->addRoute(['GET', 'POST'], '/recent-table', function () use ($response, $controller) {
$response->addJSON($controller->reloadRecentTablesList());
});
$routes->addRoute(['GET', 'POST'], '/git-revision', function () use ($response, $controller) {
$response->addHTML($controller->gitRevision());
});
});
$routes->addRoute(['GET', 'POST'], '/ajax', function () {
require_once ROOT_PATH . 'libraries/entry_points/ajax.php';

View File

@ -39,7 +39,7 @@
{{ change_password is not empty ? change_password|raw }}
<li id="li_select_mysql_collation" class="no_bullets">
<form class="disableAjax" method="post" action="{{ url('/') }}">
<form class="disableAjax" method="post" action="{{ url('/collation-connection') }}">
{{ get_hidden_inputs(null, null, 4, 'collation_connection') }}
<label for="select_collation_connection">
{{ get_image('s_asci') }}

View File

@ -3,7 +3,7 @@
{{ name }} ({{ version }})
</h2>
<p>
<a class="take_theme" name="{{ id }}" href="{{ url('/', url_params) }}">
<a class="take_theme" name="{{ id }}" href="{{ url('/set-theme', url_params) }}">
{% if screen is not empty %}
<img src="{{ screen }}" alt="{{ name }}" title="{{ name }}">
<br>

View File

@ -250,7 +250,7 @@ class ThemeTest extends PmaTestCase
$this->object->getPrintPreview()
);
$this->assertStringContainsString(
'name="" href="index.php?route=/&amp;set_theme=&amp;server=99&amp;lang=en">',
'name="" href="index.php?route=/set-theme&amp;set_theme=&amp;server=99&amp;lang=en">',
$this->object->getPrintPreview()
);
$this->assertStringContainsString(