Skip to content

Commit

Permalink
Pass ServerRequest object directly to setup controllers
Browse files Browse the repository at this point in the history
Instead of passing an array of parameters.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
  • Loading branch information
MauricioFauth committed May 10, 2024
1 parent ae62570 commit 9cac3a9
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 68 deletions.
26 changes: 15 additions & 11 deletions src/Controllers/Setup/ConfigController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,15 @@

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;
Expand All @@ -30,11 +23,22 @@ public function __invoke(array $params): string
$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';
}
}
19 changes: 10 additions & 9 deletions src/Controllers/Setup/FormController.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace PhpMyAdmin\Controllers\Setup;

use PhpMyAdmin\Config\Forms\Setup\SetupFormList;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\LanguageManager;
use PhpMyAdmin\Setup\FormProcessing;

Expand All @@ -15,18 +16,13 @@

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',
Expand All @@ -41,10 +37,15 @@ public function __invoke(array $params): string
$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 : '';
}
}
19 changes: 9 additions & 10 deletions src/Controllers/Setup/HomeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use PhpMyAdmin\Config;
use PhpMyAdmin\Config\ServerConfigChecks;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\LanguageManager;
use PhpMyAdmin\Setup\Index;

Expand All @@ -16,22 +17,15 @@

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();
}

Expand Down Expand Up @@ -86,7 +80,7 @@ public function __invoke(array $params): string
}

return $this->template->render('setup/home/index', [
'formset' => $formset,
'formset' => $this->getFormSetParam($request->getQueryParam('formset')),
'languages' => $languages,
'messages' => $messages,
'server_count' => $this->config->getServerCount(),
Expand All @@ -98,4 +92,9 @@ public function __invoke(array $params): string
: (Config::getInstance()->get('PMA_IS_WINDOWS') ? 'win' : 'unix'),
]);
}

private function getFormSetParam(mixed $formSetParam): string
{
return is_string($formSetParam) ? $formSetParam : '';
}
}
26 changes: 6 additions & 20 deletions src/Controllers/Setup/MainController.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,24 +56,17 @@ public function __invoke(ServerRequest $request): Response
}

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(
Expand All @@ -82,16 +75,9 @@ public function __invoke(ServerRequest $request): Response
);
}

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));
}
}
48 changes: 30 additions & 18 deletions src/Controllers/Setup/ServersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace PhpMyAdmin\Controllers\Setup;

use PhpMyAdmin\Config\Forms\Setup\ServersForm;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Setup\FormProcessing;

use function in_array;
Expand All @@ -15,19 +16,10 @@

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

Expand All @@ -42,7 +34,7 @@ public function index(array $params): string
$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,
Expand All @@ -52,17 +44,37 @@ public function index(array $params): string
]);
}

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

0 comments on commit 9cac3a9

Please sign in to comment.