Pass ServerRequest object directly to setup controllers

Instead of passing an array of parameters.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2024-05-10 16:35:44 -03:00
parent ae625702f1
commit 9cac3a9bcc
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
5 changed files with 70 additions and 68 deletions

View File

@ -4,22 +4,15 @@ declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Setup\ConfigGenerator;
use function is_string;
class ConfigController extends AbstractController
{
/**
* @param mixed[] $params Request parameters
*
* @return string HTML
*/
public function __invoke(array $params): string
public function __invoke(ServerRequest $request): string
{
$formset = isset($params['formset']) && is_string($params['formset']) ? $params['formset'] : '';
$eol = isset($params['eol']) && $params['eol'] === 'win' ? 'win' : 'unix';
$pages = $this->getPages();
static $hasCheckPageRefresh = false;
@ -30,11 +23,22 @@ class ConfigController extends AbstractController
$config = ConfigGenerator::getConfigFile($this->config);
return $this->template->render('setup/config/index', [
'formset' => $formset,
'formset' => $this->getFormSetParam($request->getQueryParam('formset')),
'pages' => $pages,
'eol' => $eol,
'eol' => $this->getEolParam($request->getQueryParam('eol')),
'config' => $config,
'has_check_page_refresh' => $hasCheckPageRefresh,
]);
}
private function getFormSetParam(mixed $formSetParam): string
{
return is_string($formSetParam) ? $formSetParam : '';
}
/** @psalm-return 'win'|'unix' */
private function getEolParam(mixed $eolParam): string
{
return $eolParam === 'win' ? 'win' : 'unix';
}
}

View File

