summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGreg Roach <greg@subaqua.co.uk>2021-07-01 09:29:33 +0100
committerGreg Roach <greg@subaqua.co.uk>2021-07-01 09:29:33 +0100
commit9ba2a180fdef25874ea60078798a39de3ad54c4c (patch)
tree20cc538445a7453654e8fe7571fe1935c6f3fe90 /app
parente8efbc6e8651bf86fe0defea9db1b0552d767bf6 (diff)
downloadwebtrees-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.php26
-rw-r--r--app/Http/RequestHandlers/AddChildToIndividualPage.php26
-rw-r--r--app/Http/RequestHandlers/AddParentToIndividualPage.php26
-rw-r--r--app/Http/RequestHandlers/AddSpouseToFamilyPage.php26
-rw-r--r--app/Http/RequestHandlers/AddSpouseToIndividualPage.php26
-rw-r--r--app/Http/RequestHandlers/AddUnlinkedPage.php26
-rw-r--r--app/Http/RequestHandlers/LinkSpouseToIndividualPage.php28
-rw-r--r--app/Http/RequestHandlers/ManageMediaData.php9
-rw-r--r--app/Services/MediaFileService.php10
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) . '/';