diff options
| author | Greg Roach <greg@subaqua.co.uk> | 2021-07-01 09:29:33 +0100 |
|---|---|---|
| committer | Greg Roach <greg@subaqua.co.uk> | 2021-07-01 09:29:33 +0100 |
| commit | 9ba2a180fdef25874ea60078798a39de3ad54c4c (patch) | |
| tree | 20cc538445a7453654e8fe7571fe1935c6f3fe90 /app | |
| parent | e8efbc6e8651bf86fe0defea9db1b0552d767bf6 (diff) | |
| download | webtrees-9ba2a180fdef25874ea60078798a39de3ad54c4c.tar.gz webtrees-9ba2a180fdef25874ea60078798a39de3ad54c4c.tar.bz2 webtrees-9ba2a180fdef25874ea60078798a39de3ad54c4c.zip | |
Finish refactoring the missing-gedcom-tags code
Diffstat (limited to 'app')
| -rw-r--r-- | app/Http/RequestHandlers/AddChildToFamilyPage.php | 26 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AddChildToIndividualPage.php | 26 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AddParentToIndividualPage.php | 26 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AddSpouseToFamilyPage.php | 26 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AddSpouseToIndividualPage.php | 26 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AddUnlinkedPage.php | 26 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/LinkSpouseToIndividualPage.php | 28 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/ManageMediaData.php | 9 | ||||
| -rw-r--r-- | app/Services/MediaFileService.php | 10 |
9 files changed, 154 insertions, 49 deletions
diff --git a/app/Http/RequestHandlers/AddChildToFamilyPage.php b/app/Http/RequestHandlers/AddChildToFamilyPage.php index ee3dc3645f..7401f7b7f9 100644 --- a/app/Http/RequestHandlers/AddChildToFamilyPage.php +++ b/app/Http/RequestHandlers/AddChildToFamilyPage.php @@ -24,6 +24,7 @@ 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 Psr\Http\Message\ResponseInterface; @@ -41,6 +42,18 @@ class AddChildToFamilyPage implements RequestHandlerInterface { use ViewResponseTrait; + private GedcomEditService $gedcom_edit_service; + + /** + * LinkSpouseToIndividualPage constructor. + * + * @param GedcomEditService $gedcom_edit_service + */ + public function __construct(GedcomEditService $gedcom_edit_service) + { + $this->gedcom_edit_service = $gedcom_edit_service; + } + /** * @param ServerRequestInterface $request * @@ -88,12 +101,13 @@ class AddChildToFamilyPage implements RequestHandlerInterface $title = $titles[$sex] ?? $titles['U']; return $this->viewResponse('edit/new-individual', [ - 'cancel_url' => $family->url(), - 'facts' => $facts, - 'post_url' => route(AddChildToFamilyAction::class, ['tree' => $tree->name(), 'xref' => $xref]), - 'title' => $family->fullName() . ' - ' . $title, - 'tree' => $tree, - 'url' => $request->getQueryParams()['url'] ?? $family->url(), + 'cancel_url' => $family->url(), + 'facts' => $facts, + 'gedcom_edit_service' => $this->gedcom_edit_service, + 'post_url' => route(AddChildToFamilyAction::class, ['tree' => $tree->name(), 'xref' => $xref]), + 'title' => $family->fullName() . ' - ' . $title, + 'tree' => $tree, + 'url' => $request->getQueryParams()['url'] ?? $family->url(), ]); } } diff --git a/app/Http/RequestHandlers/AddChildToIndividualPage.php b/app/Http/RequestHandlers/AddChildToIndividualPage.php index 09e2fa43b5..e970a4e88e 100644 --- a/app/Http/RequestHandlers/AddChildToIndividualPage.php +++ b/app/Http/RequestHandlers/AddChildToIndividualPage.php @@ -24,6 +24,7 @@ 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 Psr\Http\Message\ResponseInterface; @@ -42,6 +43,18 @@ class AddChildToIndividualPage implements RequestHandlerInterface { use ViewResponseTrait; + private GedcomEditService $gedcom_edit_service; + + /** + * LinkSpouseToIndividualPage constructor. + * + * @param GedcomEditService $gedcom_edit_service + */ + public function __construct(GedcomEditService $gedcom_edit_service) + { + $this->gedcom_edit_service = $gedcom_edit_service; + } + /** * @param ServerRequestInterface $request * @@ -92,12 +105,13 @@ class AddChildToIndividualPage implements RequestHandlerInterface $title = I18N::translate('Add a child to create a one-parent family'); return $this->viewResponse('edit/new-individual', [ - 'cancel_url' => $individual->url(), - 'facts' => $facts, - 'post_url' => route(AddChildToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), - 'title' => $individual->fullName() . ' - ' . $title, - 'tree' => $tree, - 'url' => $request->getQueryParams()['url'] ?? $individual->url(), + 'cancel_url' => $individual->url(), + 'facts' => $facts, + 'gedcom_edit_service' => $this->gedcom_edit_service, + 'post_url' => route(AddChildToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), + 'title' => $individual->fullName() . ' - ' . $title, + 'tree' => $tree, + 'url' => $request->getQueryParams()['url'] ?? $individual->url(), ]); } } diff --git a/app/Http/RequestHandlers/AddParentToIndividualPage.php b/app/Http/RequestHandlers/AddParentToIndividualPage.php index 9b8e6d4f28..5c12b98ca5 100644 --- a/app/Http/RequestHandlers/AddParentToIndividualPage.php +++ b/app/Http/RequestHandlers/AddParentToIndividualPage.php @@ -24,6 +24,7 @@ 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 Psr\Http\Message\ResponseInterface; @@ -42,6 +43,18 @@ class AddParentToIndividualPage implements RequestHandlerInterface { use ViewResponseTrait; + private GedcomEditService $gedcom_edit_service; + + /** + * LinkSpouseToIndividualPage constructor. + * + * @param GedcomEditService $gedcom_edit_service + */ + public function __construct(GedcomEditService $gedcom_edit_service) + { + $this->gedcom_edit_service = $gedcom_edit_service; + } + /** * @param ServerRequestInterface $request * @@ -85,12 +98,13 @@ class AddParentToIndividualPage implements RequestHandlerInterface } return $this->viewResponse('edit/new-individual', [ - 'cancel_url' => $individual->url(), - 'facts' => $facts, - 'post_url' => route(AddParentToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), - 'title' => $individual->fullName() . ' - ' . $title, - 'tree' => $tree, - 'url' => $request->getQueryParams()['url'] ?? $individual->url(), + 'cancel_url' => $individual->url(), + 'facts' => $facts, + 'gedcom_edit_service' => $this->gedcom_edit_service, + 'post_url' => route(AddParentToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), + 'title' => $individual->fullName() . ' - ' . $title, + 'tree' => $tree, + 'url' => $request->getQueryParams()['url'] ?? $individual->url(), ]); } } diff --git a/app/Http/RequestHandlers/AddSpouseToFamilyPage.php b/app/Http/RequestHandlers/AddSpouseToFamilyPage.php index 9442e3119e..887834f545 100644 --- a/app/Http/RequestHandlers/AddSpouseToFamilyPage.php +++ b/app/Http/RequestHandlers/AddSpouseToFamilyPage.php @@ -25,6 +25,7 @@ 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 Psr\Http\Message\ResponseInterface; @@ -43,6 +44,18 @@ class AddSpouseToFamilyPage implements RequestHandlerInterface { use ViewResponseTrait; + private GedcomEditService $gedcom_edit_service; + + /** + * LinkSpouseToIndividualPage constructor. + * + * @param GedcomEditService $gedcom_edit_service + */ + public function __construct(GedcomEditService $gedcom_edit_service) + { + $this->gedcom_edit_service = $gedcom_edit_service; + } + /** * @param ServerRequestInterface $request * @@ -93,12 +106,13 @@ class AddSpouseToFamilyPage implements RequestHandlerInterface } return $this->viewResponse('edit/new-individual', [ - 'cancel_url' => $family->url(), - 'facts' => $facts, - 'post_url' => route(AddSpouseToFamilyAction::class, ['tree' => $tree->name(), 'xref' => $xref]), - 'title' => $title, - 'tree' => $tree, - 'url' => $request->getQueryParams()['url'] ?? $family->url(), + 'cancel_url' => $family->url(), + 'facts' => $facts, + 'gedcom_edit_service' => $this->gedcom_edit_service, + 'post_url' => route(AddSpouseToFamilyAction::class, ['tree' => $tree->name(), 'xref' => $xref]), + 'title' => $title, + 'tree' => $tree, + 'url' => $request->getQueryParams()['url'] ?? $family->url(), ]); } } diff --git a/app/Http/RequestHandlers/AddSpouseToIndividualPage.php b/app/Http/RequestHandlers/AddSpouseToIndividualPage.php index f8b853f5e7..a083d0c15d 100644 --- a/app/Http/RequestHandlers/AddSpouseToIndividualPage.php +++ b/app/Http/RequestHandlers/AddSpouseToIndividualPage.php @@ -24,6 +24,7 @@ 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 Psr\Http\Message\ResponseInterface; @@ -49,6 +50,18 @@ class AddSpouseToIndividualPage implements RequestHandlerInterface 'U' => 'U', ]; + private GedcomEditService $gedcom_edit_service; + + /** + * LinkSpouseToIndividualPage constructor. + * + * @param GedcomEditService $gedcom_edit_service + */ + public function __construct(GedcomEditService $gedcom_edit_service) + { + $this->gedcom_edit_service = $gedcom_edit_service; + } + /** * @param ServerRequestInterface $request * @@ -96,12 +109,13 @@ class AddSpouseToIndividualPage implements RequestHandlerInterface $title = $titles[$sex] ?? $titles['U']; return $this->viewResponse('edit/new-individual', [ - 'cancel_url' => $individual->url(), - 'facts' => $facts, - 'post_url' => route(AddSpouseToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), - 'title' => $individual->fullName() . ' - ' . $title, - 'tree' => $tree, - 'url' => $request->getQueryParams()['url'] ?? $individual->url(), + 'cancel_url' => $individual->url(), + 'facts' => $facts, + 'gedcom_edit_service' => $this->gedcom_edit_service, + 'post_url' => route(AddSpouseToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), + 'title' => $individual->fullName() . ' - ' . $title, + 'tree' => $tree, + 'url' => $request->getQueryParams()['url'] ?? $individual->url(), ]); } } diff --git a/app/Http/RequestHandlers/AddUnlinkedPage.php b/app/Http/RequestHandlers/AddUnlinkedPage.php index eefaf3d55c..f4ef36e63f 100644 --- a/app/Http/RequestHandlers/AddUnlinkedPage.php +++ b/app/Http/RequestHandlers/AddUnlinkedPage.php @@ -23,6 +23,7 @@ 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\Tree; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -38,6 +39,18 @@ class AddUnlinkedPage implements RequestHandlerInterface { use ViewResponseTrait; + private GedcomEditService $gedcom_edit_service; + + /** + * LinkSpouseToIndividualPage constructor. + * + * @param GedcomEditService $gedcom_edit_service + */ + public function __construct(GedcomEditService $gedcom_edit_service) + { + $this->gedcom_edit_service = $gedcom_edit_service; + } + /** * @param ServerRequestInterface $request * @@ -63,12 +76,13 @@ class AddUnlinkedPage implements RequestHandlerInterface $cancel_url = route(ManageTrees::class, ['tree' => $tree->name()]); return $this->viewResponse('edit/new-individual', [ - 'cancel_url' => $cancel_url, - 'facts' => $facts, - 'post_url' => route(AddUnlinkedAction::class, ['tree' => $tree->name()]), - 'tree' => $tree, - 'title' => I18N::translate('Create an individual'), - 'url' => $request->getQueryParams()['url'] ?? $cancel_url, + 'cancel_url' => $cancel_url, + 'facts' => $facts, + 'gedcom_edit_service' => $this->gedcom_edit_service, + 'post_url' => route(AddUnlinkedAction::class, ['tree' => $tree->name()]), + 'tree' => $tree, + 'title' => I18N::translate('Create an individual'), + 'url' => $request->getQueryParams()['url'] ?? $cancel_url, ]); } } diff --git a/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php b/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php index 12c7d8a12a..375c753c8e 100644 --- a/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php +++ b/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php @@ -24,6 +24,7 @@ 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\Tree; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -39,6 +40,18 @@ class LinkSpouseToIndividualPage implements RequestHandlerInterface { use ViewResponseTrait; + private GedcomEditService $gedcom_edit_service; + + /** + * LinkSpouseToIndividualPage constructor. + * + * @param GedcomEditService $gedcom_edit_service + */ + public function __construct(GedcomEditService $gedcom_edit_service) + { + $this->gedcom_edit_service = $gedcom_edit_service; + } + /** * @param ServerRequestInterface $request * @@ -72,13 +85,14 @@ class LinkSpouseToIndividualPage implements RequestHandlerInterface } return $this->viewResponse('edit/link-spouse-to-individual', [ - 'post_url' => route(LinkSpouseToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), - 'cancel_url' => $individual->url(), - 'label' => $label, - 'title' => $title, - 'facts' => $facts, - 'tree' => $tree, - 'xref' => $xref, + 'cancel_url' => $individual->url(), + 'facts' => $facts, + 'gedcom_edit_service' => $this->gedcom_edit_service, + 'label' => $label, + 'post_url' => route(LinkSpouseToIndividualAction::class, ['tree' => $tree->name(), 'xref' => $xref]), + 'title' => $title, + 'tree' => $tree, + 'xref' => $xref, ]); } } diff --git a/app/Http/RequestHandlers/ManageMediaData.php b/app/Http/RequestHandlers/ManageMediaData.php index 8295ce1c16..9ae9a3b942 100644 --- a/app/Http/RequestHandlers/ManageMediaData.php +++ b/app/Http/RequestHandlers/ManageMediaData.php @@ -159,15 +159,18 @@ class ManageMediaData implements RequestHandlerInterface ->on('media.m_file', '=', 'media_file.m_file') ->on('media.m_id', '=', 'media_file.m_id'); }) - ->join('gedcom_setting', 'gedcom_id', '=', 'media.m_file') - ->where('setting_name', '=', 'MEDIA_DIRECTORY') + ->leftJoin('gedcom_setting', static function (JoinClause $join): void { + $join + ->on('gedcom_setting.gedcom_id', '=', 'media.m_file') + ->where('setting_name', '=', 'MEDIA_DIRECTORY'); + }) ->where('multimedia_file_refn', 'NOT LIKE', 'http://%') ->where('multimedia_file_refn', 'NOT LIKE', 'https://%') ->select([ 'media.*', 'multimedia_file_refn', 'descriptive_title', - 'setting_value AS media_folder', + new Expression("COALESCE(setting_value, 'media/') AS media_folder"), ]); $query->where(new Expression('setting_value || multimedia_file_refn'), 'LIKE', $media_folder . '%'); diff --git a/app/Services/MediaFileService.php b/app/Services/MediaFileService.php index bccb43cdb0..58115ffd4e 100644 --- a/app/Services/MediaFileService.php +++ b/app/Services/MediaFileService.php @@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Tree; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Expression; +use Illuminate\Database\Query\JoinClause; use Illuminate\Support\Collection; use InvalidArgumentException; use League\Flysystem\Filesystem; @@ -335,11 +336,14 @@ class MediaFileService public function allMediaFolders(FilesystemOperator $data_filesystem): Collection { $db_folders = DB::table('media_file') - ->join('gedcom_setting', 'gedcom_id', '=', 'm_file') - ->where('setting_name', '=', 'MEDIA_DIRECTORY') + ->leftJoin('gedcom_setting', static function (JoinClause $join): void { + $join + ->on('gedcom_setting.gedcom_id', '=', 'media.m_file') + ->where('setting_name', '=', 'MEDIA_DIRECTORY'); + }) ->where('multimedia_file_refn', 'NOT LIKE', 'http://%') ->where('multimedia_file_refn', 'NOT LIKE', 'https://%') - ->select(new Expression('setting_value || multimedia_file_refn AS path')) + ->select(new Expression("COALESCE(setting_value, 'media/') || multimedia_file_refn AS path")) ->pluck('path') ->map(static function (string $path): string { return dirname($path) . '/'; |
