summaryrefslogtreecommitdiff
path: root/app/Http/RequestHandlers
diff options
context:
space:
mode:
authorGreg Roach <greg@subaqua.co.uk>2022-02-22 11:28:26 +0000
committerGreg Roach <greg@subaqua.co.uk>2022-02-23 10:22:28 +0000
commitb55cbc6b43247e8b2ad14af6f6d24dc6747195ff (patch)
tree7c48ed3c99e4c7887dee5e923035c862fdff92cd /app/Http/RequestHandlers
parent709c7e1a4da00208ea2ab538eb0a1f2d46f63629 (diff)
downloadwebtrees-b55cbc6b43247e8b2ad14af6f6d24dc6747195ff.tar.gz
webtrees-b55cbc6b43247e8b2ad14af6f6d24dc6747195ff.tar.bz2
webtrees-b55cbc6b43247e8b2ad14af6f6d24dc6747195ff.zip
Update and use Validation class
Diffstat (limited to 'app/Http/RequestHandlers')
-rw-r--r--app/Http/RequestHandlers/AbstractTomSelectHandler.php11
-rw-r--r--app/Http/RequestHandlers/AccountDelete.php5
-rw-r--r--app/Http/RequestHandlers/AccountEdit.php8
-rw-r--r--app/Http/RequestHandlers/AccountUpdate.php5
-rw-r--r--app/Http/RequestHandlers/AddChildToFamilyAction.php15
-rw-r--r--app/Http/RequestHandlers/AddChildToFamilyPage.php15
-rw-r--r--app/Http/RequestHandlers/AddChildToIndividualAction.php16
-rw-r--r--app/Http/RequestHandlers/AddChildToIndividualPage.php14
-rw-r--r--app/Http/RequestHandlers/AddMediaFileAction.php17
-rw-r--r--app/Http/RequestHandlers/AddMediaFileModal.php9
-rw-r--r--app/Http/RequestHandlers/AddNewFact.php11
-rw-r--r--app/Http/RequestHandlers/AddParentToIndividualAction.php18
-rw-r--r--app/Http/RequestHandlers/AddParentToIndividualPage.php18
-rw-r--r--app/Http/RequestHandlers/AddSpouseToFamilyAction.php14
-rw-r--r--app/Http/RequestHandlers/AddSpouseToFamilyPage.php16
-rw-r--r--app/Http/RequestHandlers/AddSpouseToIndividualAction.php18
-rw-r--r--app/Http/RequestHandlers/AddSpouseToIndividualPage.php14
-rw-r--r--app/Http/RequestHandlers/AddUnlinkedAction.php9
-rw-r--r--app/Http/RequestHandlers/AddUnlinkedPage.php7
-rw-r--r--app/Http/RequestHandlers/AdminMediaFileDownload.php4
-rw-r--r--app/Http/RequestHandlers/AutoCompleteCitation.php7
-rw-r--r--app/Http/RequestHandlers/AutoCompleteFolder.php7
-rw-r--r--app/Http/RequestHandlers/AutoCompletePlace.php7
-rw-r--r--app/Http/RequestHandlers/AutoCompleteSurname.php7
-rw-r--r--app/Http/RequestHandlers/BroadcastAction.php5
-rw-r--r--app/Http/RequestHandlers/BroadcastPage.php3
-rw-r--r--app/Http/RequestHandlers/CalendarAction.php9
-rw-r--r--app/Http/RequestHandlers/CalendarEvents.php8
-rw-r--r--app/Http/RequestHandlers/CalendarPage.php9
-rw-r--r--app/Http/RequestHandlers/ChangeFamilyMembersAction.php6
-rw-r--r--app/Http/RequestHandlers/ChangeFamilyMembersPage.php8
-rw-r--r--app/Http/RequestHandlers/CheckTree.php5
-rw-r--r--app/Http/RequestHandlers/CleanDataFolder.php5
-rw-r--r--app/Http/RequestHandlers/ContactAction.php21
-rw-r--r--app/Http/RequestHandlers/ContactPage.php7
-rw-r--r--app/Http/RequestHandlers/CopyFact.php14
-rw-r--r--app/Http/RequestHandlers/CreateLocationAction.php7
-rw-r--r--app/Http/RequestHandlers/CreateLocationModal.php6
-rw-r--r--app/Http/RequestHandlers/CreateMediaObjectAction.php7
-rw-r--r--app/Http/RequestHandlers/CreateMediaObjectFromFile.php8
-rw-r--r--app/Http/RequestHandlers/CreateMediaObjectModal.php8
-rw-r--r--app/Http/RequestHandlers/CreateNoteAction.php8
-rw-r--r--app/Http/RequestHandlers/CreateNoteModal.php6
-rw-r--r--app/Http/RequestHandlers/CreateRepositoryAction.php15
-rw-r--r--app/Http/RequestHandlers/CreateRepositoryModal.php6
-rw-r--r--app/Http/RequestHandlers/CreateSourceAction.php7
-rw-r--r--app/Http/RequestHandlers/CreateSourceModal.php6
-rw-r--r--app/Http/RequestHandlers/CreateSubmissionAction.php8
-rw-r--r--app/Http/RequestHandlers/CreateSubmissionModal.php7
-rw-r--r--app/Http/RequestHandlers/CreateSubmitterAction.php8
-rw-r--r--app/Http/RequestHandlers/CreateSubmitterModal.php7
-rw-r--r--app/Http/RequestHandlers/DataFixChoose.php6
-rw-r--r--app/Http/RequestHandlers/DataFixData.php8
-rw-r--r--app/Http/RequestHandlers/DataFixPage.php8
-rw-r--r--app/Http/RequestHandlers/DataFixPreview.php8
-rw-r--r--app/Http/RequestHandlers/DataFixSelect.php7
-rw-r--r--app/Http/RequestHandlers/DataFixUpdate.php8
-rw-r--r--app/Http/RequestHandlers/DataFixUpdateAll.php7
-rw-r--r--app/Http/RequestHandlers/DeleteFact.php14
-rw-r--r--app/Http/RequestHandlers/DeleteRecord.php12
-rw-r--r--app/Http/RequestHandlers/DeleteTreeAction.php6
-rw-r--r--app/Http/RequestHandlers/EditFactAction.php16
-rw-r--r--app/Http/RequestHandlers/EditFactPage.php14
-rw-r--r--app/Http/RequestHandlers/EditMediaFileAction.php14
-rw-r--r--app/Http/RequestHandlers/EditMediaFileModal.php14
-rw-r--r--app/Http/RequestHandlers/EditNoteAction.php16
-rw-r--r--app/Http/RequestHandlers/EditNotePage.php11
-rw-r--r--app/Http/RequestHandlers/EditRawFactAction.php29
-rw-r--r--app/Http/RequestHandlers/EditRawFactPage.php22
-rw-r--r--app/Http/RequestHandlers/EditRawRecordAction.php11
-rw-r--r--app/Http/RequestHandlers/EditRawRecordPage.php10
-rw-r--r--app/Http/RequestHandlers/EditRecordAction.php17
-rw-r--r--app/Http/RequestHandlers/EditRecordPage.php12
-rw-r--r--app/Http/RequestHandlers/EmailPreferencesAction.php6
-rw-r--r--app/Http/RequestHandlers/EmptyClipboard.php4
-rw-r--r--app/Http/RequestHandlers/ExportGedcomClient.php15
-rw-r--r--app/Http/RequestHandlers/ExportGedcomPage.php7
-rw-r--r--app/Http/RequestHandlers/ExportGedcomServer.php6
-rw-r--r--app/Http/RequestHandlers/FamilyPage.php17
-rw-r--r--app/Http/RequestHandlers/FindDuplicateRecords.php6
-rw-r--r--app/Http/RequestHandlers/GedcomLoad.php6
-rw-r--r--app/Http/RequestHandlers/GedcomRecordPage.php12
-rw-r--r--app/Http/RequestHandlers/HeaderPage.php15
-rw-r--r--app/Http/RequestHandlers/HomePage.php3
-rw-r--r--app/Http/RequestHandlers/ImportGedcomAction.php6
-rw-r--r--app/Http/RequestHandlers/ImportGedcomPage.php6
-rw-r--r--app/Http/RequestHandlers/IndividualPage.php15
-rw-r--r--app/Http/RequestHandlers/LinkChildToFamilyAction.php10
-rw-r--r--app/Http/RequestHandlers/LinkChildToFamilyPage.php16
-rw-r--r--app/Http/RequestHandlers/LinkMediaToFamilyModal.php10
-rw-r--r--app/Http/RequestHandlers/LinkMediaToIndividualModal.php10
-rw-r--r--app/Http/RequestHandlers/LinkMediaToRecordAction.php10
-rw-r--r--app/Http/RequestHandlers/LinkMediaToSourceModal.php10
-rw-r--r--app/Http/RequestHandlers/LinkSpouseToIndividualAction.php10
-rw-r--r--app/Http/RequestHandlers/LinkSpouseToIndividualPage.php10
-rw-r--r--app/Http/RequestHandlers/LocationPage.php15
-rw-r--r--app/Http/RequestHandlers/LoginAction.php10
-rw-r--r--app/Http/RequestHandlers/LoginPage.php5
-rw-r--r--app/Http/RequestHandlers/Logout.php3
-rw-r--r--app/Http/RequestHandlers/ManageTrees.php3
-rw-r--r--app/Http/RequestHandlers/Masquerade.php5
-rw-r--r--app/Http/RequestHandlers/MediaFileDownload.php10
-rw-r--r--app/Http/RequestHandlers/MediaFileThumbnail.php11
-rw-r--r--app/Http/RequestHandlers/MediaPage.php15
-rw-r--r--app/Http/RequestHandlers/MergeFactsAction.php6
-rw-r--r--app/Http/RequestHandlers/MergeFactsPage.php6
-rw-r--r--app/Http/RequestHandlers/MergeRecordsAction.php6
-rw-r--r--app/Http/RequestHandlers/MergeRecordsPage.php7
-rw-r--r--app/Http/RequestHandlers/MessageAction.php14
-rw-r--r--app/Http/RequestHandlers/MessagePage.php9
-rw-r--r--app/Http/RequestHandlers/MessageSelect.php6
-rw-r--r--app/Http/RequestHandlers/ModuleAction.php4
-rw-r--r--app/Http/RequestHandlers/NotePage.php15
-rw-r--r--app/Http/RequestHandlers/PasswordRequestAction.php3
-rw-r--r--app/Http/RequestHandlers/PasswordRequestPage.php5
-rw-r--r--app/Http/RequestHandlers/PasswordResetAction.php3
-rw-r--r--app/Http/RequestHandlers/PasswordResetPage.php3
-rw-r--r--app/Http/RequestHandlers/PasteFact.php13
-rw-r--r--app/Http/RequestHandlers/PendingChanges.php6
-rw-r--r--app/Http/RequestHandlers/PendingChangesAcceptChange.php10
-rw-r--r--app/Http/RequestHandlers/PendingChangesAcceptRecord.php9
-rw-r--r--app/Http/RequestHandlers/PendingChangesAcceptTree.php6
-rw-r--r--app/Http/RequestHandlers/PendingChangesLogData.php6
-rw-r--r--app/Http/RequestHandlers/PendingChangesLogDelete.php7
-rw-r--r--app/Http/RequestHandlers/PendingChangesLogDownload.php7
-rw-r--r--app/Http/RequestHandlers/PendingChangesLogPage.php8
-rw-r--r--app/Http/RequestHandlers/PendingChangesRejectChange.php10
-rw-r--r--app/Http/RequestHandlers/PendingChangesRejectRecord.php9
-rw-r--r--app/Http/RequestHandlers/PendingChangesRejectTree.php6
-rw-r--r--app/Http/RequestHandlers/RedirectDescendencyPhp.php1
-rw-r--r--app/Http/RequestHandlers/RedirectFamilyPhp.php4
-rw-r--r--app/Http/RequestHandlers/RedirectGedRecordPhp.php4
-rw-r--r--app/Http/RequestHandlers/RedirectIndividualPhp.php4
-rw-r--r--app/Http/RequestHandlers/RedirectMediaViewerPhp.php4
-rw-r--r--app/Http/RequestHandlers/RedirectModulePhp.php1
-rw-r--r--app/Http/RequestHandlers/RedirectNotePhp.php4
-rw-r--r--app/Http/RequestHandlers/RedirectRelationshipPhp.php1
-rw-r--r--app/Http/RequestHandlers/RedirectRepositoryPhp.php4
-rw-r--r--app/Http/RequestHandlers/RedirectSourcePhp.php4
-rw-r--r--app/Http/RequestHandlers/RegisterAction.php7
-rw-r--r--app/Http/RequestHandlers/RegisterPage.php3
-rw-r--r--app/Http/RequestHandlers/RenumberTreeAction.php7
-rw-r--r--app/Http/RequestHandlers/RenumberTreePage.php7
-rw-r--r--app/Http/RequestHandlers/ReorderChildrenAction.php10
-rw-r--r--app/Http/RequestHandlers/ReorderChildrenPage.php10
-rw-r--r--app/Http/RequestHandlers/ReorderFamiliesAction.php10
-rw-r--r--app/Http/RequestHandlers/ReorderFamiliesPage.php13
-rw-r--r--app/Http/RequestHandlers/ReorderMediaAction.php14
-rw-r--r--app/Http/RequestHandlers/ReorderMediaPage.php16
-rw-r--r--app/Http/RequestHandlers/ReorderNamesAction.php10
-rw-r--r--app/Http/RequestHandlers/ReorderNamesPage.php16
-rw-r--r--app/Http/RequestHandlers/ReportGenerate.php13
-rw-r--r--app/Http/RequestHandlers/ReportListAction.php11
-rw-r--r--app/Http/RequestHandlers/ReportListPage.php12
-rw-r--r--app/Http/RequestHandlers/ReportSetupAction.php13
-rw-r--r--app/Http/RequestHandlers/ReportSetupPage.php13
-rw-r--r--app/Http/RequestHandlers/RepositoryPage.php17
-rw-r--r--app/Http/RequestHandlers/RobotsTxt.php3
-rw-r--r--app/Http/RequestHandlers/SearchAdvancedAction.php11
-rw-r--r--app/Http/RequestHandlers/SearchAdvancedPage.php6
-rw-r--r--app/Http/RequestHandlers/SearchGeneralAction.php7
-rw-r--r--app/Http/RequestHandlers/SearchGeneralPage.php5
-rw-r--r--app/Http/RequestHandlers/SearchPhoneticAction.php7
-rw-r--r--app/Http/RequestHandlers/SearchPhoneticPage.php6
-rw-r--r--app/Http/RequestHandlers/SearchQuickAction.php6
-rw-r--r--app/Http/RequestHandlers/SearchReplaceAction.php8
-rw-r--r--app/Http/RequestHandlers/SearchReplacePage.php11
-rw-r--r--app/Http/RequestHandlers/SelectDefaultTree.php6
-rw-r--r--app/Http/RequestHandlers/SelectLanguage.php4
-rw-r--r--app/Http/RequestHandlers/SelectNewFact.php10
-rw-r--r--app/Http/RequestHandlers/SelectTheme.php4
-rw-r--r--app/Http/RequestHandlers/SetupWizard.php8
-rw-r--r--app/Http/RequestHandlers/SourcePage.php17
-rw-r--r--app/Http/RequestHandlers/SubmissionPage.php15
-rw-r--r--app/Http/RequestHandlers/SubmitterPage.php17
-rw-r--r--app/Http/RequestHandlers/SynchronizeTrees.php7
-rw-r--r--app/Http/RequestHandlers/TreePage.php11
-rw-r--r--app/Http/RequestHandlers/TreePageBlock.php7
-rw-r--r--app/Http/RequestHandlers/TreePageBlockEdit.php13
-rw-r--r--app/Http/RequestHandlers/TreePageBlockUpdate.php10
-rw-r--r--app/Http/RequestHandlers/TreePageEdit.php11
-rw-r--r--app/Http/RequestHandlers/TreePageUpdate.php10
-rw-r--r--app/Http/RequestHandlers/TreePreferencesAction.php7
-rw-r--r--app/Http/RequestHandlers/TreePreferencesPage.php9
-rw-r--r--app/Http/RequestHandlers/TreePrivacyAction.php7
-rw-r--r--app/Http/RequestHandlers/TreePrivacyPage.php6
-rw-r--r--app/Http/RequestHandlers/UnconnectedAction.php7
-rw-r--r--app/Http/RequestHandlers/UnconnectedPage.php12
-rw-r--r--app/Http/RequestHandlers/UserEditAction.php5
-rw-r--r--app/Http/RequestHandlers/UserListData.php3
-rw-r--r--app/Http/RequestHandlers/UserListPage.php3
-rw-r--r--app/Http/RequestHandlers/UserPage.php12
-rw-r--r--app/Http/RequestHandlers/UserPageBlock.php9
-rw-r--r--app/Http/RequestHandlers/UserPageBlockEdit.php15
-rw-r--r--app/Http/RequestHandlers/UserPageBlockUpdate.php13
-rw-r--r--app/Http/RequestHandlers/UserPageEdit.php13
-rw-r--r--app/Http/RequestHandlers/UserPageUpdate.php10
-rw-r--r--app/Http/RequestHandlers/VerifyEmail.php5
198 files changed, 599 insertions, 1217 deletions
diff --git a/app/Http/RequestHandlers/AbstractTomSelectHandler.php b/app/Http/RequestHandlers/AbstractTomSelectHandler.php
index 7411ef7e54..e37cfbd25f 100644
--- a/app/Http/RequestHandlers/AbstractTomSelectHandler.php
+++ b/app/Http/RequestHandlers/AbstractTomSelectHandler.php
@@ -26,9 +26,7 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
-use function strlen;
/**
* Autocomplete for TomSelect based controls.
@@ -45,12 +43,11 @@ abstract class AbstractTomSelectHandler implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
- $at = Validator::queryParams($request)->requiredString('at');
- $page = Validator::queryParams($request)->integer('page') ?? 1;
- $query = Validator::queryParams($request)->requiredString('query');
+ $at = Validator::queryParams($request)->string('at');
+ $page = Validator::queryParams($request)->optionalInteger('page') ?? 1;
+ $query = Validator::queryParams($request)->string('query');
// Fetch one more row than we need, so we can know if more rows exist.
$offset = ($page - 1) * self::RESULTS_PER_PAGE;
diff --git a/app/Http/RequestHandlers/AccountDelete.php b/app/Http/RequestHandlers/AccountDelete.php
index b0b906db35..1fe1012abc 100644
--- a/app/Http/RequestHandlers/AccountDelete.php
+++ b/app/Http/RequestHandlers/AccountDelete.php
@@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -55,8 +56,8 @@ class AccountDelete implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- $user = $request->getAttribute('user');
+ $tree = Validator::attributes($request)->treeOptional();
+ $user = Validator::attributes($request)->user();
// An administrator can only be deleted by another administrator
if ($user instanceof User && $user->getPreference(UserInterface::PREF_IS_ADMINISTRATOR) !== '1') {
diff --git a/app/Http/RequestHandlers/AccountEdit.php b/app/Http/RequestHandlers/AccountEdit.php
index ae14453eaf..88122d06ee 100644
--- a/app/Http/RequestHandlers/AccountEdit.php
+++ b/app/Http/RequestHandlers/AccountEdit.php
@@ -29,7 +29,7 @@ use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\MessageService;
use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Tree;
-use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -66,10 +66,8 @@ class AccountEdit implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
-
- $user = $request->getAttribute('user');
- assert($user instanceof User);
+ $tree = Validator::attributes($request)->treeOptional();
+ $user = Validator::attributes($request)->user();
if ($tree instanceof Tree) {
$my_individual_record = Registry::individualFactory()->make($tree->getUserPreference(Auth::user(), UserInterface::PREF_TREE_ACCOUNT_XREF), $tree);
diff --git a/app/Http/RequestHandlers/AccountUpdate.php b/app/Http/RequestHandlers/AccountUpdate.php
index 19f6f0dae3..14abcf100b 100644
--- a/app/Http/RequestHandlers/AccountUpdate.php
+++ b/app/Http/RequestHandlers/AccountUpdate.php
@@ -26,6 +26,7 @@ use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\Session;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -57,9 +58,9 @@ class AccountUpdate implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
+ $user = Validator::attributes($request)->user();
- $user = $request->getAttribute('user');
assert($user instanceof User);
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/AddChildToFamilyAction.php b/app/Http/RequestHandlers/AddChildToFamilyAction.php
index 232df36526..1798c39960 100644
--- a/app/Http/RequestHandlers/AddChildToFamilyAction.php
+++ b/app/Http/RequestHandlers/AddChildToFamilyAction.php
@@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -56,17 +55,11 @@ class AddChildToFamilyAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$params = (array) $request->getParsedBody();
-
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, true);
-
$levels = $params['ilevels'] ?? [];
$tags = $params['itags'] ?? [];
$values = $params['ivalues'] ?? [];
@@ -78,8 +71,8 @@ class AddChildToFamilyAction implements RequestHandlerInterface
// Link the child to the family
$family->createFact('1 CHIL @' . $child->xref() . '@', false);
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $child->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $child->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/AddChildToFamilyPage.php b/app/Http/RequestHandlers/AddChildToFamilyPage.php
index 4715aa6623..2292eabb77 100644
--- a/app/Http/RequestHandlers/AddChildToFamilyPage.php
+++ b/app/Http/RequestHandlers/AddChildToFamilyPage.php
@@ -20,13 +20,12 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
use Fisharebest\Webtrees\SurnameTradition;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -61,15 +60,9 @@ class AddChildToFamilyPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $sex = $request->getAttribute('sex');
- assert(is_string($sex));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $sex = Validator::attributes($request)->string('sex');
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, true);
diff --git a/app/Http/RequestHandlers/AddChildToIndividualAction.php b/app/Http/RequestHandlers/AddChildToIndividualAction.php
index 70aa01557d..98ec77636d 100644
--- a/app/Http/RequestHandlers/AddChildToIndividualAction.php
+++ b/app/Http/RequestHandlers/AddChildToIndividualAction.php
@@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -56,14 +55,9 @@ class AddChildToIndividualAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $params = (array) $request->getParsedBody();
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $params = (array) $request->getParsedBody();
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
@@ -86,8 +80,8 @@ class AddChildToIndividualAction implements RequestHandlerInterface
// Link the child to the family
$child->createFact('1 FAMC @' . $family->xref() . '@', false);
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $child->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $child->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/AddChildToIndividualPage.php b/app/Http/RequestHandlers/AddChildToIndividualPage.php
index c10635e636..3669fc1d3d 100644
--- a/app/Http/RequestHandlers/AddChildToIndividualPage.php
+++ b/app/Http/RequestHandlers/AddChildToIndividualPage.php
@@ -20,20 +20,16 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
use Fisharebest\Webtrees\SurnameTradition;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function array_map;
-use function assert;
-use function is_string;
use function route;
/**
@@ -62,12 +58,8 @@ class AddChildToIndividualPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/AddMediaFileAction.php b/app/Http/RequestHandlers/AddMediaFileAction.php
index 249167ce59..31745241a1 100644
--- a/app/Http/RequestHandlers/AddMediaFileAction.php
+++ b/app/Http/RequestHandlers/AddMediaFileAction.php
@@ -25,13 +25,11 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\MediaFileService;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -64,15 +62,10 @@ class AddMediaFileAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $media = Registry::mediaFactory()->make($xref, $tree);
- $media = Auth::checkMediaAccess($media, true);
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $media = Registry::mediaFactory()->make($xref, $tree);
+ $media = Auth::checkMediaAccess($media, true);
$params = (array) $request->getParsedBody();
$title = $params['title'] ?? '';
$type = $params['type'] ?? '';
diff --git a/app/Http/RequestHandlers/AddMediaFileModal.php b/app/Http/RequestHandlers/AddMediaFileModal.php
index 65ebea621e..326b8b9de4 100644
--- a/app/Http/RequestHandlers/AddMediaFileModal.php
+++ b/app/Http/RequestHandlers/AddMediaFileModal.php
@@ -25,7 +25,7 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\MediaFileService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -61,11 +61,8 @@ class AddMediaFileModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$data_filesystem = Registry::filesystem()->data();
diff --git a/app/Http/RequestHandlers/AddNewFact.php b/app/Http/RequestHandlers/AddNewFact.php
index 80fada3c0b..0da760c588 100644
--- a/app/Http/RequestHandlers/AddNewFact.php
+++ b/app/Http/RequestHandlers/AddNewFact.php
@@ -25,12 +25,11 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpAccessDeniedException;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
use function trim;
@@ -60,11 +59,9 @@ class AddNewFact implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = (string) $request->getAttribute('xref');
- $subtag = (string) $request->getAttribute('fact');
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $subtag = Validator::attributes($request)->isTag()->string('fact');
if ($subtag === 'OBJE' && !Auth::canUploadMedia($tree, Auth::user())) {
throw new HttpAccessDeniedException();
diff --git a/app/Http/RequestHandlers/AddParentToIndividualAction.php b/app/Http/RequestHandlers/AddParentToIndividualAction.php
index 9ea0f0dd5c..ace8bebed4 100644
--- a/app/Http/RequestHandlers/AddParentToIndividualAction.php
+++ b/app/Http/RequestHandlers/AddParentToIndividualAction.php
@@ -22,14 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -56,14 +53,9 @@ class AddParentToIndividualAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $params = (array) $request->getParsedBody();
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $params = (array) $request->getParsedBody();
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
@@ -86,8 +78,8 @@ class AddParentToIndividualAction implements RequestHandlerInterface
// Link the parent to the family
$parent->createFact('1 FAMS @' . $family->xref() . '@', false);
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $parent->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $parent->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/AddParentToIndividualPage.php b/app/Http/RequestHandlers/AddParentToIndividualPage.php
index 8e4d6e8bb2..fbdc628b29 100644
--- a/app/Http/RequestHandlers/AddParentToIndividualPage.php
+++ b/app/Http/RequestHandlers/AddParentToIndividualPage.php
@@ -20,20 +20,16 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
use Fisharebest\Webtrees\SurnameTradition;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function array_map;
-use function assert;
-use function is_string;
use function route;
/**
@@ -62,15 +58,9 @@ class AddParentToIndividualPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $sex = $request->getAttribute('sex');
- assert(is_string($sex));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $sex = Validator::attributes($request)->string('sex');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/AddSpouseToFamilyAction.php b/app/Http/RequestHandlers/AddSpouseToFamilyAction.php
index f4d9a007c9..b33c8d781c 100644
--- a/app/Http/RequestHandlers/AddSpouseToFamilyAction.php
+++ b/app/Http/RequestHandlers/AddSpouseToFamilyAction.php
@@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -56,14 +55,9 @@ class AddSpouseToFamilyAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$params = (array) $request->getParsedBody();
-
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, true);
@@ -95,8 +89,8 @@ class AddSpouseToFamilyAction implements RequestHandlerInterface
// Link the spouse to the family
$family->createFact('1 ' . $link . ' @' . $spouse->xref() . '@', false);
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $spouse->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $spouse->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/AddSpouseToFamilyPage.php b/app/Http/RequestHandlers/AddSpouseToFamilyPage.php
index f1ba17b0ad..8e8a1ced7f 100644
--- a/app/Http/RequestHandlers/AddSpouseToFamilyPage.php
+++ b/app/Http/RequestHandlers/AddSpouseToFamilyPage.php
@@ -20,19 +20,17 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
use Fisharebest\Webtrees\SurnameTradition;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function array_map;
use function assert;
use function is_string;
use function route;
@@ -63,15 +61,9 @@ class AddSpouseToFamilyPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $sex = $request->getAttribute('sex');
- assert(is_string($sex));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $sex = Validator::attributes($request)->string('sex');
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, true);
diff --git a/app/Http/RequestHandlers/AddSpouseToIndividualAction.php b/app/Http/RequestHandlers/AddSpouseToIndividualAction.php
index edadd01aa1..12b4a283cf 100644
--- a/app/Http/RequestHandlers/AddSpouseToIndividualAction.php
+++ b/app/Http/RequestHandlers/AddSpouseToIndividualAction.php
@@ -22,14 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -56,14 +53,9 @@ class AddSpouseToIndividualAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $params = (array) $request->getParsedBody();
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $params = (array) $request->getParsedBody();
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
@@ -89,8 +81,8 @@ class AddSpouseToIndividualAction implements RequestHandlerInterface
// Link the spouse to the family
$spouse->createFact('1 FAMS @' . $family->xref() . '@', false);
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $spouse->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $spouse->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/AddSpouseToIndividualPage.php b/app/Http/RequestHandlers/AddSpouseToIndividualPage.php
index e822aa482b..98ec966a94 100644
--- a/app/Http/RequestHandlers/AddSpouseToIndividualPage.php
+++ b/app/Http/RequestHandlers/AddSpouseToIndividualPage.php
@@ -20,20 +20,16 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
use Fisharebest\Webtrees\SurnameTradition;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function array_map;
-use function assert;
-use function is_string;
use function route;
/**
@@ -70,12 +66,8 @@ class AddSpouseToIndividualPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/AddUnlinkedAction.php b/app/Http/RequestHandlers/AddUnlinkedAction.php
index 3212480b23..cb34f21298 100644
--- a/app/Http/RequestHandlers/AddUnlinkedAction.php
+++ b/app/Http/RequestHandlers/AddUnlinkedAction.php
@@ -20,13 +20,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
/**
@@ -53,8 +51,7 @@ class AddUnlinkedAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
@@ -66,8 +63,8 @@ class AddUnlinkedAction implements RequestHandlerInterface
$individual = $tree->createIndividual("0 @@ INDI\n" . $gedcom);
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $individual->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $individual->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/AddUnlinkedPage.php b/app/Http/RequestHandlers/AddUnlinkedPage.php
index 3ec2059827..bd02d6d5b5 100644
--- a/app/Http/RequestHandlers/AddUnlinkedPage.php
+++ b/app/Http/RequestHandlers/AddUnlinkedPage.php
@@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
/**
@@ -57,9 +56,7 @@ class AddUnlinkedPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$sex = Registry::elementFactory()->make('INDI:SEX')->default($tree);
$name = Registry::elementFactory()->make('INDI:NAME')->default($tree);
diff --git a/app/Http/RequestHandlers/AdminMediaFileDownload.php b/app/Http/RequestHandlers/AdminMediaFileDownload.php
index ca67824d81..3f81c22d61 100644
--- a/app/Http/RequestHandlers/AdminMediaFileDownload.php
+++ b/app/Http/RequestHandlers/AdminMediaFileDownload.php
@@ -20,6 +20,7 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Registry;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -39,8 +40,7 @@ class AdminMediaFileDownload implements RequestHandlerInterface
public function handle(ServerRequestInterface $request): ResponseInterface
{
$filesystem = Registry::filesystem()->data();
- $params = $request->getQueryParams();
- $path = $params['path'] ?? '';
+ $path = Validator::queryParams($request)->string('path');
return Registry::imageFactory()->fileResponse($filesystem, $path, false);
}
diff --git a/app/Http/RequestHandlers/AutoCompleteCitation.php b/app/Http/RequestHandlers/AutoCompleteCitation.php
index e0b076b05e..8c2a2969f3 100644
--- a/app/Http/RequestHandlers/AutoCompleteCitation.php
+++ b/app/Http/RequestHandlers/AutoCompleteCitation.php
@@ -22,13 +22,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
use Psr\Http\Message\ServerRequestInterface;
-use function assert;
use function preg_match_all;
use function preg_quote;
@@ -39,9 +38,7 @@ class AutoCompleteCitation extends AbstractAutocompleteHandler
{
protected function search(ServerRequestInterface $request): Collection
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$query = $request->getQueryParams()['query'] ?? '';
$xref = $request->getQueryParams()['extra'] ?? '';
$source = Registry::sourceFactory()->make($xref, $tree);
diff --git a/app/Http/RequestHandlers/AutoCompleteFolder.php b/app/Http/RequestHandlers/AutoCompleteFolder.php
index 8b10b33626..14c43df247 100644
--- a/app/Http/RequestHandlers/AutoCompleteFolder.php
+++ b/app/Http/RequestHandlers/AutoCompleteFolder.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Services\MediaFileService;
use Fisharebest\Webtrees\Services\SearchService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use League\Flysystem\FilesystemException;
use Psr\Http\Message\ServerRequestInterface;
-use function assert;
-
/**
* Autocomplete handler for media folders
*/
@@ -49,8 +47,7 @@ class AutoCompleteFolder extends AbstractAutocompleteHandler
*/
protected function search(ServerRequestInterface $request): Collection
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$query = $request->getQueryParams()['query'] ?? '';
diff --git a/app/Http/RequestHandlers/AutoCompletePlace.php b/app/Http/RequestHandlers/AutoCompletePlace.php
index 0fe25ab498..68a9ee5a75 100644
--- a/app/Http/RequestHandlers/AutoCompletePlace.php
+++ b/app/Http/RequestHandlers/AutoCompletePlace.php
@@ -23,12 +23,10 @@ use Fisharebest\Webtrees\Module\ModuleMapAutocompleteInterface;
use Fisharebest\Webtrees\Place;
use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Services\SearchService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ServerRequestInterface;
-use function assert;
-
/**
* Autocomplete handler for places
*/
@@ -54,8 +52,7 @@ class AutoCompletePlace extends AbstractAutocompleteHandler
*/
protected function search(ServerRequestInterface $request): Collection
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$query = $request->getQueryParams()['query'] ?? '';
diff --git a/app/Http/RequestHandlers/AutoCompleteSurname.php b/app/Http/RequestHandlers/AutoCompleteSurname.php
index 2f3541b15b..bba63837bc 100644
--- a/app/Http/RequestHandlers/AutoCompleteSurname.php
+++ b/app/Http/RequestHandlers/AutoCompleteSurname.php
@@ -19,12 +19,10 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ServerRequestInterface;
-use function assert;
-
/**
* Autocomplete handler for surnames
*/
@@ -37,8 +35,7 @@ class AutoCompleteSurname extends AbstractAutocompleteHandler
*/
protected function search(ServerRequestInterface $request): Collection
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$query = $request->getQueryParams()['query'] ?? '';
diff --git a/app/Http/RequestHandlers/BroadcastAction.php b/app/Http/RequestHandlers/BroadcastAction.php
index fdffd1ab2c..8a5c09ed6c 100644
--- a/app/Http/RequestHandlers/BroadcastAction.php
+++ b/app/Http/RequestHandlers/BroadcastAction.php
@@ -23,6 +23,7 @@ use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\MessageService;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -57,13 +58,13 @@ class BroadcastAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
+ $user = Validator::attributes($request)->user();
$params = (array) $request->getParsedBody();
$body = $params['body'];
$subject = $params['subject'];
$to = $params['to'];
- $ip = $request->getAttribute('client-ip');
+ $ip = Validator::attributes($request)->string('client-ip');
$to_users = $this->message_service->recipientUsers($to);
if ($body === '' || $subject === '') {
diff --git a/app/Http/RequestHandlers/BroadcastPage.php b/app/Http/RequestHandlers/BroadcastPage.php
index b84467bdf4..9de46dae2c 100644
--- a/app/Http/RequestHandlers/BroadcastPage.php
+++ b/app/Http/RequestHandlers/BroadcastPage.php
@@ -22,6 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Services\MessageService;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -52,7 +53,7 @@ class BroadcastPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
+ $user = Validator::attributes($request)->user();
$params = $request->getQueryParams();
$body = $params['body'] ?? '';
$subject = $params['subject'] ?? '';
diff --git a/app/Http/RequestHandlers/CalendarAction.php b/app/Http/RequestHandlers/CalendarAction.php
index 0b0d33f066..379055fbda 100644
--- a/app/Http/RequestHandlers/CalendarAction.php
+++ b/app/Http/RequestHandlers/CalendarAction.php
@@ -19,12 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -40,10 +39,8 @@ class CalendarAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $view = $request->getAttribute('view');
+ $tree = Validator::attributes($request)->tree();
+ $view = Validator::attributes($request)->string('view');
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/CalendarEvents.php b/app/Http/RequestHandlers/CalendarEvents.php
index 28661e8f9d..669f1ed33f 100644
--- a/app/Http/RequestHandlers/CalendarEvents.php
+++ b/app/Http/RequestHandlers/CalendarEvents.php
@@ -33,12 +33,12 @@ use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\CalendarService;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function count;
use function e;
use function explode;
@@ -75,10 +75,8 @@ class CalendarEvents implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $view = $request->getAttribute('view');
+ $tree = Validator::attributes($request)->tree();
+ $view = Validator::attributes($request)->string('view');
$CALENDAR_FORMAT = $tree->getPreference('CALENDAR_FORMAT');
$cal = $request->getQueryParams()['cal'] ?? '';
diff --git a/app/Http/RequestHandlers/CalendarPage.php b/app/Http/RequestHandlers/CalendarPage.php
index 3b7c01f4bc..c845a551ed 100644
--- a/app/Http/RequestHandlers/CalendarPage.php
+++ b/app/Http/RequestHandlers/CalendarPage.php
@@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\CalendarService;
use Fisharebest\Webtrees\Services\LocalizationService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Show anniversaries for events in a given day/month/year.
*/
@@ -63,10 +61,9 @@ class CalendarPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
- $view = $request->getAttribute('view');
+ $view = Validator::attributes($request)->string('view');
$cal = $request->getQueryParams()['cal'] ?? '';
$day = $request->getQueryParams()['day'] ?? '';
$month = $request->getQueryParams()['month'] ?? '';
diff --git a/app/Http/RequestHandlers/ChangeFamilyMembersAction.php b/app/Http/RequestHandlers/ChangeFamilyMembersAction.php
index 68fac3ff62..0a6b334482 100644
--- a/app/Http/RequestHandlers/ChangeFamilyMembersAction.php
+++ b/app/Http/RequestHandlers/ChangeFamilyMembersAction.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function in_array;
use function redirect;
@@ -43,8 +42,7 @@ class ChangeFamilyMembersAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/ChangeFamilyMembersPage.php b/app/Http/RequestHandlers/ChangeFamilyMembersPage.php
index 0463c2d67e..c41eab84f4 100644
--- a/app/Http/RequestHandlers/ChangeFamilyMembersPage.php
+++ b/app/Http/RequestHandlers/ChangeFamilyMembersPage.php
@@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Change the members of a family.
*/
@@ -44,9 +42,7 @@ class ChangeFamilyMembersPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$xref = $request->getQueryParams()['xref'];
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, true);
diff --git a/app/Http/RequestHandlers/CheckTree.php b/app/Http/RequestHandlers/CheckTree.php
index ea5fa515f6..8ccb1a7766 100644
--- a/app/Http/RequestHandlers/CheckTree.php
+++ b/app/Http/RequestHandlers/CheckTree.php
@@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Header;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Expression;
use Psr\Http\Message\ResponseInterface;
@@ -31,7 +32,6 @@ use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function array_key_exists;
-use function assert;
use function e;
use function in_array;
use function preg_match;
@@ -57,8 +57,7 @@ class CheckTree implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
// We need to work with raw GEDCOM data, as we are looking for errors
// which may prevent the GedcomRecord objects from working.
diff --git a/app/Http/RequestHandlers/CleanDataFolder.php b/app/Http/RequestHandlers/CleanDataFolder.php
index 9e09f12e56..058c443313 100644
--- a/app/Http/RequestHandlers/CleanDataFolder.php
+++ b/app/Http/RequestHandlers/CleanDataFolder.php
@@ -23,6 +23,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\TreeService;
+use Fisharebest\Webtrees\Validator;
use League\Flysystem\FilesystemException;
use League\Flysystem\FilesystemReader;
use League\Flysystem\StorageAttributes;
@@ -69,8 +70,8 @@ class CleanDataFolder implements RequestHandlerInterface
'config.ini.php',
];
- if ($request->getAttribute('dbtype') === 'sqlite') {
- $protected[] = $request->getAttribute('dbname') . '.sqlite';
+ if (Validator::attributes($request)->string('dbtype') === 'sqlite') {
+ $protected[] = Validator::attributes($request)->string('dbname') . '.sqlite';
}
// Protect the media folders
diff --git a/app/Http/RequestHandlers/ContactAction.php b/app/Http/RequestHandlers/ContactAction.php
index 2364751031..0460f4a551 100644
--- a/app/Http/RequestHandlers/ContactAction.php
+++ b/app/Http/RequestHandlers/ContactAction.php
@@ -30,13 +30,11 @@ use Fisharebest\Webtrees\Services\EmailService;
use Fisharebest\Webtrees\Services\MessageService;
use Fisharebest\Webtrees\Services\RateLimitService;
use Fisharebest\Webtrees\Services\UserService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function in_array;
use function preg_match;
@@ -91,17 +89,16 @@ class ContactAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
- $base_url = $request->getAttribute('base_url');
- $body = Validator::parsedBody($request)->string('body') ?? '';
- $from_email = Validator::parsedBody($request)->string('from_email') ?? '';
- $from_name = Validator::parsedBody($request)->string('from_name') ?? '';
- $subject = Validator::parsedBody($request)->string('subject') ?? '';
- $to = Validator::parsedBody($request)->string('to') ?? '';
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $base_url;
- $ip = $request->getAttribute('client-ip');
+ $base_url = Validator::attributes($request)->string('base_url');
+ $body = Validator::parsedBody($request)->optionalString('body') ?? '';
+ $from_email = Validator::parsedBody($request)->optionalString('from_email') ?? '';
+ $from_name = Validator::parsedBody($request)->optionalString('from_name') ?? '';
+ $subject = Validator::parsedBody($request)->optionalString('subject') ?? '';
+ $to = Validator::parsedBody($request)->optionalString('to') ?? '';
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $base_url;
+ $ip = Validator::attributes($request)->string('client-ip');
$to_user = $this->user_service->findByUserName($to);
if ($to_user === null) {
diff --git a/app/Http/RequestHandlers/ContactPage.php b/app/Http/RequestHandlers/ContactPage.php
index db371779c8..44fbbf0c46 100644
--- a/app/Http/RequestHandlers/ContactPage.php
+++ b/app/Http/RequestHandlers/ContactPage.php
@@ -25,12 +25,11 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\CaptchaService;
use Fisharebest\Webtrees\Services\MessageService;
use Fisharebest\Webtrees\Services\UserService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function in_array;
use function route;
@@ -71,9 +70,7 @@ class ContactPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = $request->getQueryParams();
$body = $params['body'] ?? '';
$from_email = $params['from_email'] ?? '';
diff --git a/app/Http/RequestHandlers/CopyFact.php b/app/Http/RequestHandlers/CopyFact.php
index fbc01219b5..a788cf8383 100644
--- a/app/Http/RequestHandlers/CopyFact.php
+++ b/app/Http/RequestHandlers/CopyFact.php
@@ -24,13 +24,11 @@ use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function response;
/**
@@ -59,13 +57,9 @@ class CopyFact implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $fact_id = $request->getAttribute('fact_id');
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $fact_id = Validator::attributes($request)->string('fact_id');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
diff --git a/app/Http/RequestHandlers/CreateLocationAction.php b/app/Http/RequestHandlers/CreateLocationAction.php
index 95c93703eb..06068050df 100644
--- a/app/Http/RequestHandlers/CreateLocationAction.php
+++ b/app/Http/RequestHandlers/CreateLocationAction.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Process a form to create a new location.
*/
@@ -40,8 +38,7 @@ class CreateLocationAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$name = $params['location_name'];
diff --git a/app/Http/RequestHandlers/CreateLocationModal.php b/app/Http/RequestHandlers/CreateLocationModal.php
index 8fbf673e43..7afbaddcf5 100644
--- a/app/Http/RequestHandlers/CreateLocationModal.php
+++ b/app/Http/RequestHandlers/CreateLocationModal.php
@@ -19,12 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
use function view;
@@ -40,8 +39,7 @@ class CreateLocationModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
return response(view('modals/create-location', [
'tree' => $tree,
diff --git a/app/Http/RequestHandlers/CreateMediaObjectAction.php b/app/Http/RequestHandlers/CreateMediaObjectAction.php
index 3541795d6a..d2f5674ee8 100644
--- a/app/Http/RequestHandlers/CreateMediaObjectAction.php
+++ b/app/Http/RequestHandlers/CreateMediaObjectAction.php
@@ -24,12 +24,11 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\MediaFileService;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function in_array;
use function response;
@@ -63,9 +62,7 @@ class CreateMediaObjectAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$note = $params['media-note'] ?? '';
$title = $params['title'] ?? '';
diff --git a/app/Http/RequestHandlers/CreateMediaObjectFromFile.php b/app/Http/RequestHandlers/CreateMediaObjectFromFile.php
index b6db5cedcc..6b39c0a857 100644
--- a/app/Http/RequestHandlers/CreateMediaObjectFromFile.php
+++ b/app/Http/RequestHandlers/CreateMediaObjectFromFile.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Services\MediaFileService;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Create a new media object.
*/
@@ -56,9 +54,7 @@ class CreateMediaObjectFromFile implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$file = $params['file'] ?? '';
$type = $params['type'] ?? '';
diff --git a/app/Http/RequestHandlers/CreateMediaObjectModal.php b/app/Http/RequestHandlers/CreateMediaObjectModal.php
index abfe4d29f9..d4214ee873 100644
--- a/app/Http/RequestHandlers/CreateMediaObjectModal.php
+++ b/app/Http/RequestHandlers/CreateMediaObjectModal.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\MediaFileService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Show a form to create a new media object.
*/
@@ -52,9 +50,7 @@ class CreateMediaObjectModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$max_upload_size = $this->media_file_service->maxUploadFilesize();
$media_types = Registry::elementFactory()->make('OBJE:FILE:FORM:TYPE')->values();
$data_filesystem = Registry::filesystem()->data();
diff --git a/app/Http/RequestHandlers/CreateNoteAction.php b/app/Http/RequestHandlers/CreateNoteAction.php
index 6bba935ff8..e40cbd2436 100644
--- a/app/Http/RequestHandlers/CreateNoteAction.php
+++ b/app/Http/RequestHandlers/CreateNoteAction.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Process a form to create a new note object.
*/
@@ -40,9 +38,7 @@ class CreateNoteAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$note = $params['note'];
$restriction = $params['restriction'];
diff --git a/app/Http/RequestHandlers/CreateNoteModal.php b/app/Http/RequestHandlers/CreateNoteModal.php
index e37b27bbaa..0da3977a4b 100644
--- a/app/Http/RequestHandlers/CreateNoteModal.php
+++ b/app/Http/RequestHandlers/CreateNoteModal.php
@@ -19,12 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
use function view;
@@ -42,8 +41,7 @@ class CreateNoteModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
return response(view('modals/create-note-object', [
'tree' => $tree,
diff --git a/app/Http/RequestHandlers/CreateRepositoryAction.php b/app/Http/RequestHandlers/CreateRepositoryAction.php
index 899d77525a..4b1e57af45 100644
--- a/app/Http/RequestHandlers/CreateRepositoryAction.php
+++ b/app/Http/RequestHandlers/CreateRepositoryAction.php
@@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function in_array;
use function preg_replace;
use function response;
@@ -45,13 +44,11 @@ class CreateRepositoryAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $params = (array) $request->getParsedBody();
- $name = $params['name'];
- $address = $params['address'];
- $url = $params['url'];
+ $tree = Validator::attributes($request)->tree();
+ $params = (array) $request->getParsedBody();
+ $name = $params['name'];
+ $address = $params['address'];
+ $url = $params['url'];
$restriction = $params['restriction'];
// Fix non-printing characters
diff --git a/app/Http/RequestHandlers/CreateRepositoryModal.php b/app/Http/RequestHandlers/CreateRepositoryModal.php
index 07add2baf3..d283a1b9bd 100644
--- a/app/Http/RequestHandlers/CreateRepositoryModal.php
+++ b/app/Http/RequestHandlers/CreateRepositoryModal.php
@@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Elements\AddressLine;
use Fisharebest\Webtrees\Elements\AddressWebPage;
use Fisharebest\Webtrees\Elements\NameOfRepository;
use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
use function view;
@@ -44,8 +43,7 @@ class CreateRepositoryModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$elements = [
'name' => new NameOfRepository(I18N::translateContext('Repository', 'Name')),
diff --git a/app/Http/RequestHandlers/CreateSourceAction.php b/app/Http/RequestHandlers/CreateSourceAction.php
index c4ff922fc0..d5c6065986 100644
--- a/app/Http/RequestHandlers/CreateSourceAction.php
+++ b/app/Http/RequestHandlers/CreateSourceAction.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Process a form to create a new source.
*/
@@ -40,8 +38,7 @@ class CreateSourceAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$title = $params['source-title'];
diff --git a/app/Http/RequestHandlers/CreateSourceModal.php b/app/Http/RequestHandlers/CreateSourceModal.php
index 7a316e65be..3d6a90b9e5 100644
--- a/app/Http/RequestHandlers/CreateSourceModal.php
+++ b/app/Http/RequestHandlers/CreateSourceModal.php
@@ -19,12 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
use function view;
@@ -40,8 +39,7 @@ class CreateSourceModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
return response(view('modals/create-source', [
'tree' => $tree,
diff --git a/app/Http/RequestHandlers/CreateSubmissionAction.php b/app/Http/RequestHandlers/CreateSubmissionAction.php
index a9d538221b..c7753ed7d5 100644
--- a/app/Http/RequestHandlers/CreateSubmissionAction.php
+++ b/app/Http/RequestHandlers/CreateSubmissionAction.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Process a form to create a new submission.
*/
@@ -40,9 +38,7 @@ class CreateSubmissionAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$submitter = $params['submitter'];
diff --git a/app/Http/RequestHandlers/CreateSubmissionModal.php b/app/Http/RequestHandlers/CreateSubmissionModal.php
index 65bb713514..8d1bfebc85 100644
--- a/app/Http/RequestHandlers/CreateSubmissionModal.php
+++ b/app/Http/RequestHandlers/CreateSubmissionModal.php
@@ -19,13 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Show a form to create a new submission.
*/
@@ -38,8 +36,7 @@ class CreateSubmissionModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
return response(view('modals/create-submission', [
'tree' => $tree,
diff --git a/app/Http/RequestHandlers/CreateSubmitterAction.php b/app/Http/RequestHandlers/CreateSubmitterAction.php
index 89958b4e14..2615236ba8 100644
--- a/app/Http/RequestHandlers/CreateSubmitterAction.php
+++ b/app/Http/RequestHandlers/CreateSubmitterAction.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Process a form to create a new submitter.
*/
@@ -40,9 +38,7 @@ class CreateSubmitterAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$name = $params['submitter_name'];
$address = $params['submitter_address'];
diff --git a/app/Http/RequestHandlers/CreateSubmitterModal.php b/app/Http/RequestHandlers/CreateSubmitterModal.php
index 0b7a13daeb..1c32d35165 100644
--- a/app/Http/RequestHandlers/CreateSubmitterModal.php
+++ b/app/Http/RequestHandlers/CreateSubmitterModal.php
@@ -19,13 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Show a form to create a new submitter.
*/
@@ -38,8 +36,7 @@ class CreateSubmitterModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
return response(view('modals/create-submitter', [
'tree' => $tree,
diff --git a/app/Http/RequestHandlers/DataFixChoose.php b/app/Http/RequestHandlers/DataFixChoose.php
index ef7e84f283..4c3b93a40d 100644
--- a/app/Http/RequestHandlers/DataFixChoose.php
+++ b/app/Http/RequestHandlers/DataFixChoose.php
@@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleDataFixInterface;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
/**
@@ -57,8 +56,7 @@ class DataFixChoose implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$data_fixes = $this->module_service->findByInterface(ModuleDataFixInterface::class, false, true);
diff --git a/app/Http/RequestHandlers/DataFixData.php b/app/Http/RequestHandlers/DataFixData.php
index d9c0afcbdb..04b68a5686 100644
--- a/app/Http/RequestHandlers/DataFixData.php
+++ b/app/Http/RequestHandlers/DataFixData.php
@@ -25,7 +25,7 @@ use Fisharebest\Webtrees\Module\ModuleDataFixInterface;
use Fisharebest\Webtrees\Services\DataFixService;
use Fisharebest\Webtrees\Services\DatatablesService;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -70,10 +70,8 @@ class DataFixData implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $data_fix = $request->getAttribute('data_fix') ?? '';
+ $tree = Validator::attributes($request)->tree();
+ $data_fix = Validator::attributes($request)->string('data_fix', '');
$module = $this->module_service->findByName($data_fix);
assert($module instanceof ModuleDataFixInterface);
diff --git a/app/Http/RequestHandlers/DataFixPage.php b/app/Http/RequestHandlers/DataFixPage.php
index c79c7750a4..a91cbc6447 100644
--- a/app/Http/RequestHandlers/DataFixPage.php
+++ b/app/Http/RequestHandlers/DataFixPage.php
@@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleDataFixInterface;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function redirect;
use function route;
@@ -59,8 +58,7 @@ class DataFixPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$data_fixes = $this->module_service->findByInterface(ModuleDataFixInterface::class, false, true);
@@ -68,7 +66,7 @@ class DataFixPage implements RequestHandlerInterface
return redirect(route('control-panel'));
}
- $data_fix = $request->getAttribute('data_fix') ?? '';
+ $data_fix = Validator::attributes($request)->string('data_fix', '');
$module = $this->module_service->findByName($data_fix);
$this->layout = 'layouts/administration';
diff --git a/app/Http/RequestHandlers/DataFixPreview.php b/app/Http/RequestHandlers/DataFixPreview.php
index 5bcd235c1b..8fb919a4be 100644
--- a/app/Http/RequestHandlers/DataFixPreview.php
+++ b/app/Http/RequestHandlers/DataFixPreview.php
@@ -25,7 +25,7 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleDataFixInterface;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -58,10 +58,8 @@ class DataFixPreview implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $data_fix = $request->getAttribute('data_fix', '');
+ $tree = Validator::attributes($request)->tree();
+ $data_fix = Validator::attributes($request)->string('data_fix', '');
$module = $this->module_service->findByName($data_fix);
assert($module instanceof ModuleDataFixInterface);
diff --git a/app/Http/RequestHandlers/DataFixSelect.php b/app/Http/RequestHandlers/DataFixSelect.php
index 89f75f8dc4..62052e9417 100644
--- a/app/Http/RequestHandlers/DataFixSelect.php
+++ b/app/Http/RequestHandlers/DataFixSelect.php
@@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Module\ModuleDataFixInterface;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -54,9 +53,7 @@ class DataFixSelect implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$data_fixes = $this->module_service->findByInterface(ModuleDataFixInterface::class);
$data_fix = $request->getParsedBody()['data_fix'] ?? '';
diff --git a/app/Http/RequestHandlers/DataFixUpdate.php b/app/Http/RequestHandlers/DataFixUpdate.php
index 131e7ed84b..ef1ff857c8 100644
--- a/app/Http/RequestHandlers/DataFixUpdate.php
+++ b/app/Http/RequestHandlers/DataFixUpdate.php
@@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Module\ModuleDataFixInterface;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -55,10 +55,8 @@ class DataFixUpdate implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $data_fix = $request->getAttribute('data_fix', '');
+ $tree = Validator::attributes($request)->tree();
+ $data_fix = Validator::attributes($request)->string('data_fix', '');
$module = $this->module_service->findByName($data_fix);
assert($module instanceof ModuleDataFixInterface);
diff --git a/app/Http/RequestHandlers/DataFixUpdateAll.php b/app/Http/RequestHandlers/DataFixUpdateAll.php
index 165ce2f8cd..ac865d1a50 100644
--- a/app/Http/RequestHandlers/DataFixUpdateAll.php
+++ b/app/Http/RequestHandlers/DataFixUpdateAll.php
@@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Module\ModuleDataFixInterface;
use Fisharebest\Webtrees\Services\DataFixService;
use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -69,10 +70,8 @@ class DataFixUpdateAll implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $data_fix = $request->getAttribute('data_fix', '');
+ $tree = Validator::attributes($request)->tree();
+ $data_fix = Validator::attributes($request)->string('data_fix', '');
$module = $this->module_service->findByName($data_fix);
assert($module instanceof ModuleDataFixInterface);
diff --git a/app/Http/RequestHandlers/DeleteFact.php b/app/Http/RequestHandlers/DeleteFact.php
index 8c76ed96fe..f0708f1e5c 100644
--- a/app/Http/RequestHandlers/DeleteFact.php
+++ b/app/Http/RequestHandlers/DeleteFact.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function response;
/**
@@ -44,13 +42,9 @@ class DeleteFact implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $fact_id = $request->getAttribute('fact_id');
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $fact_id = Validator::attributes($request)->string('fact_id');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
diff --git a/app/Http/RequestHandlers/DeleteRecord.php b/app/Http/RequestHandlers/DeleteRecord.php
index 10c57d1831..1eda700238 100644
--- a/app/Http/RequestHandlers/DeleteRecord.php
+++ b/app/Http/RequestHandlers/DeleteRecord.php
@@ -26,14 +26,12 @@ use Fisharebest\Webtrees\Gedcom;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
-use function is_string;
use function preg_match_all;
use function preg_replace;
use function response;
@@ -53,12 +51,8 @@ class DeleteRecord implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
diff --git a/app/Http/RequestHandlers/DeleteTreeAction.php b/app/Http/RequestHandlers/DeleteTreeAction.php
index 596c1d898d..036c1dcfbe 100644
--- a/app/Http/RequestHandlers/DeleteTreeAction.php
+++ b/app/Http/RequestHandlers/DeleteTreeAction.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\TreeService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function response;
@@ -55,8 +54,7 @@ class DeleteTreeAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$this->tree_service->delete($tree);
diff --git a/app/Http/RequestHandlers/EditFactAction.php b/app/Http/RequestHandlers/EditFactAction.php
index 6259322f35..d4df74d8b2 100644
--- a/app/Http/RequestHandlers/EditFactAction.php
+++ b/app/Http/RequestHandlers/EditFactAction.php
@@ -25,7 +25,6 @@ use Fisharebest\Webtrees\Module\CensusAssistantModule;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -63,14 +62,9 @@ class EditFactAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $fact_id = $request->getAttribute('fact_id') ?? '';
- assert(is_string($fact_id));
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $fact_id = Validator::attributes($request)->string('fact_id');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
@@ -118,8 +112,8 @@ class EditFactAction implements RequestHandlerInterface
}
}
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $record->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $record->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/EditFactPage.php b/app/Http/RequestHandlers/EditFactPage.php
index c2eb556167..819ec24cef 100644
--- a/app/Http/RequestHandlers/EditFactPage.php
+++ b/app/Http/RequestHandlers/EditFactPage.php
@@ -24,7 +24,7 @@ use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -59,15 +59,9 @@ class EditFactPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $fact_id = $request->getAttribute('fact_id');
- assert(is_string($fact_id));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $fact_id = Validator::attributes($request)->string('fact_id');
$include_hidden = (bool) ($request->getQueryParams()['include_hidden'] ?? false);
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
diff --git a/app/Http/RequestHandlers/EditMediaFileAction.php b/app/Http/RequestHandlers/EditMediaFileAction.php
index 32928c9ff2..b507e4542e 100644
--- a/app/Http/RequestHandlers/EditMediaFileAction.php
+++ b/app/Http/RequestHandlers/EditMediaFileAction.php
@@ -27,7 +27,7 @@ use Fisharebest\Webtrees\MediaFile;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\MediaFileService;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use League\Flysystem\FilesystemException;
use League\Flysystem\UnableToMoveFile;
use League\Flysystem\UnableToRetrieveMetadata;
@@ -73,15 +73,9 @@ class EditMediaFileAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $fact_id = $request->getAttribute('fact_id');
- assert(is_string($fact_id));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $fact_id = Validator::attributes($request)->string('fact_id');
$data_filesystem = Registry::filesystem()->data();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/EditMediaFileModal.php b/app/Http/RequestHandlers/EditMediaFileModal.php
index 91e5dba7db..f7d1dfad6d 100644
--- a/app/Http/RequestHandlers/EditMediaFileModal.php
+++ b/app/Http/RequestHandlers/EditMediaFileModal.php
@@ -26,7 +26,7 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\MediaFileService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -62,15 +62,9 @@ class EditMediaFileModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $fact_id = $request->getAttribute('fact_id');
- assert(is_string($fact_id));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $fact_id = Validator::attributes($request)->string('fact_id');
$data_filesystem = Registry::filesystem()->data();
$media = Registry::mediaFactory()->make($xref, $tree);
diff --git a/app/Http/RequestHandlers/EditNoteAction.php b/app/Http/RequestHandlers/EditNoteAction.php
index 227807be17..db0e08f4e0 100644
--- a/app/Http/RequestHandlers/EditNoteAction.php
+++ b/app/Http/RequestHandlers/EditNoteAction.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Edit note objects.
*/
@@ -42,14 +40,10 @@ class EditNoteAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
-
- $note = Registry::noteFactory()->make($xref, $tree);
- $note = Auth::checkNoteAccess($note, true);
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $note = Registry::noteFactory()->make($xref, $tree);
+ $note = Auth::checkNoteAccess($note, true);
$params = (array) $request->getParsedBody();
$NOTE = $params['NOTE'];
diff --git a/app/Http/RequestHandlers/EditNotePage.php b/app/Http/RequestHandlers/EditNotePage.php
index 9e8b0fad41..4bd3b8570f 100644
--- a/app/Http/RequestHandlers/EditNotePage.php
+++ b/app/Http/RequestHandlers/EditNotePage.php
@@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Edit note objects.
*/
@@ -46,11 +44,8 @@ class EditNotePage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$note = Registry::noteFactory()->make($xref, $tree);
$note = Auth::checkNoteAccess($note, true);
diff --git a/app/Http/RequestHandlers/EditRawFactAction.php b/app/Http/RequestHandlers/EditRawFactAction.php
index 67c8bd7352..b5f347b3ff 100644
--- a/app/Http/RequestHandlers/EditRawFactAction.php
+++ b/app/Http/RequestHandlers/EditRawFactAction.php
@@ -21,14 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function preg_replace;
use function redirect;
use function trim;
@@ -45,21 +42,13 @@ class EditRawFactAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $record = Registry::gedcomRecordFactory()->make($xref, $tree);
- $record = Auth::checkRecordAccess($record, true);
-
- $fact_id = $request->getAttribute('fact_id');
- assert(is_string($fact_id));
-
- $params = (array) $request->getParsedBody();
-
- $gedcom = $params['gedcom'];
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $record = Registry::gedcomRecordFactory()->make($xref, $tree);
+ $record = Auth::checkRecordAccess($record, true);
+ $fact_id = Validator::attributes($request)->string('fact_id');
+ $params = (array) $request->getParsedBody();
+ $gedcom = $params['gedcom'];
// Cleanup the client’s bad editing?
$gedcom = preg_replace('/[\r\n]+/', "\n", $gedcom); // Empty lines
@@ -73,8 +62,8 @@ class EditRawFactAction implements RequestHandlerInterface
}
}
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $record->url();
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $record->url();
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/EditRawFactPage.php b/app/Http/RequestHandlers/EditRawFactPage.php
index 14258be92d..67aed2d3a0 100644
--- a/app/Http/RequestHandlers/EditRawFactPage.php
+++ b/app/Http/RequestHandlers/EditRawFactPage.php
@@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -47,18 +45,12 @@ class EditRawFactPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $record = Registry::gedcomRecordFactory()->make($xref, $tree);
- $record = Auth::checkRecordAccess($record, true);
-
- $fact_id = $request->getAttribute('fact_id');
-
- $title = I18N::translate('Edit the raw GEDCOM') . ' - ' . $record->fullName();
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $record = Registry::gedcomRecordFactory()->make($xref, $tree);
+ $record = Auth::checkRecordAccess($record, true);
+ $fact_id = Validator::attributes($request)->string('fact_id');
+ $title = I18N::translate('Edit the raw GEDCOM') . ' - ' . $record->fullName();
$fact = $record->facts([], false, null, true)
->first(static function (Fact $fact) use ($fact_id): bool {
diff --git a/app/Http/RequestHandlers/EditRawRecordAction.php b/app/Http/RequestHandlers/EditRawRecordAction.php
index f57f095a90..5c67ca5797 100644
--- a/app/Http/RequestHandlers/EditRawRecordAction.php
+++ b/app/Http/RequestHandlers/EditRawRecordAction.php
@@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\Header;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -44,15 +44,10 @@ class EditRawRecordAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
-
$params = (array) $request->getParsedBody();
$level0 = $params['level0'];
diff --git a/app/Http/RequestHandlers/EditRawRecordPage.php b/app/Http/RequestHandlers/EditRawRecordPage.php
index 21deda1954..dbf4368b45 100644
--- a/app/Http/RequestHandlers/EditRawRecordPage.php
+++ b/app/Http/RequestHandlers/EditRawRecordPage.php
@@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -46,12 +46,8 @@ class EditRawRecordPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
diff --git a/app/Http/RequestHandlers/EditRecordAction.php b/app/Http/RequestHandlers/EditRecordAction.php
index 40fabcf911..275293a8a0 100644
--- a/app/Http/RequestHandlers/EditRecordAction.php
+++ b/app/Http/RequestHandlers/EditRecordAction.php
@@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Header;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -56,15 +54,10 @@ class EditRecordAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $record = Registry::gedcomRecordFactory()->make($xref, $tree);
- $record = Auth::checkRecordAccess($record, true);
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $record = Registry::gedcomRecordFactory()->make($xref, $tree);
+ $record = Auth::checkRecordAccess($record, true);
$params = (array) $request->getParsedBody();
$keep_chan = (bool) ($params['keep_chan'] ?? false);
$levels = $params['levels'];
diff --git a/app/Http/RequestHandlers/EditRecordPage.php b/app/Http/RequestHandlers/EditRecordPage.php
index f12f424bb7..9e8ad920a1 100644
--- a/app/Http/RequestHandlers/EditRecordPage.php
+++ b/app/Http/RequestHandlers/EditRecordPage.php
@@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function route;
/**
@@ -58,12 +56,8 @@ class EditRecordPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
diff --git a/app/Http/RequestHandlers/EmailPreferencesAction.php b/app/Http/RequestHandlers/EmailPreferencesAction.php
index 2c09fc7278..ced2316aa8 100644
--- a/app/Http/RequestHandlers/EmailPreferencesAction.php
+++ b/app/Http/RequestHandlers/EmailPreferencesAction.php
@@ -24,7 +24,7 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\EmailService;
use Fisharebest\Webtrees\Site;
use Fisharebest\Webtrees\SiteUser;
-use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -57,9 +57,7 @@ class EmailPreferencesAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
- assert($user instanceof User);
-
+ $user = Validator::attributes($request)->user();
$params = (array) $request->getParsedBody();
Site::setPreference('SMTP_ACTIVE', $params['SMTP_ACTIVE']);
diff --git a/app/Http/RequestHandlers/EmptyClipboard.php b/app/Http/RequestHandlers/EmptyClipboard.php
index a49681cd15..78ec1ea2f6 100644
--- a/app/Http/RequestHandlers/EmptyClipboard.php
+++ b/app/Http/RequestHandlers/EmptyClipboard.php
@@ -55,9 +55,9 @@ class EmptyClipboard implements RequestHandlerInterface
{
$this->clipboard_service->emptyClipboard();
- $base_url = $request->getAttribute('base_url');
+ $base_url = Validator::attributes($request)->string('base_url');
$default_url = $request->getHeaderLine('Referer');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $default_url;
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $default_url;
return redirect($url);
}
diff --git a/app/Http/RequestHandlers/ExportGedcomClient.php b/app/Http/RequestHandlers/ExportGedcomClient.php
index 9d42cbcd37..c284cd8517 100644
--- a/app/Http/RequestHandlers/ExportGedcomClient.php
+++ b/app/Http/RequestHandlers/ExportGedcomClient.php
@@ -29,7 +29,6 @@ use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomExportService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use League\Flysystem\Filesystem;
@@ -43,7 +42,6 @@ use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function addcslashes;
-use function assert;
use function fclose;
use function pathinfo;
use function strtolower;
@@ -89,16 +87,15 @@ class ExportGedcomClient implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$data_filesystem = Registry::filesystem()->data();
- $format = Validator::parsedBody($request)->isInArray(['gedcom', 'zip'])->requiredString('format');
- $privacy = Validator::parsedBody($request)->isInArray(['none', 'gedadmin', 'user', 'visitor'])->requiredString('privacy');
- $encoding = Validator::parsedBody($request)->isInArray([UTF8::NAME, UTF16BE::NAME, ANSEL::NAME, ASCII::NAME, Windows1252::NAME])->requiredString('encoding');
- $line_endings = Validator::parsedBody($request)->isInArray(['CRLF', 'LF'])->requiredString('line_endings');
- $media_path = Validator::parsedBody($request)->string('media_path') ?? '';
+ $format = Validator::parsedBody($request)->isInArray(['gedcom', 'zip'])->string('format');
+ $privacy = Validator::parsedBody($request)->isInArray(['none', 'gedadmin', 'user', 'visitor'])->string('privacy');
+ $encoding = Validator::parsedBody($request)->isInArray([UTF8::NAME, UTF16BE::NAME, ANSEL::NAME, ASCII::NAME, Windows1252::NAME])->string('encoding');
+ $line_endings = Validator::parsedBody($request)->isInArray(['CRLF', 'LF'])->string('line_endings');
+ $media_path = Validator::parsedBody($request)->optionalString('media_path') ?? '';
$access_levels = [
'gedadmin' => Auth::PRIV_NONE,
diff --git a/app/Http/RequestHandlers/ExportGedcomPage.php b/app/Http/RequestHandlers/ExportGedcomPage.php
index d97c1bd56e..d6c222f6e3 100644
--- a/app/Http/RequestHandlers/ExportGedcomPage.php
+++ b/app/Http/RequestHandlers/ExportGedcomPage.php
@@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function pathinfo;
use function strtolower;
@@ -47,9 +46,7 @@ class ExportGedcomPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$title = I18N::translate('Export a GEDCOM file') . ' — ' . e($tree->title());
$this->layout = 'layouts/administration';
diff --git a/app/Http/RequestHandlers/ExportGedcomServer.php b/app/Http/RequestHandlers/ExportGedcomServer.php
index 55a3fa4f4d..b4d6e43b79 100644
--- a/app/Http/RequestHandlers/ExportGedcomServer.php
+++ b/app/Http/RequestHandlers/ExportGedcomServer.php
@@ -25,14 +25,13 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomExportService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use League\Flysystem\FilesystemException;
use League\Flysystem\UnableToWriteFile;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function fclose;
use function pathinfo;
use function redirect;
@@ -67,8 +66,7 @@ class ExportGedcomServer implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$data_filesystem = Registry::filesystem()->data();
diff --git a/app/Http/RequestHandlers/FamilyPage.php b/app/Http/RequestHandlers/FamilyPage.php
index 7d9fd0a6d1..e48d9b9689 100644
--- a/app/Http/RequestHandlers/FamilyPage.php
+++ b/app/Http/RequestHandlers/FamilyPage.php
@@ -28,18 +28,16 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function array_map;
-use function assert;
use function e;
use function explode;
use function implode;
use function in_array;
-use function is_string;
use function redirect;
use function strip_tags;
use function trim;
@@ -70,19 +68,14 @@ class FamilyPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($family);
-
- if ($family->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($family->xref() !== $xref || Registry::slugFactory()->make($family) !== $slug) {
return redirect($family->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/FindDuplicateRecords.php b/app/Http/RequestHandlers/FindDuplicateRecords.php
index 0abd9a6adf..53d8225417 100644
--- a/app/Http/RequestHandlers/FindDuplicateRecords.php
+++ b/app/Http/RequestHandlers/FindDuplicateRecords.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\AdminService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
/**
@@ -56,8 +55,7 @@ class FindDuplicateRecords implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$duplicates = $this->admin_service->duplicateRecords($tree);
$title = I18N::translate('Find duplicates') . ' — ' . e($tree->title());
diff --git a/app/Http/RequestHandlers/GedcomLoad.php b/app/Http/RequestHandlers/GedcomLoad.php
index 1c8bbb279d..2c99ac9566 100644
--- a/app/Http/RequestHandlers/GedcomLoad.php
+++ b/app/Http/RequestHandlers/GedcomLoad.php
@@ -27,14 +27,13 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\GedcomImportService;
use Fisharebest\Webtrees\Services\TimeoutService;
use Fisharebest\Webtrees\Services\TreeService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\DetectsConcurrencyErrors;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function preg_split;
use function response;
use function str_replace;
@@ -83,8 +82,7 @@ class GedcomLoad implements RequestHandlerInterface
{
$this->layout = 'layouts/ajax';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
try {
// What is the current import status?
diff --git a/app/Http/RequestHandlers/GedcomRecordPage.php b/app/Http/RequestHandlers/GedcomRecordPage.php
index 22d052eb61..ec3a98754e 100644
--- a/app/Http/RequestHandlers/GedcomRecordPage.php
+++ b/app/Http/RequestHandlers/GedcomRecordPage.php
@@ -32,14 +32,12 @@ use Fisharebest\Webtrees\Repository;
use Fisharebest\Webtrees\Source;
use Fisharebest\Webtrees\Submission;
use Fisharebest\Webtrees\Submitter;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -72,12 +70,8 @@ class GedcomRecordPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record);
diff --git a/app/Http/RequestHandlers/HeaderPage.php b/app/Http/RequestHandlers/HeaderPage.php
index 59a6bca12d..ae32286eab 100644
--- a/app/Http/RequestHandlers/HeaderPage.php
+++ b/app/Http/RequestHandlers/HeaderPage.php
@@ -23,7 +23,7 @@ use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -47,19 +47,14 @@ class HeaderPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$header = Registry::headerFactory()->make($xref, $tree);
$header = Auth::checkHeaderAccess($header, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($header);
-
- if ($header->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($header->xref() !== $xref || Registry::slugFactory()->make($header) !== $slug) {
return redirect($header->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/HomePage.php b/app/Http/RequestHandlers/HomePage.php
index 1dafe20b91..d5b2e8e909 100644
--- a/app/Http/RequestHandlers/HomePage.php
+++ b/app/Http/RequestHandlers/HomePage.php
@@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Site;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -60,7 +61,7 @@ class HomePage implements RequestHandlerInterface
{
$default = Site::getPreference('DEFAULT_GEDCOM');
$tree = $this->tree_service->all()->get($default) ?? $this->tree_service->all()->first();
- $user = $request->getAttribute('user');
+ $user = Validator::attributes($request)->user();
if ($tree instanceof Tree) {
if ($tree->getPreference('imported') === '1') {
diff --git a/app/Http/RequestHandlers/ImportGedcomAction.php b/app/Http/RequestHandlers/ImportGedcomAction.php
index 343888d290..fa91c5ca27 100644
--- a/app/Http/RequestHandlers/ImportGedcomAction.php
+++ b/app/Http/RequestHandlers/ImportGedcomAction.php
@@ -24,7 +24,7 @@ use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\TreeService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use League\Flysystem\FilesystemException;
use League\Flysystem\UnableToReadFile;
use Psr\Http\Message\ResponseInterface;
@@ -32,7 +32,6 @@ use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function basename;
use function redirect;
use function route;
@@ -63,8 +62,7 @@ class ImportGedcomAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$data_filesystem = Registry::filesystem()->data();
diff --git a/app/Http/RequestHandlers/ImportGedcomPage.php b/app/Http/RequestHandlers/ImportGedcomPage.php
index c411700aaf..8409f2a8b5 100644
--- a/app/Http/RequestHandlers/ImportGedcomPage.php
+++ b/app/Http/RequestHandlers/ImportGedcomPage.php
@@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\AdminService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
/**
@@ -57,8 +56,7 @@ class ImportGedcomPage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$data_filesystem = Registry::filesystem()->data();
$data_folder = Registry::filesystem()->dataName();
diff --git a/app/Http/RequestHandlers/IndividualPage.php b/app/Http/RequestHandlers/IndividualPage.php
index 86a236fd8c..37147bd440 100644
--- a/app/Http/RequestHandlers/IndividualPage.php
+++ b/app/Http/RequestHandlers/IndividualPage.php
@@ -35,7 +35,7 @@ use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Services\UserService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -90,19 +90,14 @@ class IndividualPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($individual);
-
- if ($individual->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($individual->xref() !== $xref || Registry::slugFactory()->make($individual) !== $slug) {
return redirect($individual->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/LinkChildToFamilyAction.php b/app/Http/RequestHandlers/LinkChildToFamilyAction.php
index e60e39bccf..5dfcb94774 100644
--- a/app/Http/RequestHandlers/LinkChildToFamilyAction.php
+++ b/app/Http/RequestHandlers/LinkChildToFamilyAction.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -42,12 +42,8 @@ class LinkChildToFamilyAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/LinkChildToFamilyPage.php b/app/Http/RequestHandlers/LinkChildToFamilyPage.php
index e76e0767f4..fd23c43c09 100644
--- a/app/Http/RequestHandlers/LinkChildToFamilyPage.php
+++ b/app/Http/RequestHandlers/LinkChildToFamilyPage.php
@@ -23,14 +23,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
-
/**
* Link an existing individual as child in an existing family.
*/
@@ -45,16 +42,11 @@ class LinkChildToFamilyPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
-
- $title = I18N::translate('Link this individual to an existing family as a child');
+ $title = I18N::translate('Link this individual to an existing family as a child');
return $this->viewResponse('edit/link-child-to-family', [
'individual' => $individual,
diff --git a/app/Http/RequestHandlers/LinkMediaToFamilyModal.php b/app/Http/RequestHandlers/LinkMediaToFamilyModal.php
index ab6c9705ba..07d11a3a91 100644
--- a/app/Http/RequestHandlers/LinkMediaToFamilyModal.php
+++ b/app/Http/RequestHandlers/LinkMediaToFamilyModal.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -41,12 +41,8 @@ class LinkMediaToFamilyModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$media = Registry::mediaFactory()->make($xref, $tree);
$media = Auth::checkMediaAccess($media);
diff --git a/app/Http/RequestHandlers/LinkMediaToIndividualModal.php b/app/Http/RequestHandlers/LinkMediaToIndividualModal.php
index d34c3af77d..156c74a091 100644
--- a/app/Http/RequestHandlers/LinkMediaToIndividualModal.php
+++ b/app/Http/RequestHandlers/LinkMediaToIndividualModal.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -41,12 +41,8 @@ class LinkMediaToIndividualModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$media = Registry::mediaFactory()->make($xref, $tree);
$media = Auth::checkMediaAccess($media);
diff --git a/app/Http/RequestHandlers/LinkMediaToRecordAction.php b/app/Http/RequestHandlers/LinkMediaToRecordAction.php
index 124101af0c..4cdb4f0c8c 100644
--- a/app/Http/RequestHandlers/LinkMediaToRecordAction.php
+++ b/app/Http/RequestHandlers/LinkMediaToRecordAction.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -41,12 +41,8 @@ class LinkMediaToRecordAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$params = (array) $request->getParsedBody();
$link = $params['link'] ?? '';
diff --git a/app/Http/RequestHandlers/LinkMediaToSourceModal.php b/app/Http/RequestHandlers/LinkMediaToSourceModal.php
index 55fff0c5bb..0a5d18d03f 100644
--- a/app/Http/RequestHandlers/LinkMediaToSourceModal.php
+++ b/app/Http/RequestHandlers/LinkMediaToSourceModal.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -41,12 +41,8 @@ class LinkMediaToSourceModal implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$media = Registry::mediaFactory()->make($xref, $tree);
$media = Auth::checkMediaAccess($media);
diff --git a/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php b/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php
index d8c76b1f42..c059666ed0 100644
--- a/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php
+++ b/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php
@@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -55,12 +55,8 @@ class LinkSpouseToIndividualAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php b/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php
index 375c753c8e..70b3ca1a58 100644
--- a/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php
+++ b/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php
@@ -25,7 +25,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -59,12 +59,8 @@ class LinkSpouseToIndividualPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/LocationPage.php b/app/Http/RequestHandlers/LocationPage.php
index 39ec3fb4e9..4f53815e84 100644
--- a/app/Http/RequestHandlers/LocationPage.php
+++ b/app/Http/RequestHandlers/LocationPage.php
@@ -23,7 +23,7 @@ use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -47,19 +47,14 @@ class LocationPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$record = Registry::locationFactory()->make($xref, $tree);
$record = Auth::checkLocationAccess($record, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($record);
-
- if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) {
return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/LoginAction.php b/app/Http/RequestHandlers/LoginAction.php
index 337dc59ff1..26aab30ba5 100644
--- a/app/Http/RequestHandlers/LoginAction.php
+++ b/app/Http/RequestHandlers/LoginAction.php
@@ -67,12 +67,12 @@ class LoginAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- $base_url = $request->getAttribute('base_url');
+ $tree = Validator::attributes($request)->treeOptional();
+ $base_url = Validator::attributes($request)->string('base_url');
$default_url = route(HomePage::class);
- $username = Validator::parsedBody($request)->string('username') ?? '';
- $password = Validator::parsedBody($request)->string('password') ?? '';
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $default_url;
+ $username = Validator::parsedBody($request)->optionalString('username') ?? '';
+ $password = Validator::parsedBody($request)->optionalString('password') ?? '';
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $default_url;
try {
$this->doLogin($username, $password);
diff --git a/app/Http/RequestHandlers/LoginPage.php b/app/Http/RequestHandlers/LoginPage.php
index 9976f3447c..b7a4dd48e2 100644
--- a/app/Http/RequestHandlers/LoginPage.php
+++ b/app/Http/RequestHandlers/LoginPage.php
@@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Site;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -55,8 +56,8 @@ class LoginPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- $user = $request->getAttribute('user');
+ $tree = Validator::attributes($request)->treeOptional();
+ $user = Validator::attributes($request)->user();
// Already logged in?
if ($user instanceof User) {
diff --git a/app/Http/RequestHandlers/Logout.php b/app/Http/RequestHandlers/Logout.php
index de3f410016..74543400df 100644
--- a/app/Http/RequestHandlers/Logout.php
+++ b/app/Http/RequestHandlers/Logout.php
@@ -24,6 +24,7 @@ use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Log;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -43,7 +44,7 @@ class Logout implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
+ $user = Validator::attributes($request)->user();
if ($user instanceof User) {
Log::addAuthenticationLog('Logout: ' . Auth::user()->userName() . '/' . Auth::user()->realName());
diff --git a/app/Http/RequestHandlers/ManageTrees.php b/app/Http/RequestHandlers/ManageTrees.php
index b431e07355..0b1099b78d 100644
--- a/app/Http/RequestHandlers/ManageTrees.php
+++ b/app/Http/RequestHandlers/ManageTrees.php
@@ -26,6 +26,7 @@ use Fisharebest\Webtrees\Services\AdminService;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Site;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -60,7 +61,7 @@ class ManageTrees implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
$multiple_tree_threshold = $this->admin_service->multipleTreeThreshold();
$gedcom_file_count = $this->admin_service->gedcomFiles(Registry::filesystem()->data())->count();
diff --git a/app/Http/RequestHandlers/Masquerade.php b/app/Http/RequestHandlers/Masquerade.php
index 7a226309be..3c6494ca18 100644
--- a/app/Http/RequestHandlers/Masquerade.php
+++ b/app/Http/RequestHandlers/Masquerade.php
@@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException;
use Fisharebest\Webtrees\Log;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\Session;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -52,14 +53,14 @@ class Masquerade implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user_id = (int) $request->getAttribute('user_id');
+ $user_id = Validator::attributes($request)->integer('user_id');
$user = $this->user_service->find($user_id);
if ($user === null) {
throw new HttpNotFoundException('User ID ' . $user_id . ' not found');
}
- if ($request->getAttribute('user')->id() !== $user_id) {
+ if (Validator::attributes($request)->user()->id() !== $user_id) {
Log::addAuthenticationLog('Masquerade as user: ' . $user->userName());
Auth::login($user);
Session::put('masquerade', '1');
diff --git a/app/Http/RequestHandlers/MediaFileDownload.php b/app/Http/RequestHandlers/MediaFileDownload.php
index 1b4761d834..66557a992f 100644
--- a/app/Http/RequestHandlers/MediaFileDownload.php
+++ b/app/Http/RequestHandlers/MediaFileDownload.php
@@ -21,9 +21,8 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -45,11 +44,8 @@ class MediaFileDownload implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$image_factory = Registry::imageFactory();
diff --git a/app/Http/RequestHandlers/MediaFileThumbnail.php b/app/Http/RequestHandlers/MediaFileThumbnail.php
index 11a3f41424..c321261a4c 100644
--- a/app/Http/RequestHandlers/MediaFileThumbnail.php
+++ b/app/Http/RequestHandlers/MediaFileThumbnail.php
@@ -20,14 +20,12 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fig\Http\Message\StatusCodeInterface;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
/**
@@ -44,11 +42,8 @@ class MediaFileThumbnail implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$params = $request->getQueryParams();
$xref = $params['xref'] ?? '';
diff --git a/app/Http/RequestHandlers/MediaPage.php b/app/Http/RequestHandlers/MediaPage.php
index 2f4e616125..94c63f9e13 100644
--- a/app/Http/RequestHandlers/MediaPage.php
+++ b/app/Http/RequestHandlers/MediaPage.php
@@ -24,7 +24,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -61,19 +61,14 @@ class MediaPage implements RequestHandlerInterface
{
$data_filesystem = Registry::filesystem()->data();
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$record = Registry::mediaFactory()->make($xref, $tree);
$record = Auth::checkMediaAccess($record);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($record);
-
- if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) {
return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/MergeFactsAction.php b/app/Http/RequestHandlers/MergeFactsAction.php
index dbd7274e8c..2c02774065 100644
--- a/app/Http/RequestHandlers/MergeFactsAction.php
+++ b/app/Http/RequestHandlers/MergeFactsAction.php
@@ -24,14 +24,13 @@ use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Expression;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function in_array;
use function preg_replace;
@@ -51,8 +50,7 @@ class MergeFactsAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/MergeFactsPage.php b/app/Http/RequestHandlers/MergeFactsPage.php
index ebc410348d..875b8ff067 100644
--- a/app/Http/RequestHandlers/MergeFactsPage.php
+++ b/app/Http/RequestHandlers/MergeFactsPage.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
/**
@@ -48,8 +47,7 @@ class MergeFactsPage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$xref1 = $request->getQueryParams()['xref1'] ?? '';
$xref2 = $request->getQueryParams()['xref2'] ?? '';
diff --git a/app/Http/RequestHandlers/MergeRecordsAction.php b/app/Http/RequestHandlers/MergeRecordsAction.php
index d33e62d703..82dae6e3cd 100644
--- a/app/Http/RequestHandlers/MergeRecordsAction.php
+++ b/app/Http/RequestHandlers/MergeRecordsAction.php
@@ -20,12 +20,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -41,8 +40,7 @@ class MergeRecordsAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/MergeRecordsPage.php b/app/Http/RequestHandlers/MergeRecordsPage.php
index ea73093757..99521c5ae3 100644
--- a/app/Http/RequestHandlers/MergeRecordsPage.php
+++ b/app/Http/RequestHandlers/MergeRecordsPage.php
@@ -30,12 +30,11 @@ use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Repository;
use Fisharebest\Webtrees\Source;
use Fisharebest\Webtrees\Submitter;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
/**
@@ -56,9 +55,7 @@ class MergeRecordsPage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$xref1 = $request->getQueryParams()['xref1'] ?? '';
$xref2 = $request->getQueryParams()['xref2'] ?? '';
diff --git a/app/Http/RequestHandlers/MessageAction.php b/app/Http/RequestHandlers/MessageAction.php
index b5e5bba60d..fe3709cce2 100644
--- a/app/Http/RequestHandlers/MessageAction.php
+++ b/app/Http/RequestHandlers/MessageAction.php
@@ -26,13 +26,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\MessageService;
use Fisharebest\Webtrees\Services\UserService;
-use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function redirect;
use function route;
@@ -67,18 +65,16 @@ class MessageAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$params = (array) $request->getParsedBody();
$body = $params['body'];
$subject = $params['subject'];
$to = $params['to'];
$to_user = $this->user_service->findByUserName($to);
- $ip = $request->getAttribute('client-ip');
- $base_url = $request->getAttribute('base_url');
- $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $base_url;
+ $ip = Validator::attributes($request)->string('client-ip');
+ $base_url = Validator::attributes($request)->string('base_url');
+ $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $base_url;
if ($to_user === null || $to_user->getPreference(UserInterface::PREF_CONTACT_METHOD) === 'none') {
throw new HttpAccessDeniedException('Invalid contact user id');
diff --git a/app/Http/RequestHandlers/MessagePage.php b/app/Http/RequestHandlers/MessagePage.php
index f16e0f123c..cf93885df1 100644
--- a/app/Http/RequestHandlers/MessagePage.php
+++ b/app/Http/RequestHandlers/MessagePage.php
@@ -24,12 +24,11 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpAccessDeniedException;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\UserService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
/**
@@ -58,10 +57,8 @@ class MessagePage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$body = $request->getQueryParams()['body'] ?? '';
$subject = $request->getQueryParams()['subject'] ?? '';
$to = $request->getQueryParams()['to'] ?? '';
diff --git a/app/Http/RequestHandlers/MessageSelect.php b/app/Http/RequestHandlers/MessageSelect.php
index d314823692..2bb74efef3 100644
--- a/app/Http/RequestHandlers/MessageSelect.php
+++ b/app/Http/RequestHandlers/MessageSelect.php
@@ -19,7 +19,7 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -36,9 +36,7 @@ class MessageSelect implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
return redirect(route(MessagePage::class, [
diff --git a/app/Http/RequestHandlers/ModuleAction.php b/app/Http/RequestHandlers/ModuleAction.php
index 7bc6de28bb..58f38676db 100644
--- a/app/Http/RequestHandlers/ModuleAction.php
+++ b/app/Http/RequestHandlers/ModuleAction.php
@@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\Exceptions\HttpAccessDeniedException;
use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException;
use Fisharebest\Webtrees\Services\ModuleService;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -59,8 +60,7 @@ class ModuleAction implements RequestHandlerInterface
{
$module_name = $request->getAttribute('module');
$action = $request->getAttribute('action');
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $user = Validator::attributes($request)->user();
// Check that the module is enabled.
// The module itself will need to check any tree-level access,
diff --git a/app/Http/RequestHandlers/NotePage.php b/app/Http/RequestHandlers/NotePage.php
index 62f3c4b8a3..024eb7a002 100644
--- a/app/Http/RequestHandlers/NotePage.php
+++ b/app/Http/RequestHandlers/NotePage.php
@@ -24,7 +24,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -59,19 +59,14 @@ class NotePage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$record = Registry::noteFactory()->make($xref, $tree);
$record = Auth::checkNoteAccess($record, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($record);
-
- if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) {
return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/PasswordRequestAction.php b/app/Http/RequestHandlers/PasswordRequestAction.php
index 2960362fd3..8c99b6ce0e 100644
--- a/app/Http/RequestHandlers/PasswordRequestAction.php
+++ b/app/Http/RequestHandlers/PasswordRequestAction.php
@@ -29,6 +29,7 @@ use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\SiteUser;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -83,7 +84,7 @@ class PasswordRequestAction implements RequestHandlerInterface, StatusCodeInterf
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/PasswordRequestPage.php b/app/Http/RequestHandlers/PasswordRequestPage.php
index 4d19a8daf8..9152174571 100644
--- a/app/Http/RequestHandlers/PasswordRequestPage.php
+++ b/app/Http/RequestHandlers/PasswordRequestPage.php
@@ -23,6 +23,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -44,8 +45,8 @@ class PasswordRequestPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- $user = $request->getAttribute('user');
+ $tree = Validator::attributes($request)->treeOptional();
+ $user = Validator::attributes($request)->user();
// Already logged in?
if ($user instanceof User) {
diff --git a/app/Http/RequestHandlers/PasswordResetAction.php b/app/Http/RequestHandlers/PasswordResetAction.php
index b60b63bc46..67804a4db5 100644
--- a/app/Http/RequestHandlers/PasswordResetAction.php
+++ b/app/Http/RequestHandlers/PasswordResetAction.php
@@ -27,6 +27,7 @@ use Fisharebest\Webtrees\Log;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -55,7 +56,7 @@ class PasswordResetAction implements RequestHandlerInterface, StatusCodeInterfac
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
$token = $request->getAttribute('token');
$user = $this->user_service->findByToken($token);
diff --git a/app/Http/RequestHandlers/PasswordResetPage.php b/app/Http/RequestHandlers/PasswordResetPage.php
index 575de5fea6..20afa8af31 100644
--- a/app/Http/RequestHandlers/PasswordResetPage.php
+++ b/app/Http/RequestHandlers/PasswordResetPage.php
@@ -26,6 +26,7 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -58,7 +59,7 @@ class PasswordResetPage implements RequestHandlerInterface, StatusCodeInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
$token = $request->getAttribute('token');
$title = I18N::translate('Set a new password');
$user = $this->user_service->findByToken($token);
diff --git a/app/Http/RequestHandlers/PasteFact.php b/app/Http/RequestHandlers/PasteFact.php
index a45b7dc77d..9c2fdad0c5 100644
--- a/app/Http/RequestHandlers/PasteFact.php
+++ b/app/Http/RequestHandlers/PasteFact.php
@@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -57,14 +57,9 @@ class PasteFact implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
- $params = (array) $request->getParsedBody();
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $params = (array) $request->getParsedBody();
$fact_id = $params['fact_id'];
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$record = Auth::checkRecordAccess($record, true);
diff --git a/app/Http/RequestHandlers/PendingChanges.php b/app/Http/RequestHandlers/PendingChanges.php
index bacdc2ac33..2ed1d1677d 100644
--- a/app/Http/RequestHandlers/PendingChanges.php
+++ b/app/Http/RequestHandlers/PendingChanges.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
/**
@@ -59,8 +58,7 @@ class PendingChanges implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$n = (int) ($request->getQueryParams()['n'] ?? self::MAX_CHANGES);
diff --git a/app/Http/RequestHandlers/PendingChangesAcceptChange.php b/app/Http/RequestHandlers/PendingChangesAcceptChange.php
index bdf2b0710e..542436ee8a 100644
--- a/app/Http/RequestHandlers/PendingChangesAcceptChange.php
+++ b/app/Http/RequestHandlers/PendingChangesAcceptChange.php
@@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -53,12 +53,8 @@ class PendingChangesAcceptChange implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$change = $request->getAttribute('change');
diff --git a/app/Http/RequestHandlers/PendingChangesAcceptRecord.php b/app/Http/RequestHandlers/PendingChangesAcceptRecord.php
index e624dd27dc..2074cba16c 100644
--- a/app/Http/RequestHandlers/PendingChangesAcceptRecord.php
+++ b/app/Http/RequestHandlers/PendingChangesAcceptRecord.php
@@ -23,12 +23,11 @@ use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
/**
@@ -53,10 +52,8 @@ class PendingChangesAcceptRecord implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref') ?? '';
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref', '');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
if ($record) {
diff --git a/app/Http/RequestHandlers/PendingChangesAcceptTree.php b/app/Http/RequestHandlers/PendingChangesAcceptTree.php
index 96fe760cd8..62294be4b1 100644
--- a/app/Http/RequestHandlers/PendingChangesAcceptTree.php
+++ b/app/Http/RequestHandlers/PendingChangesAcceptTree.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function response;
@@ -55,8 +54,7 @@ class PendingChangesAcceptTree implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$n = (int) ($request->getQueryParams()['n'] ?? PHP_INT_MAX);
diff --git a/app/Http/RequestHandlers/PendingChangesLogData.php b/app/Http/RequestHandlers/PendingChangesLogData.php
index 4bbbe9566a..bff8f232e3 100644
--- a/app/Http/RequestHandlers/PendingChangesLogData.php
+++ b/app/Http/RequestHandlers/PendingChangesLogData.php
@@ -25,7 +25,7 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\DatatablesService;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -68,9 +68,7 @@ class PendingChangesLogData implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = $request->getQueryParams();
$params['tree'] = $tree->name();
diff --git a/app/Http/RequestHandlers/PendingChangesLogDelete.php b/app/Http/RequestHandlers/PendingChangesLogDelete.php
index 3f12d53051..af75b0c105 100644
--- a/app/Http/RequestHandlers/PendingChangesLogDelete.php
+++ b/app/Http/RequestHandlers/PendingChangesLogDelete.php
@@ -20,12 +20,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
/**
@@ -50,9 +49,7 @@ class PendingChangesLogDelete implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = $request->getQueryParams();
$params['tree'] = $tree->name();
diff --git a/app/Http/RequestHandlers/PendingChangesLogDownload.php b/app/Http/RequestHandlers/PendingChangesLogDownload.php
index cf5c4b7df8..f3676cf14e 100644
--- a/app/Http/RequestHandlers/PendingChangesLogDownload.php
+++ b/app/Http/RequestHandlers/PendingChangesLogDownload.php
@@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
/**
@@ -51,9 +50,7 @@ class PendingChangesLogDownload implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = $request->getQueryParams();
$params['tree'] = $tree->name();
diff --git a/app/Http/RequestHandlers/PendingChangesLogPage.php b/app/Http/RequestHandlers/PendingChangesLogPage.php
index e852d6b2f4..5d0af5c717 100644
--- a/app/Http/RequestHandlers/PendingChangesLogPage.php
+++ b/app/Http/RequestHandlers/PendingChangesLogPage.php
@@ -24,7 +24,7 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Services\UserService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -60,12 +60,10 @@ class PendingChangesLogPage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$trees = $this->tree_service->titles();
-
$users = ['' => ''];
+
foreach ($this->user_service->all() as $user) {
$user_name = $user->userName();
$users[$user_name] = $user_name;
diff --git a/app/Http/RequestHandlers/PendingChangesRejectChange.php b/app/Http/RequestHandlers/PendingChangesRejectChange.php
index 1c594b9366..4732a7929a 100644
--- a/app/Http/RequestHandlers/PendingChangesRejectChange.php
+++ b/app/Http/RequestHandlers/PendingChangesRejectChange.php
@@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -53,12 +53,8 @@ class PendingChangesRejectChange implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
$change = $request->getAttribute('change');
diff --git a/app/Http/RequestHandlers/PendingChangesRejectRecord.php b/app/Http/RequestHandlers/PendingChangesRejectRecord.php
index bbdfc93fb7..dd412f46ab 100644
--- a/app/Http/RequestHandlers/PendingChangesRejectRecord.php
+++ b/app/Http/RequestHandlers/PendingChangesRejectRecord.php
@@ -24,12 +24,11 @@ use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
/**
@@ -54,10 +53,8 @@ class PendingChangesRejectRecord implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref') ?? '';
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref', '');
$record = Registry::gedcomRecordFactory()->make($xref, $tree);
if ($record instanceof GedcomRecord) {
diff --git a/app/Http/RequestHandlers/PendingChangesRejectTree.php b/app/Http/RequestHandlers/PendingChangesRejectTree.php
index e55b0d7cba..de19547ca2 100644
--- a/app/Http/RequestHandlers/PendingChangesRejectTree.php
+++ b/app/Http/RequestHandlers/PendingChangesRejectTree.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\PendingChangesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function response;
@@ -53,8 +52,7 @@ class PendingChangesRejectTree implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$this->pending_changes_service->rejectTree($tree);
diff --git a/app/Http/RequestHandlers/RedirectDescendencyPhp.php b/app/Http/RequestHandlers/RedirectDescendencyPhp.php
index e81899957d..bd18fb9691 100644
--- a/app/Http/RequestHandlers/RedirectDescendencyPhp.php
+++ b/app/Http/RequestHandlers/RedirectDescendencyPhp.php
@@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException;
-use Fisharebest\Webtrees\Module\AncestorsChartModule;
use Fisharebest\Webtrees\Module\DescendancyChartModule;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ModuleService;
diff --git a/app/Http/RequestHandlers/RedirectFamilyPhp.php b/app/Http/RequestHandlers/RedirectFamilyPhp.php
index bafe1db2ea..188d0e936f 100644
--- a/app/Http/RequestHandlers/RedirectFamilyPhp.php
+++ b/app/Http/RequestHandlers/RedirectFamilyPhp.php
@@ -56,8 +56,8 @@ class RedirectFamilyPhp implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $ged = Validator::queryParams($request)->requiredString('ged');
- $famid = Validator::queryParams($request)->isXref()->requiredString('famid');
+ $ged = Validator::queryParams($request)->string('ged');
+ $famid = Validator::queryParams($request)->isXref()->string('famid');
$tree = $this->tree_service->all()->get($ged);
if ($tree instanceof Tree) {
diff --git a/app/Http/RequestHandlers/RedirectGedRecordPhp.php b/app/Http/RequestHandlers/RedirectGedRecordPhp.php
index a7a6ee541e..8d92abd503 100644
--- a/app/Http/RequestHandlers/RedirectGedRecordPhp.php
+++ b/app/Http/RequestHandlers/RedirectGedRecordPhp.php
@@ -56,8 +56,8 @@ class RedirectGedRecordPhp implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $ged = Validator::queryParams($request)->requiredString('ged');
- $pid = Validator::queryParams($request)->isXref()->requiredString('pid');
+ $ged = Validator::queryParams($request)->string('ged');
+ $pid = Validator::queryParams($request)->isXref()->string('pid');
$tree = $this->tree_service->all()->get($ged);
if ($tree instanceof Tree) {
diff --git a/app/Http/RequestHandlers/RedirectIndividualPhp.php b/app/Http/RequestHandlers/RedirectIndividualPhp.php
index 0c1c96a370..a2d55a6dd9 100644
--- a/app/Http/RequestHandlers/RedirectIndividualPhp.php
+++ b/app/Http/RequestHandlers/RedirectIndividualPhp.php
@@ -56,8 +56,8 @@ class RedirectIndividualPhp implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $ged = Validator::queryParams($request)->requiredString('ged');
- $pid = Validator::queryParams($request)->isXref()->requiredString('pid');
+ $ged = Validator::queryParams($request)->string('ged');
+ $pid = Validator::queryParams($request)->isXref()->string('pid');
$tree = $this->tree_service->all()->get($ged);
if ($tree instanceof Tree) {
diff --git a/app/Http/RequestHandlers/RedirectMediaViewerPhp.php b/app/Http/RequestHandlers/RedirectMediaViewerPhp.php
index 65eb223370..b52d46bac6 100644
--- a/app/Http/RequestHandlers/RedirectMediaViewerPhp.php
+++ b/app/Http/RequestHandlers/RedirectMediaViewerPhp.php
@@ -56,8 +56,8 @@ class RedirectMediaViewerPhp implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $ged = Validator::queryParams($request)->requiredString('ged');
- $mid = Validator::queryParams($request)->isXref()->requiredString('mid');
+ $ged = Validator::queryParams($request)->string('ged');
+ $mid = Validator::queryParams($request)->isXref()->string('mid');
$tree = $this->tree_service->all()->get($ged);
if ($tree instanceof Tree) {
diff --git a/app/Http/RequestHandlers/RedirectModulePhp.php b/app/Http/RequestHandlers/RedirectModulePhp.php
index 87f003fc42..f906f128d7 100644
--- a/app/Http/RequestHandlers/RedirectModulePhp.php
+++ b/app/Http/RequestHandlers/RedirectModulePhp.php
@@ -34,7 +34,6 @@ use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function redirect;
-use function route;
/**
* Redirect URLs created by webtrees 1.x (and PhpGedView).
diff --git a/app/Http/RequestHandlers/RedirectNotePhp.php b/app/Http/RequestHandlers/RedirectNotePhp.php
index 7006e60dcb..8117e9e73c 100644
--- a/app/Http/RequestHandlers/RedirectNotePhp.php
+++ b/app/Http/RequestHandlers/RedirectNotePhp.php
@@ -56,8 +56,8 @@ class RedirectNotePhp implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $ged = Validator::queryParams($request)->requiredString('ged');
- $nid = Validator::queryParams($request)->isXref()->requiredString('nid');
+ $ged = Validator::queryParams($request)->string('ged');
+ $nid = Validator::queryParams($request)->isXref()->string('nid');
$tree = $this->tree_service->all()->get($ged);
if ($tree instanceof Tree) {
diff --git a/app/Http/RequestHandlers/RedirectRelationshipPhp.php b/app/Http/RequestHandlers/RedirectRelationshipPhp.php
index f88324a69c..fcd047bffb 100644
--- a/app/Http/RequestHandlers/RedirectRelationshipPhp.php
+++ b/app/Http/RequestHandlers/RedirectRelationshipPhp.php
@@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException;
-use Fisharebest\Webtrees\Module\PedigreeChartModule;
use Fisharebest\Webtrees\Module\RelationshipsChartModule;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ModuleService;
diff --git a/app/Http/RequestHandlers/RedirectRepositoryPhp.php b/app/Http/RequestHandlers/RedirectRepositoryPhp.php
index be94daeff0..e7e1ae4a59 100644
--- a/app/Http/RequestHandlers/RedirectRepositoryPhp.php
+++ b/app/Http/RequestHandlers/RedirectRepositoryPhp.php
@@ -56,8 +56,8 @@ class RedirectRepositoryPhp implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $ged = Validator::queryParams($request)->requiredString('ged');
- $rid = Validator::queryParams($request)->isXref()->requiredString('rid');
+ $ged = Validator::queryParams($request)->string('ged');
+ $rid = Validator::queryParams($request)->isXref()->string('rid');
$tree = $this->tree_service->all()->get($ged);
if ($tree instanceof Tree) {
diff --git a/app/Http/RequestHandlers/RedirectSourcePhp.php b/app/Http/RequestHandlers/RedirectSourcePhp.php
index e4a7410d41..29b8acfc15 100644
--- a/app/Http/RequestHandlers/RedirectSourcePhp.php
+++ b/app/Http/RequestHandlers/RedirectSourcePhp.php
@@ -56,8 +56,8 @@ class RedirectSourcePhp implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $ged = Validator::queryParams($request)->requiredString('ged');
- $sid = Validator::queryParams($request)->isXref()->requiredString('sid');
+ $ged = Validator::queryParams($request)->string('ged');
+ $sid = Validator::queryParams($request)->isXref()->string('sid');
$tree = $this->tree_service->all()->get($ged);
if ($tree instanceof Tree) {
diff --git a/app/Http/RequestHandlers/RegisterAction.php b/app/Http/RequestHandlers/RegisterAction.php
index 8da9f51591..210771e602 100644
--- a/app/Http/RequestHandlers/RegisterAction.php
+++ b/app/Http/RequestHandlers/RegisterAction.php
@@ -36,6 +36,7 @@ use Fisharebest\Webtrees\Site;
use Fisharebest\Webtrees\SiteUser;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\TreeUser;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface;
@@ -88,7 +89,7 @@ class RegisterAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
$this->checkRegistrationAllowed();
@@ -142,7 +143,7 @@ class RegisterAction implements RequestHandlerInterface
$user->setPreference(UserInterface::PREF_IS_ADMINISTRATOR, '');
$user->setPreference(UserInterface::PREF_TIMESTAMP_ACTIVE, '0');
- $base_url = $request->getAttribute('base_url');
+ $base_url = Validator::attributes($request)->string('base_url');
$reply_to = $tree instanceof Tree ? new TreeUser($tree) : new SiteUser();
$verify_url = route(VerifyEmail::class, [
@@ -258,7 +259,7 @@ class RegisterAction implements RequestHandlerInterface
throw new Exception(I18N::translate('Duplicate email address. A user with that email already exists.'));
}
- $base_url = $request->getAttribute('base_url');
+ $base_url = Validator::attributes($request)->string('base_url');
// No external links
if (preg_match('/(?!' . preg_quote($base_url, '/') . ')(((?:http|https):\/\/)[a-zA-Z0-9.-]+)/', $comments, $match)) {
diff --git a/app/Http/RequestHandlers/RegisterPage.php b/app/Http/RequestHandlers/RegisterPage.php
index c77e2796d9..cffcae3d78 100644
--- a/app/Http/RequestHandlers/RegisterPage.php
+++ b/app/Http/RequestHandlers/RegisterPage.php
@@ -25,6 +25,7 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\CaptchaService;
use Fisharebest\Webtrees\Session;
use Fisharebest\Webtrees\Site;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -59,7 +60,7 @@ class RegisterPage implements RequestHandlerInterface
{
$this->checkRegistrationAllowed();
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
$comments = Session::get('register_comments');
$comments = is_string($comments) ? $comments : '';
diff --git a/app/Http/RequestHandlers/RenumberTreeAction.php b/app/Http/RequestHandlers/RenumberTreeAction.php
index 24c31e094f..df3b1c3186 100644
--- a/app/Http/RequestHandlers/RenumberTreeAction.php
+++ b/app/Http/RequestHandlers/RenumberTreeAction.php
@@ -31,7 +31,7 @@ use Fisharebest\Webtrees\Repository;
use Fisharebest\Webtrees\Services\AdminService;
use Fisharebest\Webtrees\Services\TimeoutService;
use Fisharebest\Webtrees\Source;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Expression;
use Illuminate\Database\Query\JoinClause;
@@ -39,7 +39,6 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -69,9 +68,7 @@ class RenumberTreeAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$xrefs = $this->admin_service->duplicateXrefs($tree);
foreach ($xrefs as $old_xref => $type) {
diff --git a/app/Http/RequestHandlers/RenumberTreePage.php b/app/Http/RequestHandlers/RenumberTreePage.php
index 51929a33d8..291065be54 100644
--- a/app/Http/RequestHandlers/RenumberTreePage.php
+++ b/app/Http/RequestHandlers/RenumberTreePage.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\AdminService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
/**
@@ -56,9 +55,7 @@ class RenumberTreePage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$xrefs = $this->admin_service->duplicateXrefs($tree);
/* I18N: Renumber the records in a family tree */
diff --git a/app/Http/RequestHandlers/ReorderChildrenAction.php b/app/Http/RequestHandlers/ReorderChildrenAction.php
index ae820340af..89eecb1f29 100644
--- a/app/Http/RequestHandlers/ReorderChildrenAction.php
+++ b/app/Http/RequestHandlers/ReorderChildrenAction.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -47,12 +47,8 @@ class ReorderChildrenAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, true);
diff --git a/app/Http/RequestHandlers/ReorderChildrenPage.php b/app/Http/RequestHandlers/ReorderChildrenPage.php
index ec0f2db19f..ff6a7b5b9b 100644
--- a/app/Http/RequestHandlers/ReorderChildrenPage.php
+++ b/app/Http/RequestHandlers/ReorderChildrenPage.php
@@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -45,12 +45,8 @@ class ReorderChildrenPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$family = Registry::familyFactory()->make($xref, $tree);
$family = Auth::checkFamilyAccess($family, true);
diff --git a/app/Http/RequestHandlers/ReorderFamiliesAction.php b/app/Http/RequestHandlers/ReorderFamiliesAction.php
index 1124285437..2efd089871 100644
--- a/app/Http/RequestHandlers/ReorderFamiliesAction.php
+++ b/app/Http/RequestHandlers/ReorderFamiliesAction.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -47,12 +47,8 @@ class ReorderFamiliesAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/ReorderFamiliesPage.php b/app/Http/RequestHandlers/ReorderFamiliesPage.php
index c8efdf3195..63633f7697 100644
--- a/app/Http/RequestHandlers/ReorderFamiliesPage.php
+++ b/app/Http/RequestHandlers/ReorderFamiliesPage.php
@@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -45,16 +45,11 @@ class ReorderFamiliesPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
-
- $title = $individual->fullName() . ' — ' . I18N::translate('Re-order families');
+ $title = $individual->fullName() . ' — ' . I18N::translate('Re-order families');
return $this->viewResponse('edit/reorder-families', [
'famc_facts' => $individual->facts(['FAMC']),
diff --git a/app/Http/RequestHandlers/ReorderMediaAction.php b/app/Http/RequestHandlers/ReorderMediaAction.php
index 5afbfb6cc6..f0546c70a4 100644
--- a/app/Http/RequestHandlers/ReorderMediaAction.php
+++ b/app/Http/RequestHandlers/ReorderMediaAction.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -31,7 +31,6 @@ use function array_search;
use function assert;
use function implode;
use function is_array;
-use function is_string;
use function redirect;
use function uksort;
@@ -47,16 +46,11 @@ class ReorderMediaAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
-
- $params = (array) $request->getParsedBody();
+ $params = (array) $request->getParsedBody();
$order = $params['order'];
assert(is_array($order));
diff --git a/app/Http/RequestHandlers/ReorderMediaPage.php b/app/Http/RequestHandlers/ReorderMediaPage.php
index 01c005a92d..aae6779e23 100644
--- a/app/Http/RequestHandlers/ReorderMediaPage.php
+++ b/app/Http/RequestHandlers/ReorderMediaPage.php
@@ -23,14 +23,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
-
/**
* Reorder the media of an individual.
*/
@@ -45,16 +42,11 @@ class ReorderMediaPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
-
- $title = $individual->fullName() . ' — ' . I18N::translate('Re-order media');
+ $title = $individual->fullName() . ' — ' . I18N::translate('Re-order media');
return $this->viewResponse('edit/reorder-media', [
'individual' => $individual,
diff --git a/app/Http/RequestHandlers/ReorderNamesAction.php b/app/Http/RequestHandlers/ReorderNamesAction.php
index 285e30721b..39623aa5c1 100644
--- a/app/Http/RequestHandlers/ReorderNamesAction.php
+++ b/app/Http/RequestHandlers/ReorderNamesAction.php
@@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -47,12 +47,8 @@ class ReorderNamesAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
diff --git a/app/Http/RequestHandlers/ReorderNamesPage.php b/app/Http/RequestHandlers/ReorderNamesPage.php
index f89815f42e..b795490004 100644
--- a/app/Http/RequestHandlers/ReorderNamesPage.php
+++ b/app/Http/RequestHandlers/ReorderNamesPage.php
@@ -23,14 +23,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
-
/**
* Reorder the names of an individual.
*/
@@ -45,16 +42,11 @@ class ReorderNamesPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$individual = Registry::individualFactory()->make($xref, $tree);
$individual = Auth::checkIndividualAccess($individual, true);
-
- $title = $individual->fullName() . ' — ' . I18N::translate('Re-order names');
+ $title = $individual->fullName() . ' — ' . I18N::translate('Re-order names');
return $this->viewResponse('edit/reorder-names', [
'individual' => $individual,
diff --git a/app/Http/RequestHandlers/ReportGenerate.php b/app/Http/RequestHandlers/ReportGenerate.php
index 0d7a52e457..652cd6ac84 100644
--- a/app/Http/RequestHandlers/ReportGenerate.php
+++ b/app/Http/RequestHandlers/ReportGenerate.php
@@ -21,7 +21,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleReportInterface;
@@ -30,13 +29,12 @@ use Fisharebest\Webtrees\Report\HtmlRenderer;
use Fisharebest\Webtrees\Report\PdfRenderer;
use Fisharebest\Webtrees\Report\ReportParserGenerate;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function addcslashes;
-use function assert;
use function ob_get_clean;
use function ob_start;
use function redirect;
@@ -71,15 +69,12 @@ class ReportGenerate implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$data_filesystem = Registry::filesystem()->data();
- $report = $request->getAttribute('report');
+ $report = Validator::attributes($request)->string('report');
$module = $this->module_service->findByName($report);
if (!$module instanceof ModuleReportInterface) {
diff --git a/app/Http/RequestHandlers/ReportListAction.php b/app/Http/RequestHandlers/ReportListAction.php
index 4e39aae663..cc2fe86b2e 100644
--- a/app/Http/RequestHandlers/ReportListAction.php
+++ b/app/Http/RequestHandlers/ReportListAction.php
@@ -20,15 +20,13 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Module\ModuleReportInterface;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -58,11 +56,8 @@ class ReportListAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/ReportListPage.php b/app/Http/RequestHandlers/ReportListPage.php
index 5c6c834815..d47327e009 100644
--- a/app/Http/RequestHandlers/ReportListPage.php
+++ b/app/Http/RequestHandlers/ReportListPage.php
@@ -19,18 +19,15 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleReportInterface;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Show all available reports.
*/
@@ -59,11 +56,8 @@ class ReportListPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$reports = $this->module_service
->findByComponent(ModuleReportInterface::class, $tree, $user);
diff --git a/app/Http/RequestHandlers/ReportSetupAction.php b/app/Http/RequestHandlers/ReportSetupAction.php
index 33f1f77fbf..2a2342f0a5 100644
--- a/app/Http/RequestHandlers/ReportSetupAction.php
+++ b/app/Http/RequestHandlers/ReportSetupAction.php
@@ -20,16 +20,14 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Module\ModuleReportInterface;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -59,13 +57,10 @@ class ReportSetupAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
-
- $report = $request->getAttribute('report');
+ $report = Validator::attributes($request)->string('report');
$module = $this->module_service->findByName($report);
if (!$module instanceof ModuleReportInterface) {
diff --git a/app/Http/RequestHandlers/ReportSetupPage.php b/app/Http/RequestHandlers/ReportSetupPage.php
index 0890abc838..88d0bb9a23 100644
--- a/app/Http/RequestHandlers/ReportSetupPage.php
+++ b/app/Http/RequestHandlers/ReportSetupPage.php
@@ -20,7 +20,6 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Html;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
@@ -29,12 +28,11 @@ use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Report\ReportParserSetup;
use Fisharebest\Webtrees\Services\LocalizationService;
use Fisharebest\Webtrees\Services\ModuleService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -68,13 +66,10 @@ class ReportSetupPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
-
- $report = $request->getAttribute('report');
+ $report = Validator::attributes($request)->string('report');
$module = $this->module_service->findByName($report);
if (!$module instanceof ModuleReportInterface) {
diff --git a/app/Http/RequestHandlers/RepositoryPage.php b/app/Http/RequestHandlers/RepositoryPage.php
index 886c8b287b..ef919ac534 100644
--- a/app/Http/RequestHandlers/RepositoryPage.php
+++ b/app/Http/RequestHandlers/RepositoryPage.php
@@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -59,19 +57,14 @@ class RepositoryPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$record = Registry::repositoryFactory()->make($xref, $tree);
$record = Auth::checkRepositoryAccess($record, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($record);
-
- if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) {
return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/RobotsTxt.php b/app/Http/RequestHandlers/RobotsTxt.php
index 71f01eed4c..318e4e125d 100644
--- a/app/Http/RequestHandlers/RobotsTxt.php
+++ b/app/Http/RequestHandlers/RobotsTxt.php
@@ -22,6 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\Middleware\BadBotBlocker;
use Fisharebest\Webtrees\Module\SiteMapModule;
use Fisharebest\Webtrees\Services\ModuleService;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -62,7 +63,7 @@ class RobotsTxt implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $base_url = $request->getAttribute('base_url');
+ $base_url = Validator::attributes($request)->string('base_url');
$data = [
'bad_user_agents' => BadBotBlocker::BAD_ROBOTS,
diff --git a/app/Http/RequestHandlers/SearchAdvancedAction.php b/app/Http/RequestHandlers/SearchAdvancedAction.php
index 20c4213f2f..ed36a74803 100644
--- a/app/Http/RequestHandlers/SearchAdvancedAction.php
+++ b/app/Http/RequestHandlers/SearchAdvancedAction.php
@@ -19,13 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Search for genealogy data
*/
@@ -40,11 +38,8 @@ class SearchAdvancedAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $params = (array) $request->getParsedBody();
-
+ $tree = Validator::attributes($request)->tree();
+ $params = (array) $request->getParsedBody();
$fields = $params['fields'] ?? [];
$modifiers = $params['modifiers'] ?? [];
$other_field = $params['other_field'] ?? '';
diff --git a/app/Http/RequestHandlers/SearchAdvancedPage.php b/app/Http/RequestHandlers/SearchAdvancedPage.php
index d563570536..e24a0e7cdd 100644
--- a/app/Http/RequestHandlers/SearchAdvancedPage.php
+++ b/app/Http/RequestHandlers/SearchAdvancedPage.php
@@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\SearchService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -33,7 +33,6 @@ use function array_fill_keys;
use function array_filter;
use function array_key_exists;
use function array_merge;
-use function assert;
use function strtr;
/**
@@ -142,8 +141,7 @@ class SearchAdvancedPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$default_fields = array_fill_keys(self::DEFAULT_ADVANCED_FIELDS, '');
diff --git a/app/Http/RequestHandlers/SearchGeneralAction.php b/app/Http/RequestHandlers/SearchGeneralAction.php
index 3bd0d7af95..c0769ed7a1 100644
--- a/app/Http/RequestHandlers/SearchGeneralAction.php
+++ b/app/Http/RequestHandlers/SearchGeneralAction.php
@@ -19,13 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Search for genealogy data
*/
@@ -40,8 +38,7 @@ class SearchGeneralAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/SearchGeneralPage.php b/app/Http/RequestHandlers/SearchGeneralPage.php
index b5606357e2..b45b5b7381 100644
--- a/app/Http/RequestHandlers/SearchGeneralPage.php
+++ b/app/Http/RequestHandlers/SearchGeneralPage.php
@@ -29,13 +29,13 @@ use Fisharebest\Webtrees\Services\SearchService;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Site;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function preg_replace;
use function redirect;
use function trim;
@@ -74,8 +74,7 @@ class SearchGeneralPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = $request->getQueryParams();
$query = $params['query'] ?? '';
diff --git a/app/Http/RequestHandlers/SearchPhoneticAction.php b/app/Http/RequestHandlers/SearchPhoneticAction.php
index e3f14e4b26..6c0125a169 100644
--- a/app/Http/RequestHandlers/SearchPhoneticAction.php
+++ b/app/Http/RequestHandlers/SearchPhoneticAction.php
@@ -19,13 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Search for genealogy data
*/
@@ -40,8 +38,7 @@ class SearchPhoneticAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/SearchPhoneticPage.php b/app/Http/RequestHandlers/SearchPhoneticPage.php
index 9f34382507..33036a29a3 100644
--- a/app/Http/RequestHandlers/SearchPhoneticPage.php
+++ b/app/Http/RequestHandlers/SearchPhoneticPage.php
@@ -25,13 +25,12 @@ use Fisharebest\Webtrees\Services\SearchService;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Site;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Search for (and optionally replace) genealogy data
*/
@@ -64,8 +63,7 @@ class SearchPhoneticPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = $request->getQueryParams();
$firstname = $params['firstname'] ?? '';
diff --git a/app/Http/RequestHandlers/SearchQuickAction.php b/app/Http/RequestHandlers/SearchQuickAction.php
index 8c2c271dac..dd76d25e58 100644
--- a/app/Http/RequestHandlers/SearchQuickAction.php
+++ b/app/Http/RequestHandlers/SearchQuickAction.php
@@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -44,8 +43,7 @@ class SearchQuickAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/SearchReplaceAction.php b/app/Http/RequestHandlers/SearchReplaceAction.php
index a063590b5f..6221cb3b6c 100644
--- a/app/Http/RequestHandlers/SearchReplaceAction.php
+++ b/app/Http/RequestHandlers/SearchReplaceAction.php
@@ -25,14 +25,12 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\SearchService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Search and replace genealogy data
*/
@@ -61,9 +59,7 @@ class SearchReplaceAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$search = $params['search'] ?? '';
$replace = $params['replace'] ?? '';
diff --git a/app/Http/RequestHandlers/SearchReplacePage.php b/app/Http/RequestHandlers/SearchReplacePage.php
index 6d5e305dd4..62322b4836 100644
--- a/app/Http/RequestHandlers/SearchReplacePage.php
+++ b/app/Http/RequestHandlers/SearchReplacePage.php
@@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Search and replace genealogy data
*/
@@ -44,12 +42,9 @@ class SearchReplacePage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = $request->getQueryParams();
-
- $title = I18N::translate('Search and replace');
+ $title = I18N::translate('Search and replace');
return $this->viewResponse('search-replace-page', [
'context' => $params['context'] ?? 'all',
diff --git a/app/Http/RequestHandlers/SelectDefaultTree.php b/app/Http/RequestHandlers/SelectDefaultTree.php
index 3c68d2a55e..f0062f215d 100644
--- a/app/Http/RequestHandlers/SelectDefaultTree.php
+++ b/app/Http/RequestHandlers/SelectDefaultTree.php
@@ -23,12 +23,11 @@ use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Site;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function redirect;
use function route;
@@ -45,8 +44,7 @@ class SelectDefaultTree implements RequestHandlerInterface, StatusCodeInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
Site::setPreference('DEFAULT_GEDCOM', $tree->name());
diff --git a/app/Http/RequestHandlers/SelectLanguage.php b/app/Http/RequestHandlers/SelectLanguage.php
index af6f88326b..0eaa361266 100644
--- a/app/Http/RequestHandlers/SelectLanguage.php
+++ b/app/Http/RequestHandlers/SelectLanguage.php
@@ -21,6 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Session;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -41,8 +42,7 @@ class SelectLanguage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $user = Validator::attributes($request)->user();
$language = $request->getAttribute('language');
assert(is_string($language));
diff --git a/app/Http/RequestHandlers/SelectNewFact.php b/app/Http/RequestHandlers/SelectNewFact.php
index 449cada6a5..be2590a298 100644
--- a/app/Http/RequestHandlers/SelectNewFact.php
+++ b/app/Http/RequestHandlers/SelectNewFact.php
@@ -19,7 +19,7 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -40,12 +40,8 @@ class SelectNewFact implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
$params = (array) $request->getParsedBody();
$fact = $params['fact'];
diff --git a/app/Http/RequestHandlers/SelectTheme.php b/app/Http/RequestHandlers/SelectTheme.php
index 9ca1b35bd7..88ba9dbf1b 100644
--- a/app/Http/RequestHandlers/SelectTheme.php
+++ b/app/Http/RequestHandlers/SelectTheme.php
@@ -21,6 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Session;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -41,8 +42,7 @@ class SelectTheme implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $user = Validator::attributes($request)->user();
$theme = $request->getAttribute('theme');
assert(is_string($theme));
diff --git a/app/Http/RequestHandlers/SetupWizard.php b/app/Http/RequestHandlers/SetupWizard.php
index 25136cebac..2da653ebc4 100644
--- a/app/Http/RequestHandlers/SetupWizard.php
+++ b/app/Http/RequestHandlers/SetupWizard.php
@@ -35,6 +35,7 @@ use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Services\ServerCheckService;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\Session;
+use Fisharebest\Webtrees\Validator;
use Fisharebest\Webtrees\Webtrees;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
@@ -130,15 +131,14 @@ class SetupWizard implements RequestHandlerInterface
Registry::cache(new CacheFactory());
// 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);
+ $ip_address = Validator::serverParams($request)->string('REMOTE_ADDR', '127.0.0.1');
+ $request = $request->withAttribute('client-ip', $ip_address);
app()->instance(ServerRequestInterface::class, $request);
$data = $this->userData($request);
- $params = (array) $request->getParsedBody();
- $step = (int) ($params['step'] ?? '1');
+ $step = Validator::parsedBody($request)->integer('step', 1);
$locales = $this->module_service
->setupLanguages()
diff --git a/app/Http/RequestHandlers/SourcePage.php b/app/Http/RequestHandlers/SourcePage.php
index 11fcacc09d..4349a22af2 100644
--- a/app/Http/RequestHandlers/SourcePage.php
+++ b/app/Http/RequestHandlers/SourcePage.php
@@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ClipboardService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -59,19 +57,14 @@ class SourcePage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$record = Registry::sourceFactory()->make($xref, $tree);
$record = Auth::checkSourceAccess($record, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($record);
-
- if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) {
return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/SubmissionPage.php b/app/Http/RequestHandlers/SubmissionPage.php
index 3d90a651ea..146b4bff62 100644
--- a/app/Http/RequestHandlers/SubmissionPage.php
+++ b/app/Http/RequestHandlers/SubmissionPage.php
@@ -23,7 +23,7 @@ use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -47,19 +47,14 @@ class SubmissionPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$record = Registry::submissionFactory()->make($xref, $tree);
$record = Auth::checkSubmissionAccess($record, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($record);
-
- if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) {
return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/SubmitterPage.php b/app/Http/RequestHandlers/SubmitterPage.php
index b778e93352..1287b4d758 100644
--- a/app/Http/RequestHandlers/SubmitterPage.php
+++ b/app/Http/RequestHandlers/SubmitterPage.php
@@ -23,14 +23,12 @@ use Fig\Http\Message\StatusCodeInterface;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-use function is_string;
use function redirect;
/**
@@ -47,19 +45,14 @@ class SubmitterPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $xref = $request->getAttribute('xref');
- assert(is_string($xref));
-
+ $tree = Validator::attributes($request)->tree();
+ $xref = Validator::attributes($request)->isXref()->string('xref');
+ $slug = Validator::attributes($request)->string('slug', '');
$record = Registry::submitterFactory()->make($xref, $tree);
$record = Auth::checkSubmitterAccess($record, false);
// Redirect to correct xref/slug
- $slug = Registry::slugFactory()->make($record);
-
- if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) {
+ if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) {
return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY);
}
diff --git a/app/Http/RequestHandlers/SynchronizeTrees.php b/app/Http/RequestHandlers/SynchronizeTrees.php
index df22977b5c..bd1c2fd506 100644
--- a/app/Http/RequestHandlers/SynchronizeTrees.php
+++ b/app/Http/RequestHandlers/SynchronizeTrees.php
@@ -45,6 +45,8 @@ class SynchronizeTrees implements RequestHandlerInterface
{
private AdminService $admin_service;
+ private StreamFactoryInterface $stream_factory;
+
private TimeoutService $timeout_service;
private TreeService $tree_service;
@@ -53,15 +55,18 @@ class SynchronizeTrees implements RequestHandlerInterface
* AdminTreesController constructor.
*
* @param AdminService $admin_service
+ * @param StreamFactoryInterface $stream_factory
* @param TimeoutService $timeout_service
* @param TreeService $tree_service
*/
public function __construct(
AdminService $admin_service,
+ StreamFactoryInterface $stream_factory,
TimeoutService $timeout_service,
TreeService $tree_service
) {
$this->admin_service = $admin_service;
+ $this->stream_factory = $stream_factory;
$this->timeout_service = $timeout_service;
$this->tree_service = $tree_service;
}
@@ -86,7 +91,7 @@ class SynchronizeTrees implements RequestHandlerInterface
if ($tree->getPreference('filemtime') !== $filemtime) {
$resource = $data_filesystem->readStream($gedcom_file);
- $stream = app(StreamFactoryInterface::class)->createStreamFromResource($resource);
+ $stream = $this->stream_factory->createStreamFromResource($resource);
$this->tree_service->importGedcomFile($tree, $stream, $gedcom_file, '');
$stream->close();
$tree->setPreference('filemtime', $filemtime);
diff --git a/app/Http/RequestHandlers/TreePage.php b/app/Http/RequestHandlers/TreePage.php
index ebcb5b81a2..59fac2bda8 100644
--- a/app/Http/RequestHandlers/TreePage.php
+++ b/app/Http/RequestHandlers/TreePage.php
@@ -19,11 +19,10 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Query\Expression;
@@ -31,7 +30,6 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
/**
@@ -58,11 +56,8 @@ class TreePage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$has_blocks = DB::table('block')
->where('gedcom_id', '=', $tree->id())
diff --git a/app/Http/RequestHandlers/TreePageBlock.php b/app/Http/RequestHandlers/TreePageBlock.php
index cf12db600a..56d190fcf4 100644
--- a/app/Http/RequestHandlers/TreePageBlock.php
+++ b/app/Http/RequestHandlers/TreePageBlock.php
@@ -21,13 +21,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
use function view;
@@ -53,9 +52,7 @@ class TreePageBlock implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$block_id = $request->getQueryParams()['block_id'];
$block_id = (int) DB::table('block')
diff --git a/app/Http/RequestHandlers/TreePageBlockEdit.php b/app/Http/RequestHandlers/TreePageBlockEdit.php
index 79cf8086eb..256b796210 100644
--- a/app/Http/RequestHandlers/TreePageBlockEdit.php
+++ b/app/Http/RequestHandlers/TreePageBlockEdit.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
/**
@@ -54,17 +53,17 @@ class TreePageBlockEdit implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
+ $block_id = Validator::attributes($request)->integer('block_id');
- $block_id = (int) $request->getQueryParams()['block_id'];
- $block = $this->home_page_service->treeBlock($request);
- $title = $block->title() . ' — ' . I18N::translate('Preferences');
+ $block = $this->home_page_service->treeBlock($request);
+ $title = $block->title() . ' — ' . I18N::translate('Preferences');
return $this->viewResponse('modules/edit-block-config', [
'block' => $block,
'block_id' => $block_id,
'cancel_url' => route(TreePage::class, ['tree' => $tree->name()]),
+ 'save_url' => route(TreePageBlockUpdate::class, ['tree' => $tree->name(), 'block_id' => $block_id]),
'title' => $title,
'tree' => $tree,
]);
diff --git a/app/Http/RequestHandlers/TreePageBlockUpdate.php b/app/Http/RequestHandlers/TreePageBlockUpdate.php
index 5973f8fda6..0839ddfdcc 100644
--- a/app/Http/RequestHandlers/TreePageBlockUpdate.php
+++ b/app/Http/RequestHandlers/TreePageBlockUpdate.php
@@ -20,12 +20,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -51,11 +50,10 @@ class TreePageBlockUpdate implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
+ $block_id = Validator::attributes($request)->integer('block_id');
- $block = $this->home_page_service->treeBlock($request);
- $block_id = (int) $request->getQueryParams()['block_id'];
+ $block = $this->home_page_service->treeBlock($request);
$block->saveBlockConfiguration($request, $block_id);
diff --git a/app/Http/RequestHandlers/TreePageEdit.php b/app/Http/RequestHandlers/TreePageEdit.php
index 5bfd2ef106..8fd3d0d58b 100644
--- a/app/Http/RequestHandlers/TreePageEdit.php
+++ b/app/Http/RequestHandlers/TreePageEdit.php
@@ -19,17 +19,15 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
/**
@@ -56,11 +54,8 @@ class TreePageEdit implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$main_blocks = $this->home_page_service->treeBlocks($tree, $user, ModuleBlockInterface::MAIN_BLOCKS);
$side_blocks = $this->home_page_service->treeBlocks($tree, $user, ModuleBlockInterface::SIDE_BLOCKS);
diff --git a/app/Http/RequestHandlers/TreePageUpdate.php b/app/Http/RequestHandlers/TreePageUpdate.php
index 1717c9ec3a..03ef0c8c1c 100644
--- a/app/Http/RequestHandlers/TreePageUpdate.php
+++ b/app/Http/RequestHandlers/TreePageUpdate.php
@@ -19,16 +19,15 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -54,11 +53,8 @@ class TreePageUpdate implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/TreePreferencesAction.php b/app/Http/RequestHandlers/TreePreferencesAction.php
index ff2d2fc662..7ba0237a2d 100644
--- a/app/Http/RequestHandlers/TreePreferencesAction.php
+++ b/app/Http/RequestHandlers/TreePreferencesAction.php
@@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use PDOException;
use Psr\Http\Message\ResponseInterface;
@@ -30,7 +30,6 @@ use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function array_unique;
-use function assert;
use function e;
use function implode;
use function preg_replace;
@@ -50,9 +49,7 @@ class TreePreferencesAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
// For backwards compatibility with webtrees 1.x we store the two calendar formats in one variable
diff --git a/app/Http/RequestHandlers/TreePreferencesPage.php b/app/Http/RequestHandlers/TreePreferencesPage.php
index 7448a87e78..1a9fb0226f 100644
--- a/app/Http/RequestHandlers/TreePreferencesPage.php
+++ b/app/Http/RequestHandlers/TreePreferencesPage.php
@@ -32,14 +32,13 @@ use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\SurnameTradition;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function app;
-use function assert;
use function e;
use function explode;
use function in_array;
@@ -76,9 +75,7 @@ class TreePreferencesPage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$data_folder = Registry::filesystem()->dataName();
$french_calendar_start = new Date('22 SEP 1792');
@@ -161,7 +158,7 @@ class TreePreferencesPage implements RequestHandlerInterface
$title = I18N::translate('Preferences') . ' — ' . e($tree->title());
- $base_url = app(ServerRequestInterface::class)->getAttribute('base_url');
+ $base_url = Validator::attributes($request)->string('base_url');
return $this->viewResponse('admin/trees-preferences', [
'all_family_facts' => $all_family_facts,
diff --git a/app/Http/RequestHandlers/TreePrivacyAction.php b/app/Http/RequestHandlers/TreePrivacyAction.php
index 680e26e154..2d599497d1 100644
--- a/app/Http/RequestHandlers/TreePrivacyAction.php
+++ b/app/Http/RequestHandlers/TreePrivacyAction.php
@@ -21,13 +21,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\FlashMessages;
use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function e;
use function redirect;
use function route;
@@ -44,9 +43,7 @@ class TreePrivacyAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
$delete_default_resn_id = $params['delete'] ?? [];
diff --git a/app/Http/RequestHandlers/TreePrivacyPage.php b/app/Http/RequestHandlers/TreePrivacyPage.php
index 5c514bfcaa..6867d0f4dc 100644
--- a/app/Http/RequestHandlers/TreePrivacyPage.php
+++ b/app/Http/RequestHandlers/TreePrivacyPage.php
@@ -27,13 +27,13 @@ use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function array_merge;
-use function assert;
use function e;
use function in_array;
use function uasort;
@@ -61,9 +61,7 @@ class TreePrivacyPage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
+ $tree = Validator::attributes($request)->tree();
$title = e($tree->name()) . ' — ' . I18N::translate('Privacy');
$all_tags = $this->tagsForPrivacy();
$privacy_constants = $this->privacyConstants();
diff --git a/app/Http/RequestHandlers/UnconnectedAction.php b/app/Http/RequestHandlers/UnconnectedAction.php
index 762e9c574c..fef5e37a33 100644
--- a/app/Http/RequestHandlers/UnconnectedAction.php
+++ b/app/Http/RequestHandlers/UnconnectedAction.php
@@ -19,13 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Find groups of unrelated individuals.
*/
@@ -40,8 +38,7 @@ class UnconnectedAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
$params = (array) $request->getParsedBody();
diff --git a/app/Http/RequestHandlers/UnconnectedPage.php b/app/Http/RequestHandlers/UnconnectedPage.php
index 15832fc198..26b680c71d 100644
--- a/app/Http/RequestHandlers/UnconnectedPage.php
+++ b/app/Http/RequestHandlers/UnconnectedPage.php
@@ -24,14 +24,12 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
-use Fisharebest\Webtrees\Tree;
-use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function strtolower;
/**
@@ -48,12 +46,8 @@ class UnconnectedPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof User);
-
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$aliases = (bool) ($request->getQueryParams()['aliases'] ?? false);
$associates = (bool) ($request->getQueryParams()['associates'] ?? false);
diff --git a/app/Http/RequestHandlers/UserEditAction.php b/app/Http/RequestHandlers/UserEditAction.php
index 10792e6483..2341fbe981 100644
--- a/app/Http/RequestHandlers/UserEditAction.php
+++ b/app/Http/RequestHandlers/UserEditAction.php
@@ -29,6 +29,7 @@ use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\SiteUser;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -70,7 +71,7 @@ class UserEditAction implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
+ $user = Validator::attributes($request)->user();
$params = (array) $request->getParsedBody();
@@ -100,7 +101,7 @@ class UserEditAction implements RequestHandlerInterface
if ($approved && $edit_user->getPreference(UserInterface::PREF_IS_ACCOUNT_APPROVED) !== '1') {
I18N::init($edit_user->getPreference(UserInterface::PREF_LANGUAGE));
- $base_url = $request->getAttribute('base_url');
+ $base_url = Validator::attributes($request)->string('base_url');
$this->email_service->send(
new SiteUser(),
diff --git a/app/Http/RequestHandlers/UserListData.php b/app/Http/RequestHandlers/UserListData.php
index a4a3691dc1..ec1307630e 100644
--- a/app/Http/RequestHandlers/UserListData.php
+++ b/app/Http/RequestHandlers/UserListData.php
@@ -26,6 +26,7 @@ use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\DatatablesService;
use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Services\UserService;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\JoinClause;
use Psr\Http\Message\ResponseInterface;
@@ -69,7 +70,7 @@ class UserListData implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $user = $request->getAttribute('user');
+ $user = Validator::attributes($request)->user();
$languages = $this->module_service->findByInterface(ModuleLanguageInterface::class, true)
->mapWithKeys(static function (ModuleLanguageInterface $module): array {
diff --git a/app/Http/RequestHandlers/UserListPage.php b/app/Http/RequestHandlers/UserListPage.php
index 5868b3bf32..caa28c9230 100644
--- a/app/Http/RequestHandlers/UserListPage.php
+++ b/app/Http/RequestHandlers/UserListPage.php
@@ -21,6 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
@@ -41,7 +42,7 @@ class UserListPage implements RequestHandlerInterface
{
$this->layout = 'layouts/administration';
- $user = $request->getAttribute('user');
+ $user = Validator::attributes($request)->user();
$params = $request->getQueryParams();
$filter = $params['filter'] ?? '';
diff --git a/app/Http/RequestHandlers/UserPage.php b/app/Http/RequestHandlers/UserPage.php
index 45ba45323d..b82eebe31b 100644
--- a/app/Http/RequestHandlers/UserPage.php
+++ b/app/Http/RequestHandlers/UserPage.php
@@ -19,12 +19,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Query\Expression;
@@ -32,8 +31,6 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
-
/**
* Show a user's page.
*/
@@ -58,11 +55,8 @@ class UserPage implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$has_blocks = DB::table('block')
->where('user_id', '=', $user->id())
diff --git a/app/Http/RequestHandlers/UserPageBlock.php b/app/Http/RequestHandlers/UserPageBlock.php
index 5ee708e1cb..ad3fa9cbf5 100644
--- a/app/Http/RequestHandlers/UserPageBlock.php
+++ b/app/Http/RequestHandlers/UserPageBlock.php
@@ -21,13 +21,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function response;
use function view;
@@ -54,10 +53,8 @@ class UserPageBlock implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$block_id = $request->getQueryParams()['block_id'];
$block_id = (int) DB::table('block')
diff --git a/app/Http/RequestHandlers/UserPageBlockEdit.php b/app/Http/RequestHandlers/UserPageBlockEdit.php
index 4cb6712e54..d526bd7c82 100644
--- a/app/Http/RequestHandlers/UserPageBlockEdit.php
+++ b/app/Http/RequestHandlers/UserPageBlockEdit.php
@@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
/**
@@ -54,18 +53,18 @@ class UserPageBlockEdit implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
+ $block_id = Validator::attributes($request)->integer('block_id');
- $user = $request->getAttribute('user');
- $block_id = (int) $request->getQueryParams()['block_id'];
- $block = $this->home_page_service->userBlock($request, $user);
- $title = $block->title() . ' — ' . I18N::translate('Preferences');
+ $block = $this->home_page_service->userBlock($request, $user);
+ $title = $block->title() . ' — ' . I18N::translate('Preferences');
return $this->viewResponse('modules/edit-block-config', [
'block' => $block,
'block_id' => $block_id,
'cancel_url' => route(UserPage::class, ['tree' => $tree->name()]),
+ 'save_url' => route(UserPageBlockUpdate::class, ['tree' => $tree->name(), 'block_id' => $block_id]),
'title' => $title,
'tree' => $tree,
]);
diff --git a/app/Http/RequestHandlers/UserPageBlockUpdate.php b/app/Http/RequestHandlers/UserPageBlockUpdate.php
index 8c42280a08..8878cb10f3 100644
--- a/app/Http/RequestHandlers/UserPageBlockUpdate.php
+++ b/app/Http/RequestHandlers/UserPageBlockUpdate.php
@@ -20,12 +20,11 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -51,13 +50,11 @@ class UserPageBlockUpdate implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- $block = $this->home_page_service->userBlock($request, $user);
- $block_id = (int) $request->getQueryParams()['block_id'];
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
+ $block_id = Validator::attributes($request)->integer('block_id');
+ $block = $this->home_page_service->userBlock($request, $user);
$block->saveBlockConfiguration($request, $block_id);
return redirect(route(UserPage::class, ['tree' => $tree->name()]));
diff --git a/app/Http/RequestHandlers/UserPageEdit.php b/app/Http/RequestHandlers/UserPageEdit.php
index f7378c16ae..bf468cb82d 100644
--- a/app/Http/RequestHandlers/UserPageEdit.php
+++ b/app/Http/RequestHandlers/UserPageEdit.php
@@ -19,17 +19,15 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function route;
/**
@@ -56,13 +54,8 @@ class UserPageEdit implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
-
- $user = $request->getAttribute('user');
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$main_blocks = $this->home_page_service->userBlocks($tree, $user, ModuleBlockInterface::MAIN_BLOCKS);
$side_blocks = $this->home_page_service->userBlocks($tree, $user, ModuleBlockInterface::SIDE_BLOCKS);
$all_blocks = $this->home_page_service->availableUserBlocks($tree, $user);
diff --git a/app/Http/RequestHandlers/UserPageUpdate.php b/app/Http/RequestHandlers/UserPageUpdate.php
index 73b30a2ab7..815d4fb1a8 100644
--- a/app/Http/RequestHandlers/UserPageUpdate.php
+++ b/app/Http/RequestHandlers/UserPageUpdate.php
@@ -19,16 +19,15 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\RequestHandlers;
-use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Module\ModuleBlockInterface;
use Fisharebest\Webtrees\Services\HomePageService;
use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Support\Collection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function assert;
use function redirect;
use function route;
@@ -54,11 +53,8 @@ class UserPageUpdate implements RequestHandlerInterface
*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
- $tree = $request->getAttribute('tree');
- assert($tree instanceof Tree);
-
- $user = $request->getAttribute('user');
- assert($user instanceof UserInterface);
+ $tree = Validator::attributes($request)->tree();
+ $user = Validator::attributes($request)->user();
$params = (array) $request->getParsedBody();
$defaults = (bool) ($params['defaults'] ?? false);
diff --git a/app/Http/RequestHandlers/VerifyEmail.php b/app/Http/RequestHandlers/VerifyEmail.php
index f0a9900078..0257842ad1 100644
--- a/app/Http/RequestHandlers/VerifyEmail.php
+++ b/app/Http/RequestHandlers/VerifyEmail.php
@@ -28,6 +28,7 @@ use Fisharebest\Webtrees\Services\EmailService;
use Fisharebest\Webtrees\Services\UserService;
use Fisharebest\Webtrees\SiteUser;
use Fisharebest\Webtrees\User;
+use Fisharebest\Webtrees\Validator;
use Illuminate\Database\Capsule\Manager as DB;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
@@ -66,7 +67,7 @@ class VerifyEmail implements RequestHandlerInterface
public function handle(ServerRequestInterface $request): ResponseInterface
{
$token = $request->getAttribute('token');
- $tree = $request->getAttribute('tree');
+ $tree = Validator::attributes($request)->treeOptional();
$username = $request->getAttribute('username');
$title = I18N::translate('User verification');
@@ -80,7 +81,7 @@ class VerifyEmail implements RequestHandlerInterface
// switch language to administrator settings
I18N::init($administrator->getPreference(UserInterface::PREF_LANGUAGE));
- $base_url = $request->getAttribute('base_url');
+ $base_url = Validator::attributes($request)->string('base_url');
/* I18N: %s is a server name/URL */
$subject = I18N::translate('New user at %s', $base_url);