@ -5,6 +5,7 @@ declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Config\Forms\Setup\SetupFormList;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\LanguageManager;
use PhpMyAdmin\Setup\FormProcessing;
@ -15,18 +16,13 @@ use function ob_start;
class FormController extends AbstractController
{
/**
* @param mixed[] $params Request parameters
*
* @return string HTML
*/
public function __invoke(array $params): string
public function __invoke(ServerRequest $request): string
{
$pages = $this->getPages();
$formset = isset($params['formset']) && is_string($params['formset']) ? $params['formset'] : '';
$formSet = $this->getFormSetParam($request->getQueryParam('formset'));
$formClass = SetupFormList::get($formset);
$formClass = SetupFormList::get($formSet);
if ($formClass === null) {
return $this->template->render('error/generic', [
'lang' => $GLOBALS['lang'] ?? 'en',
@ -41,10 +37,15 @@ class FormController extends AbstractController
$page = ob_get_clean();
return $this->template->render('setup/form/index', [
'formset' => $formset,
'formset' => $formSet,
'pages' => $pages,
'name' => $form::getName(),
'page' => $page,
]);
}
private function getFormSetParam(mixed $formSetParam): string
{
return is_string($formSetParam) ? $formSetParam : '';
}
}

View File

@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Config;
use PhpMyAdmin\Config\ServerConfigChecks;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\LanguageManager;
use PhpMyAdmin\Setup\Index;
@ -16,22 +17,15 @@ use function is_string;
class HomeController extends AbstractController
{
/**
* @param mixed[] $params Request parameters
*
* @return string HTML
*/
public function __invoke(array $params): string
public function __invoke(ServerRequest $request): string
{
$formset = isset($params['formset']) && is_string($params['formset']) ? $params['formset'] : '';
$pages = $this->getPages();
// message handling
Index::messagesBegin();
// Check phpMyAdmin version
if (isset($params['version_check'])) {
if ($request->hasQueryParam('version_check')) {
Index::versionCheck();
}
@ -86,7 +80,7 @@ class HomeController extends AbstractController
}
return $this->template->render('setup/home/index', [
'formset' => $formset,
'formset' => $this->getFormSetParam($request->getQueryParam('formset')),
'languages' => $languages,
'messages' => $messages,
'server_count' => $this->config->getServerCount(),
@ -98,4 +92,9 @@ class HomeController extends AbstractController
: (Config::getInstance()->get('PMA_IS_WINDOWS') ? 'win' : 'unix'),
]);
}
private function getFormSetParam(mixed $formSetParam): string
{
return is_string($formSetParam) ? $formSetParam : '';
}
}

View File

@ -56,24 +56,17 @@ final class MainController implements InvocableController
}
if ($page === 'form') {
return $response->write((new FormController($GLOBALS['ConfigFile'], $this->template))([
'formset' => $request->getQueryParam('formset'),
]));
return $response->write((new FormController($GLOBALS['ConfigFile'], $this->template))($request));
}
if ($page === 'config') {
return $response->write((new ConfigController($GLOBALS['ConfigFile'], $this->template))([
'formset' => $request->getQueryParam('formset'),
'eol' => $request->getQueryParam('eol'),
]));
return $response->write((new ConfigController($GLOBALS['ConfigFile'], $this->template))($request));
}
if ($page === 'servers') {
$controller = new ServersController($GLOBALS['ConfigFile'], $this->template);
/** @var mixed $mode */
$mode = $request->getQueryParam('mode');
if ($mode === 'remove' && $request->isPost()) {
$controller->destroy(['id' => $request->getQueryParam('id')]);
if ($request->getQueryParam('mode') === 'remove' && $request->isPost()) {
$controller->destroy($request);
$response = $response->withStatus(StatusCodeInterface::STATUS_FOUND);
return $response->withHeader(
@ -82,16 +75,9 @@ final class MainController implements InvocableController
);
}
return $response->write($controller->index([
'formset' => $request->getQueryParam('formset'),
'mode' => $mode,
'id' => $request->getQueryParam('id'),
]));
return $response->write($controller->index($request));
}
return $response->write((new HomeController($GLOBALS['ConfigFile'], $this->template))([
'formset' => $request->getQueryParam('formset'),
'version_check' => $request->getQueryParam('version_check'),
]));
return $response->write((new HomeController($GLOBALS['ConfigFile'], $this->template))($request));
}
}

View File

@ -5,6 +5,7 @@ declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Config\Forms\Setup\ServersForm;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Setup\FormProcessing;
use function in_array;
@ -15,19 +16,10 @@ use function ob_start;
class ServersController extends AbstractController
{
/**
* @param mixed[] $params Request parameters
*
* @return string HTML
*/
public function index(array $params): string
public function index(ServerRequest $request): string
{
$formset = isset($params['formset']) && is_string($params['formset']) ? $params['formset'] : '';
$id = isset($params['id']) && is_numeric($params['id']) && (int) $params['id'] >= 1 ? (int) $params['id'] : 0;
$mode = '';
if (isset($params['mode']) && in_array($params['mode'], ['add', 'edit', 'revert'], true)) {
$mode = $params['mode'];
}
$id = $this->getIdParam($request->getQueryParam('id'));
$mode = $this->getModeParam($request->getQueryParam('mode'));
$pages = $this->getPages();
@ -42,7 +34,7 @@ class ServersController extends AbstractController
$page = ob_get_clean();
return $this->template->render('setup/servers/index', [
'formset' => $formset,
'formset' => $this->getFormSetParam($request->getQueryParam('formset')),
'pages' => $pages,
'has_server' => $hasServer,
'mode' => $mode,
@ -52,17 +44,37 @@ class ServersController extends AbstractController
]);
}
/** @param mixed[] $params Request parameters */
public function destroy(array $params): void
public function destroy(ServerRequest $request): void
{
$id = isset($params['id']) && is_numeric($params['id']) && (int) $params['id'] >= 1 ? (int) $params['id'] : 0;
$id = $this->getIdParam($request->getQueryParam('id'));
$hasServer = $id >= 1 && $this->config->get('Servers/' . $id) !== null;
if (! $hasServer) {
return;
}
$this->config->removeServer($id);
}
private function getFormSetParam(mixed $formSetParam): string
{
return is_string($formSetParam) ? $formSetParam : '';
}
/** @psalm-return 'add'|'edit'|'revert'|'' */
private function getModeParam(mixed $modeParam): string
{
return in_array($modeParam, ['add', 'edit', 'revert'], true) ? $modeParam : '';
}
/** @psalm-return int<0, max> */
private function getIdParam(mixed $idParam): int
{
if (! is_numeric($idParam)) {
return 0;
}
$id = (int) $idParam;
return $id >= 1 ? $id : 0;
}
}