summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Roach <greg@subaqua.co.uk>2020-06-16 09:05:59 +0100
committerGreg Roach <greg@subaqua.co.uk>2020-06-16 09:26:35 +0100
commit430ed1cbddd3454cfaa963bec8fbbc0570fa9aea (patch)
tree1c9e3bd7e0ce8b622b300368eb472d80e97b5cbc
parent573931b38bdfde36812438d3370811c40fcca13c (diff)
downloadwebtrees-430ed1cbddd3454cfaa963bec8fbbc0570fa9aea.tar.gz
webtrees-430ed1cbddd3454cfaa963bec8fbbc0570fa9aea.tar.bz2
webtrees-430ed1cbddd3454cfaa963bec8fbbc0570fa9aea.zip
Refactor controllers as request handlers
-rw-r--r--app/Http/Middleware/ReadConfigIni.php20
-rw-r--r--app/Http/RequestHandlers/SetupWizard.php (renamed from app/Http/Controllers/SetupController.php)17
-rw-r--r--phpstan-baseline.neon4
3 files changed, 22 insertions, 19 deletions
diff --git a/app/Http/Middleware/ReadConfigIni.php b/app/Http/Middleware/ReadConfigIni.php
index 8f66e1a536..033c0d4e12 100644
--- a/app/Http/Middleware/ReadConfigIni.php
+++ b/app/Http/Middleware/ReadConfigIni.php
@@ -19,7 +19,7 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\Middleware;
-use Fisharebest\Webtrees\Http\Controllers\SetupController;
+use Fisharebest\Webtrees\Http\RequestHandlers\SetupWizard;
use Fisharebest\Webtrees\Webtrees;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -34,15 +34,15 @@ use function parse_ini_file;
*/
class ReadConfigIni implements MiddlewareInterface
{
- /** @var SetupController */
- private $setup_controller;
+ /** @var SetupWizard */
+ private $setup_wizard;
/**
- * @param SetupController $setup_controller
+ * @param SetupWizard $setup_wizard
*/
- public function __construct(SetupController $setup_controller)
+ public function __construct(SetupWizard $setup_wizard)
{
- $this->setup_controller = $setup_controller;
+ $this->setup_wizard = $setup_wizard;
}
/**
@@ -61,11 +61,11 @@ class ReadConfigIni implements MiddlewareInterface
foreach ($config as $key => $value) {
$request = $request->withAttribute($key, $value);
}
-
- return $handler->handle($request);
+ } else {
+ // No configuration file? Run the setup wizard to create one.
+ $handler = $this->setup_wizard;
}
- // No configuration file? Run the setup wizard to create one.
- return $this->setup_controller->setup($request);
+ return $handler->handle($request);
}
}
diff --git a/app/Http/Controllers/SetupController.php b/app/Http/RequestHandlers/SetupWizard.php
index 3301fbd6f7..9a0df315f0 100644
--- a/app/Http/Controllers/SetupController.php
+++ b/app/Http/RequestHandlers/SetupWizard.php
@@ -17,7 +17,7 @@
declare(strict_types=1);
-namespace Fisharebest\Webtrees\Http\Controllers;
+namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Exception;
use Fisharebest\Localization\Locale;
@@ -25,6 +25,7 @@ use Fisharebest\Localization\Locale\LocaleEnUs;
use Fisharebest\Localization\Locale\LocaleInterface;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Cache;
+use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleLanguageInterface;
use Fisharebest\Webtrees\Services\MigrationService;
@@ -37,6 +38,7 @@ use Fisharebest\Webtrees\Webtrees;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
+use Psr\Http\Server\RequestHandlerInterface;
use Symfony\Component\Cache\Adapter\NullAdapter;
use Throwable;
@@ -56,8 +58,10 @@ use function view;
/**
* Controller for the installation wizard
*/
-class SetupController extends AbstractBaseController
+class SetupWizard implements RequestHandlerInterface
{
+ use ViewResponseTrait;
+
private const DEFAULT_DBTYPE = 'mysql';
private const DEFAULT_PREFIX = 'wt_';
private const DEFAULT_DATA = [
@@ -76,9 +80,6 @@ class SetupController extends AbstractBaseController
'wtemail' => '',
];
- /** @var string */
- protected $layout = 'layouts/setup';
-
/** @var MigrationService */
private $migration_service;
@@ -92,7 +93,7 @@ class SetupController extends AbstractBaseController
private $user_service;
/**
- * SetupController constructor.
+ * SetupWizard constructor.
*
* @param MigrationService $migration_service
* @param ModuleService $module_service
@@ -118,8 +119,10 @@ class SetupController extends AbstractBaseController
*
* @return ResponseInterface
*/
- public function setup(ServerRequestInterface $request): ResponseInterface
+ public function handle(ServerRequestInterface $request): ResponseInterface
{
+ $this->layout = 'layouts/setup';
+
// We will need an IP address for the logs.
$ip_address = $request->getServerParams()['REMOTE_ADDR'] ?? '127.0.0.1';
$request = $request->withAttribute('client-ip', $ip_address);
diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon
index 021948d384..d5ad552efd 100644
--- a/phpstan-baseline.neon
+++ b/phpstan-baseline.neon
@@ -598,12 +598,12 @@ parameters:
-
message: "#^Parameter \\#1 \\$value of function e expects Illuminate\\\\Contracts\\\\Support\\\\Htmlable\\|string, string\\|false given\\.$#"
count: 1
- path: app/Http/Controllers/SetupController.php
+ path: app/Http/RequestHandlers/SetupWizard.php
-
message: "#^Parameter \\#1 \\$str of function substr expects string, string\\|false given\\.$#"
count: 1
- path: app/Http/Controllers/SetupController.php
+ path: app/Http/RequestHandlers/SetupWizard.php
-
message: "#^Parameter \\#1 \\$path of method Psr\\\\Http\\\\Message\\\\UriInterface\\:\\:withPath\\(\\) expects string, string\\|false given\\.$#"