From 4991f2057a6647447a648c5d6743dab00378e98e Mon Sep 17 00:00:00 2001 From: Greg Roach Date: Wed, 9 Mar 2022 12:37:11 +0000 Subject: Fix: #4250 - refactor linked-records and use consistently --- app/Http/RequestHandlers/DeleteRecord.php | 15 ++++++++-- app/Http/RequestHandlers/GedcomRecordPage.php | 40 +++++++++++++++++++++++---- app/Http/RequestHandlers/HeaderPage.php | 3 ++ app/Http/RequestHandlers/LocationPage.php | 26 ++++++++++++++--- app/Http/RequestHandlers/ManageMediaData.php | 37 ++++++++++++++++--------- app/Http/RequestHandlers/MediaPage.php | 28 ++++++++++++------- app/Http/RequestHandlers/MergeFactsAction.php | 13 ++++++++- app/Http/RequestHandlers/NotePage.php | 32 ++++++++++++++------- app/Http/RequestHandlers/RepositoryPage.php | 17 ++++++++---- app/Http/RequestHandlers/SourcePage.php | 23 +++++++++------ app/Http/RequestHandlers/SubmissionPage.php | 4 +++ app/Http/RequestHandlers/SubmitterPage.php | 24 ++++++++++++++-- 12 files changed, 200 insertions(+), 62 deletions(-) (limited to 'app/Http/RequestHandlers') diff --git a/app/Http/RequestHandlers/DeleteRecord.php b/app/Http/RequestHandlers/DeleteRecord.php index 1eda700238..2fc13e983d 100644 --- a/app/Http/RequestHandlers/DeleteRecord.php +++ b/app/Http/RequestHandlers/DeleteRecord.php @@ -26,6 +26,7 @@ use Fisharebest\Webtrees\Gedcom; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -38,10 +39,20 @@ use function response; use function sprintf; /** - * Controller for edit forms and responses. + * Delete a record. */ class DeleteRecord implements RequestHandlerInterface { + private LinkedRecordService $linked_record_service; + + /** + * @param LinkedRecordService $linked_record_service + */ + public function __construct(LinkedRecordService $linked_record_service) + { + $this->linked_record_service = $linked_record_service; + } + /** * Delete a record. * @@ -58,7 +69,7 @@ class DeleteRecord implements RequestHandlerInterface if (Auth::isEditor($record->tree()) && $record->canShow() && $record->canEdit()) { // Delete links to this record - foreach ($record->linkingRecords() as $linker) { + foreach ($this->linked_record_service->allLinkedRecords($record) as $linker) { $old_gedcom = $linker->gedcom(); $new_gedcom = $this->removeLinks($old_gedcom, $record->xref()); if ($old_gedcom !== $new_gedcom) { diff --git a/app/Http/RequestHandlers/GedcomRecordPage.php b/app/Http/RequestHandlers/GedcomRecordPage.php index ec3a98754e..48339033ce 100644 --- a/app/Http/RequestHandlers/GedcomRecordPage.php +++ b/app/Http/RequestHandlers/GedcomRecordPage.php @@ -29,6 +29,8 @@ use Fisharebest\Webtrees\Media; use Fisharebest\Webtrees\Note; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Repository; +use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Source; use Fisharebest\Webtrees\Submission; use Fisharebest\Webtrees\Submitter; @@ -61,6 +63,20 @@ class GedcomRecordPage implements RequestHandlerInterface Submitter::class, ]; + private ClipboardService $clipboard_service; + + private LinkedRecordService $linked_record_service; + + /** + * @param ClipboardService $clipboard_service + * @param LinkedRecordService $linked_record_service + */ + public function __construct(ClipboardService $clipboard_service, LinkedRecordService $linked_record_service) + { + $this->clipboard_service = $clipboard_service; + $this->linked_record_service = $linked_record_service; + } + /** * Show a gedcom record's page. * @@ -80,13 +96,25 @@ class GedcomRecordPage implements RequestHandlerInterface return redirect($record->url()); } + $linked_families = $this->linked_record_service->linkedFamilies($record); + $linked_individuals = $this->linked_record_service->linkedIndividuals($record); + $linked_locations = $this->linked_record_service->linkedLocations($record); + $linked_media = $this->linked_record_service->linkedMedia($record); + $linked_notes = $this->linked_record_service->linkedNotes($record); + $linked_repositories = $this->linked_record_service->linkedRepositories($record); + $linked_sources = $this->linked_record_service->linkedSources($record); + $linked_submitters = $this->linked_record_service->linkedSubmitters($record); + return $this->viewResponse('record-page', [ - 'clipboard_facts' => new Collection(), - 'linked_families' => $record->linkedFamilies($record->tag()), - 'linked_individuals' => $record->linkedIndividuals($record->tag()), - 'linked_media_objects' => $record->linkedMedia($record->tag()), - 'linked_notes' => $record->linkedNotes($record->tag()), - 'linked_sources' => $record->linkedSources($record->tag()), + 'clipboard_facts' => $this->clipboard_service->pastableFacts($record), + 'linked_families' => $linked_families->isEmpty() ? null : $linked_families, + 'linked_individuals' => $linked_individuals->isEmpty() ? null : $linked_individuals, + 'linked_locations' => $linked_locations->isEmpty() ? null : $linked_locations, + 'linked_media_objects' => $linked_media->isEmpty() ? null : $linked_media, + 'linked_notes' => $linked_notes->isEmpty() ? null : $linked_notes, + 'linked_repositories' => $linked_repositories->isEmpty() ? null : $linked_repositories, + 'linked_sources' => $linked_sources->isEmpty() ? null : $linked_sources, + 'linked_submitters' => $linked_submitters->isEmpty() ? null : $linked_submitters, 'record' => $record, 'title' => $record->fullName(), 'tree' => $tree, diff --git a/app/Http/RequestHandlers/HeaderPage.php b/app/Http/RequestHandlers/HeaderPage.php index ae32286eab..2fd17f6154 100644 --- a/app/Http/RequestHandlers/HeaderPage.php +++ b/app/Http/RequestHandlers/HeaderPage.php @@ -23,6 +23,7 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; @@ -62,8 +63,10 @@ class HeaderPage implements RequestHandlerInterface 'clipboard_facts' => new Collection(), 'linked_families' => null, 'linked_individuals' => null, + 'linked_locations' => null, 'linked_media_objects' => null, 'linked_notes' => null, + 'linked_repositories' => null, 'linked_sources' => null, 'meta_description' => '', 'meta_robots' => 'index,follow', diff --git a/app/Http/RequestHandlers/LocationPage.php b/app/Http/RequestHandlers/LocationPage.php index 4f53815e84..d21c000ead 100644 --- a/app/Http/RequestHandlers/LocationPage.php +++ b/app/Http/RequestHandlers/LocationPage.php @@ -23,6 +23,8 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; @@ -40,6 +42,20 @@ class LocationPage implements RequestHandlerInterface { use ViewResponseTrait; + private ClipboardService $clipboard_service; + + private LinkedRecordService $linked_record_service; + + /** + * @param ClipboardService $clipboard_service + * @param LinkedRecordService $linked_record_service + */ + public function __construct(ClipboardService $clipboard_service, LinkedRecordService $linked_record_service) + { + $this->clipboard_service = $clipboard_service; + $this->linked_record_service = $linked_record_service; + } + /** * @param ServerRequestInterface $request * @@ -59,12 +75,14 @@ class LocationPage implements RequestHandlerInterface } return $this->viewResponse('record-page', [ - 'clipboard_facts' => new Collection(), - 'linked_families' => $record->linkedFamilies($record->tag()), - 'linked_individuals' => $record->linkedIndividuals($record->tag()), + 'clipboard_facts' => $this->clipboard_service->pastableFacts($record), + 'linked_families' => $this->linked_record_service->linkedFamilies($record), + 'linked_individuals' => $this->linked_record_service->linkedIndividuals($record), + 'linked_locations' => $this->linked_record_service->linkedLocations($record), 'linked_media_objects' => null, 'linked_notes' => null, - 'linked_sources' => null, + 'linked_repositories' => null, + 'linked_sources' => $this->linked_record_service->linkedSources($record), 'record' => $record, 'title' => $record->fullName(), 'tree' => $tree, diff --git a/app/Http/RequestHandlers/ManageMediaData.php b/app/Http/RequestHandlers/ManageMediaData.php index c48cf0b132..852db8510d 100644 --- a/app/Http/RequestHandlers/ManageMediaData.php +++ b/app/Http/RequestHandlers/ManageMediaData.php @@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Media; use Fisharebest\Webtrees\Mime; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\DatatablesService; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Services\MediaFileService; use Fisharebest\Webtrees\Services\TreeService; use Illuminate\Database\Capsule\Manager as DB; @@ -58,6 +59,8 @@ class ManageMediaData implements RequestHandlerInterface { private DatatablesService $datatables_service; + private LinkedRecordService $linked_record_service; + private MediaFileService $media_file_service; private TreeService $tree_service; @@ -65,18 +68,21 @@ class ManageMediaData implements RequestHandlerInterface /** * MediaController constructor. * - * @param DatatablesService $datatables_service - * @param MediaFileService $media_file_service - * @param TreeService $tree_service + * @param DatatablesService $datatables_service + * @param LinkedRecordService $linked_record_service + * @param MediaFileService $media_file_service + * @param TreeService $tree_service */ public function __construct( DatatablesService $datatables_service, + LinkedRecordService $linked_record_service, MediaFileService $media_file_service, TreeService $tree_service ) { - $this->datatables_service = $datatables_service; - $this->media_file_service = $media_file_service; - $this->tree_service = $tree_service; + $this->datatables_service = $datatables_service; + $this->linked_record_service = $linked_record_service; + $this->media_file_service = $media_file_service; + $this->tree_service = $tree_service; } /** @@ -286,23 +292,28 @@ class ManageMediaData implements RequestHandlerInterface $html .= $element->value($media->getNote(), $media->tree()); $linked = []; - foreach ($media->linkedIndividuals('OBJE') as $link) { + + foreach ($this->linked_record_service->linkedIndividuals($media) as $link) { $linked[] = view('icons/individual') . '' . $link->fullName() . ''; } - foreach ($media->linkedFamilies('OBJE') as $link) { + + foreach ($this->linked_record_service->linkedFamilies($media) as $link) { $linked[] = view('icons/family') . '' . $link->fullName() . ''; } - foreach ($media->linkedSources('OBJE') as $link) { + + foreach ($this->linked_record_service->linkedSources($media) as $link) { $linked[] = view('icons/source') . '' . $link->fullName() . ''; } - foreach ($media->linkedNotes('OBJE') as $link) { + + foreach ($this->linked_record_service->linkedNotes($media) as $link) { $linked[] = view('icons/note') . '' . $link->fullName() . ''; } - foreach ($media->linkedRepositories('OBJE') as $link) { - // Invalid GEDCOM - you cannot link a REPO to an OBJE + + foreach ($this->linked_record_service->linkedRepositories($media) as $link) { $linked[] = view('icons/media') . '' . $link->fullName() . ''; } - foreach ($media->linkedLocations('OBJE') as $link) { + + foreach ($this->linked_record_service->linkedMedia($media) as $link) { $linked[] = view('icons/location') . '' . $link->fullName() . ''; } diff --git a/app/Http/RequestHandlers/MediaPage.php b/app/Http/RequestHandlers/MediaPage.php index 94c63f9e13..a51c4cb434 100644 --- a/app/Http/RequestHandlers/MediaPage.php +++ b/app/Http/RequestHandlers/MediaPage.php @@ -24,13 +24,12 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; 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; /** @@ -42,14 +41,16 @@ class MediaPage implements RequestHandlerInterface private ClipboardService $clipboard_service; + private LinkedRecordService $linked_record_service; + /** - * MediaPage constructor. - * * @param ClipboardService $clipboard_service + * @param LinkedRecordService $linked_record_service */ - public function __construct(ClipboardService $clipboard_service) + public function __construct(ClipboardService $clipboard_service, LinkedRecordService $linked_record_service) { - $this->clipboard_service = $clipboard_service; + $this->clipboard_service = $clipboard_service; + $this->linked_record_service = $linked_record_service; } /** @@ -72,13 +73,20 @@ class MediaPage implements RequestHandlerInterface return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } + $linked_families = $this->linked_record_service->linkedFamilies($record); + $linked_individuals = $this->linked_record_service->linkedIndividuals($record); + $linked_locations = $this->linked_record_service->linkedLocations($record); + $linked_notes = $this->linked_record_service->linkedNotes($record); + $linked_sources = $this->linked_record_service->linkedSources($record); + return $this->viewResponse('media-page', [ 'clipboard_facts' => $this->clipboard_service->pastableFacts($record), 'data_filesystem' => $data_filesystem, - 'linked_families' => $record->linkedFamilies('OBJE'), - 'linked_individuals' => $record->linkedIndividuals('OBJE'), - 'linked_notes' => $record->linkedNotes('OBJE'), - 'linked_sources' => $record->linkedSources('OBJE'), + 'linked_families' => $linked_families, + 'linked_individuals' => $linked_individuals, + 'linked_locations' => $linked_locations->isEmpty() ? null : $linked_locations, + 'linked_notes' => $linked_notes, + 'linked_sources' => $linked_sources, 'meta_description' => '', 'meta_robots' => 'index,follow', 'record' => $record, diff --git a/app/Http/RequestHandlers/MergeFactsAction.php b/app/Http/RequestHandlers/MergeFactsAction.php index 2c02774065..7fbde54bcc 100644 --- a/app/Http/RequestHandlers/MergeFactsAction.php +++ b/app/Http/RequestHandlers/MergeFactsAction.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Expression; @@ -43,6 +44,16 @@ use function str_replace; */ class MergeFactsAction implements RequestHandlerInterface { + private LinkedRecordService $linked_record_service; + + /** + * @param LinkedRecordService $linked_record_service + */ + public function __construct(LinkedRecordService $linked_record_service) + { + $this->linked_record_service = $linked_record_service; + } + /** * @param ServerRequestInterface $request * @@ -87,7 +98,7 @@ class MergeFactsAction implements RequestHandlerInterface } // Update records that link to the one we will be removing. - $linking_records = $record2->linkingRecords(); + $linking_records = $this->linked_record_service->allLinkedRecords($record2); foreach ($linking_records as $record) { if (!$record->isPendingDeletion()) { diff --git a/app/Http/RequestHandlers/NotePage.php b/app/Http/RequestHandlers/NotePage.php index 024eb7a002..ab24048c85 100644 --- a/app/Http/RequestHandlers/NotePage.php +++ b/app/Http/RequestHandlers/NotePage.php @@ -24,13 +24,12 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; 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; /** @@ -42,14 +41,16 @@ class NotePage implements RequestHandlerInterface private ClipboardService $clipboard_service; + private LinkedRecordService $linked_record_service; + /** - * NotePage constructor. - * * @param ClipboardService $clipboard_service + * @param LinkedRecordService $linked_record_service */ - public function __construct(ClipboardService $clipboard_service) + public function __construct(ClipboardService $clipboard_service, LinkedRecordService $linked_record_service) { - $this->clipboard_service = $clipboard_service; + $this->clipboard_service = $clipboard_service; + $this->linked_record_service = $linked_record_service; } /** @@ -70,12 +71,23 @@ class NotePage implements RequestHandlerInterface return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } + $linked_families = $this->linked_record_service->linkedFamilies($record); + $linked_individuals = $this->linked_record_service->linkedIndividuals($record); + $linked_locations = $this->linked_record_service->linkedLocations($record); + $linked_media = $this->linked_record_service->linkedMedia($record); + $linked_repositories = $this->linked_record_service->linkedRepositories($record); + $linked_sources = $this->linked_record_service->linkedSources($record); + $linked_submitters = $this->linked_record_service->linkedSubmitters($record); + return $this->viewResponse('note-page', [ 'clipboard_facts' => $this->clipboard_service->pastableFacts($record), - 'linked_families' => $record->linkedFamilies('NOTE'), - 'linked_individuals' => $record->linkedIndividuals('NOTE'), - 'linked_media_objects' => $record->linkedMedia('NOTE'), - 'linked_sources' => $record->linkedSources('NOTE'), + 'linked_families' => $linked_families, + 'linked_individuals' => $linked_individuals, + 'linked_locations' => $linked_locations->isEmpty() ? null : $linked_locations, + 'linked_media_objects' => $linked_media, + 'linked_repositories' => $linked_repositories, + 'linked_sources' => $linked_sources, + 'linked_submitters' => $linked_submitters, 'meta_description' => '', 'meta_robots' => 'index,follow', 'record' => $record, diff --git a/app/Http/RequestHandlers/RepositoryPage.php b/app/Http/RequestHandlers/RepositoryPage.php index ef919ac534..6e69912b20 100644 --- a/app/Http/RequestHandlers/RepositoryPage.php +++ b/app/Http/RequestHandlers/RepositoryPage.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -40,14 +41,16 @@ class RepositoryPage implements RequestHandlerInterface private ClipboardService $clipboard_service; + private LinkedRecordService $linked_record_service; + /** - * RepositoryPage constructor. - * * @param ClipboardService $clipboard_service + * @param LinkedRecordService $linked_record_service */ - public function __construct(ClipboardService $clipboard_service) + public function __construct(ClipboardService $clipboard_service, LinkedRecordService $linked_record_service) { - $this->clipboard_service = $clipboard_service; + $this->clipboard_service = $clipboard_service; + $this->linked_record_service = $linked_record_service; } /** @@ -68,13 +71,17 @@ class RepositoryPage implements RequestHandlerInterface return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } + $linked_sources = $this->linked_record_service->linkedSources($record); + return $this->viewResponse('record-page', [ 'clipboard_facts' => $this->clipboard_service->pastableFacts($record), 'linked_families' => null, 'linked_individuals' => null, + 'linked_locations' => null, 'linked_media_objects' => null, 'linked_notes' => null, - 'linked_sources' => $record->linkedSources('REPO'), + 'linked_repositories' => null, + 'linked_sources' => $linked_sources, 'meta_description' => '', 'meta_robots' => 'index,follow', 'record' => $record, diff --git a/app/Http/RequestHandlers/SourcePage.php b/app/Http/RequestHandlers/SourcePage.php index 4349a22af2..899cca5026 100644 --- a/app/Http/RequestHandlers/SourcePage.php +++ b/app/Http/RequestHandlers/SourcePage.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -40,14 +41,16 @@ class SourcePage implements RequestHandlerInterface private ClipboardService $clipboard_service; + private LinkedRecordService $linked_record_service; + /** - * SourcePage constructor. - * * @param ClipboardService $clipboard_service + * @param LinkedRecordService $linked_record_service */ - public function __construct(ClipboardService $clipboard_service) + public function __construct(ClipboardService $clipboard_service, LinkedRecordService $linked_record_service) { - $this->clipboard_service = $clipboard_service; + $this->clipboard_service = $clipboard_service; + $this->linked_record_service = $linked_record_service; } /** @@ -68,12 +71,16 @@ class SourcePage implements RequestHandlerInterface return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } + $linked_locations = $this->linked_record_service->linkedLocations($record); + return $this->viewResponse('record-page', [ 'clipboard_facts' => $this->clipboard_service->pastableFacts($record), - 'linked_families' => $record->linkedFamilies('SOUR'), - 'linked_individuals' => $record->linkedIndividuals('SOUR'), - 'linked_media_objects' => $record->linkedMedia('SOUR'), - 'linked_notes' => $record->linkedNotes('SOUR'), + 'linked_families' => $this->linked_record_service->linkedFamilies($record), + 'linked_individuals' => $this->linked_record_service->linkedIndividuals($record), + 'linked_locations' => $linked_locations->isEmpty() ? null : $linked_locations, + 'linked_media_objects' => $this->linked_record_service->linkedMedia($record), + 'linked_notes' => $this->linked_record_service->linkedNotes($record), + 'linked_repositories' => null, 'linked_sources' => null, 'meta_description' => '', 'meta_robots' => 'index,follow', diff --git a/app/Http/RequestHandlers/SubmissionPage.php b/app/Http/RequestHandlers/SubmissionPage.php index 146b4bff62..5eb7685660 100644 --- a/app/Http/RequestHandlers/SubmissionPage.php +++ b/app/Http/RequestHandlers/SubmissionPage.php @@ -23,6 +23,8 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; @@ -62,8 +64,10 @@ class SubmissionPage implements RequestHandlerInterface 'clipboard_facts' => new Collection(), 'linked_families' => null, 'linked_individuals' => null, + 'linked_locations' => null, 'linked_media_objects' => null, 'linked_notes' => null, + 'linked_repositories' => null, 'linked_sources' => null, 'meta_description' => '', 'meta_robots' => 'index,follow', diff --git a/app/Http/RequestHandlers/SubmitterPage.php b/app/Http/RequestHandlers/SubmitterPage.php index 1287b4d758..7f674c056d 100644 --- a/app/Http/RequestHandlers/SubmitterPage.php +++ b/app/Http/RequestHandlers/SubmitterPage.php @@ -23,6 +23,8 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\ClipboardService; +use Fisharebest\Webtrees\Services\LinkedRecordService; use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; @@ -38,6 +40,20 @@ class SubmitterPage implements RequestHandlerInterface { use ViewResponseTrait; + private ClipboardService $clipboard_service; + + private LinkedRecordService $linked_record_service; + + /** + * @param ClipboardService $clipboard_service + * @param LinkedRecordService $linked_record_service + */ + public function __construct(ClipboardService $clipboard_service, LinkedRecordService $linked_record_service) + { + $this->clipboard_service = $clipboard_service; + $this->linked_record_service = $linked_record_service; + } + /** * @param ServerRequestInterface $request * @@ -57,11 +73,13 @@ class SubmitterPage implements RequestHandlerInterface } return $this->viewResponse('record-page', [ - 'clipboard_facts' => new Collection(), - 'linked_families' => $record->linkedFamilies('SUBM'), - 'linked_individuals' => $record->linkedIndividuals('SUBM'), + 'clipboard_facts' => $this->clipboard_service->pastableFacts($record), + 'linked_families' => $this->linked_record_service->linkedFamilies($record), + 'linked_individuals' => $this->linked_record_service->linkedIndividuals($record), + 'linked_locations' => null, 'linked_media_objects' => null, 'linked_notes' => null, + 'linked_repositories' => null, 'linked_sources' => null, 'meta_description' => '', 'meta_robots' => 'index,follow', -- cgit v1.3