summaryrefslogtreecommitdiff
path: root/app/Http
diff options
context:
space:
mode:
Diffstat (limited to 'app/Http')
-rw-r--r--app/Http/Controllers/Admin/FixLevel0MediaController.php15
-rw-r--r--app/Http/Controllers/Admin/ImportThumbnailsController.php48
-rw-r--r--app/Http/Controllers/Admin/MediaController.php17
-rw-r--r--app/Http/Controllers/AutocompleteController.php4
-rw-r--r--app/Http/Controllers/BranchesController.php2
-rw-r--r--app/Http/Controllers/ListController.php8
-rw-r--r--app/Http/Controllers/PlaceHierarchyController.php4
-rw-r--r--app/Http/RequestHandlers/ExportGedcomClient.php2
-rw-r--r--app/Http/RequestHandlers/UpdatePlacesAction.php4
9 files changed, 51 insertions, 53 deletions
diff --git a/app/Http/Controllers/Admin/FixLevel0MediaController.php b/app/Http/Controllers/Admin/FixLevel0MediaController.php
index ef8290fc3a..924107a404 100644
--- a/app/Http/Controllers/Admin/FixLevel0MediaController.php
+++ b/app/Http/Controllers/Admin/FixLevel0MediaController.php
@@ -24,7 +24,7 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Media;
use Fisharebest\Webtrees\Services\DatatablesService;
-use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\Services\TreeService;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Expression;
use Illuminate\Database\Query\JoinClause;
@@ -41,14 +41,19 @@ class FixLevel0MediaController extends AbstractAdminController
/** @var DatatablesService */
private $datatables_service;
+ /** @var TreeService */
+ private $tree_service;
+
/**
* FixLevel0MediaController constructor.
*
* @param DatatablesService $datatables_service
+ * @param TreeService $tree_service
*/
- public function __construct(DatatablesService $datatables_service)
+ public function __construct(DatatablesService $datatables_service, TreeService $tree_service)
{
$this->datatables_service = $datatables_service;
+ $this->tree_service = $tree_service;
}
/**
@@ -80,7 +85,7 @@ class FixLevel0MediaController extends AbstractAdminController
$obje_xref = $request->getParsedBody()['obje_xref'];
$tree_id = (int) $request->getParsedBody()['tree_id'];
- $tree = Tree::findById($tree_id);
+ $tree = $this->tree_service->find($tree_id);
$individual = Individual::getInstance($indi_xref, $tree);
$media = Media::getInstance($obje_xref, $tree);
@@ -147,8 +152,8 @@ class FixLevel0MediaController extends AbstractAdminController
->orderBy('media.m_id')
->select(['media.m_file', 'media.m_id', 'media.m_gedcom', 'individuals.i_id', 'individuals.i_gedcom']);
- return $this->datatables_service->handleQuery($request, $query, [], [], static function (stdClass $datum) use ($ignore_facts): array {
- $tree = Tree::findById((int) $datum->m_file);
+ return $this->datatables_service->handleQuery($request, $query, [], [], function (stdClass $datum) use ($ignore_facts): array {
+ $tree = $this->tree_service->find((int) $datum->m_file);
$media = Media::getInstance($datum->m_id, $tree, $datum->m_gedcom);
$individual = Individual::getInstance($datum->i_id, $tree, $datum->i_gedcom);
diff --git a/app/Http/Controllers/Admin/ImportThumbnailsController.php b/app/Http/Controllers/Admin/ImportThumbnailsController.php
index f74c1543b1..8141786097 100644
--- a/app/Http/Controllers/Admin/ImportThumbnailsController.php
+++ b/app/Http/Controllers/Admin/ImportThumbnailsController.php
@@ -22,11 +22,9 @@ namespace Fisharebest\Webtrees\Http\Controllers\Admin;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Media;
use Fisharebest\Webtrees\Services\PendingChangesService;
+use Fisharebest\Webtrees\Services\SearchService;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Webtrees;
-use Illuminate\Database\Capsule\Manager as DB;
-use Illuminate\Database\Query\Expression;
-use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
use Intervention\Image\ImageManager;
use League\Flysystem\Filesystem;
@@ -41,21 +39,29 @@ use function assert;
*/
class ImportThumbnailsController extends AbstractAdminController
{
- /** @var TreeService */
- private $tree_service;
-
/** @var PendingChangesService */
private $pending_changes_service;
+ /** @var SearchService */
+ private $search_service;
+
+ /** @var TreeService */
+ private $tree_service;
+
/**
* ImportThumbnailsController constructor.
*
* @param PendingChangesService $pending_changes_service
+ * @param SearchService $search_service
* @param TreeService $tree_service
*/
- public function __construct(PendingChangesService $pending_changes_service, TreeService $tree_service)
- {
+ public function __construct(
+ PendingChangesService $pending_changes_service,
+ SearchService $search_service,
+ TreeService $tree_service
+ ) {
$this->pending_changes_service = $pending_changes_service;
+ $this->search_service = $search_service;
$this->tree_service = $tree_service;
}
@@ -191,7 +197,7 @@ class ImportThumbnailsController extends AbstractAdminController
$original_path = substr($original, strlen(WT_DATA_DIR));
$thumbnail_path = substr($thumbnail, strlen(WT_DATA_DIR));
- $media = $this->findMediaObjectsForMediaFile($original_path);
+ $media = $this->search_service->findMediaObjectsForMediaFile($original_path);
$media_links = array_map(static function (Media $media): string {
return '<a href="' . e($media->url()) . '">' . $media->fullName() . '</a>';
@@ -247,30 +253,6 @@ class ImportThumbnailsController extends AbstractAdminController
}
/**
- * Find the media object that uses a particular media file.
- *
- * @param string $file
- *
- * @return Media[]
- */
- private function findMediaObjectsForMediaFile(string $file): array
- {
- return DB::table('media')
- ->join('media_file', static function (JoinClause $join): void {
- $join
- ->on('media_file.m_file', '=', 'media.m_file')
- ->on('media_file.m_id', '=', 'media.m_id');
- })
- ->join('gedcom_setting', 'media.m_file', '=', 'gedcom_setting.gedcom_id')
- ->where(new Expression('setting_value || multimedia_file_refn'), '=', $file)
- ->select(['media.*'])
- ->distinct()
- ->get()
- ->map(Media::rowMapper())
- ->all();
- }
-
- /**
* Compare two images, and return a quantified difference.
* 0 (different) ... 100 (same)
*
diff --git a/app/Http/Controllers/Admin/MediaController.php b/app/Http/Controllers/Admin/MediaController.php
index 7e2242c4b3..90b712b1dd 100644
--- a/app/Http/Controllers/Admin/MediaController.php
+++ b/app/Http/Controllers/Admin/MediaController.php
@@ -29,6 +29,7 @@ use Fisharebest\Webtrees\Media;
use Fisharebest\Webtrees\MediaFile;
use Fisharebest\Webtrees\Services\DatatablesService;
use Fisharebest\Webtrees\Services\MediaFileService;
+use Fisharebest\Webtrees\Services\TreeService;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Query\Expression;
@@ -74,16 +75,24 @@ class MediaController extends AbstractAdminController
/** @var MediaFileService */
private $media_file_service;
+ /** @var TreeService */
+ private $tree_service;
+
/**
* MediaController constructor.
*
* @param DatatablesService $datatables_service
* @param MediaFileService $media_file_service
+ * @param TreeService $tree_service
*/
- public function __construct(DatatablesService $datatables_service, MediaFileService $media_file_service)
- {
+ public function __construct(
+ DatatablesService $datatables_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;
}
/**
@@ -158,7 +167,9 @@ class MediaController extends AbstractAdminController
// Convert a row from the database into a row for datatables
$callback = function (stdClass $row): array {
/** @var Media $media */
- $media = Media::rowMapper()($row);
+ $tree = $this->tree_service->find((int) $row->m_file);
+ $media = Media::getInstance($row->m_id, $tree, $row->m_gedcom);
+ assert($media instanceof Media);
$media_files = $media->mediaFiles()
->filter(static function (MediaFile $media_file) use ($row): bool {
diff --git a/app/Http/Controllers/AutocompleteController.php b/app/Http/Controllers/AutocompleteController.php
index 8708476b29..62c6b2e2d0 100644
--- a/app/Http/Controllers/AutocompleteController.php
+++ b/app/Http/Controllers/AutocompleteController.php
@@ -137,7 +137,7 @@ class AutocompleteController extends AbstractBaseController
->distinct()
->select(['individuals.*'])
->get()
- ->map(Individual::rowMapper())
+ ->map(Individual::rowMapper($tree))
->filter(GedcomRecord::accessFilter());
$families = DB::table('families')
@@ -153,7 +153,7 @@ class AutocompleteController extends AbstractBaseController
->distinct()
->select(['families.*'])
->get()
- ->map(Family::rowMapper())
+ ->map(Family::rowMapper($tree))
->filter(GedcomRecord::accessFilter());
$pages = new Collection();
diff --git a/app/Http/Controllers/BranchesController.php b/app/Http/Controllers/BranchesController.php
index 0692e90d91..58fdd40ba1 100644
--- a/app/Http/Controllers/BranchesController.php
+++ b/app/Http/Controllers/BranchesController.php
@@ -214,7 +214,7 @@ class BranchesController extends AbstractBaseController
->select(['individuals.*'])
->distinct()
->get()
- ->map(Individual::rowMapper())
+ ->map(Individual::rowMapper($tree))
->filter(GedcomRecord::accessFilter())
->all();
diff --git a/app/Http/Controllers/ListController.php b/app/Http/Controllers/ListController.php
index 3b42c60fd0..1ce9cc1667 100644
--- a/app/Http/Controllers/ListController.php
+++ b/app/Http/Controllers/ListController.php
@@ -616,7 +616,7 @@ class ListController extends AbstractBaseController
return $query
->get()
- ->map(Media::rowMapper())
+ ->map(Media::rowMapper($tree))
->filter(GedcomRecord::accessFilter())
->all();
}
@@ -634,7 +634,7 @@ class ListController extends AbstractBaseController
->where('o_file', '=', $tree->id())
->where('o_type', '=', 'NOTE')
->get()
- ->map(Note::rowMapper())
+ ->map(Note::rowMapper($tree))
->filter(GedcomRecord::accessFilter());
}
@@ -651,7 +651,7 @@ class ListController extends AbstractBaseController
->where('o_file', '=', $tree->id())
->where('o_type', '=', 'REPO')
->get()
- ->map(Repository::rowMapper())
+ ->map(Repository::rowMapper($tree))
->filter(GedcomRecord::accessFilter());
}
@@ -667,7 +667,7 @@ class ListController extends AbstractBaseController
return DB::table('sources')
->where('s_file', '=', $tree->id())
->get()
- ->map(Source::rowMapper())
+ ->map(Source::rowMapper($tree))
->filter(GedcomRecord::accessFilter());
}
diff --git a/app/Http/Controllers/PlaceHierarchyController.php b/app/Http/Controllers/PlaceHierarchyController.php
index d370bca6b4..3d9c6db68e 100644
--- a/app/Http/Controllers/PlaceHierarchyController.php
+++ b/app/Http/Controllers/PlaceHierarchyController.php
@@ -213,7 +213,7 @@ class PlaceHierarchyController extends AbstractBaseController
->select(['individuals.*'])
->distinct()
->get()
- ->map(Individual::rowMapper())
+ ->map(Individual::rowMapper($tree))
->filter(Individual::accessFilter())
->all();
@@ -228,7 +228,7 @@ class PlaceHierarchyController extends AbstractBaseController
->select(['families.*'])
->distinct()
->get()
- ->map(Family::rowMapper())
+ ->map(Family::rowMapper($tree))
->filter(Family::accessFilter())
->all();
diff --git a/app/Http/RequestHandlers/ExportGedcomClient.php b/app/Http/RequestHandlers/ExportGedcomClient.php
index cc1b70510a..615e028001 100644
--- a/app/Http/RequestHandlers/ExportGedcomClient.php
+++ b/app/Http/RequestHandlers/ExportGedcomClient.php
@@ -118,7 +118,7 @@ class ExportGedcomClient implements RequestHandlerInterface
$records = DB::table('media')
->where('m_file', '=', $tree->id())
->get()
- ->map(Media::rowMapper())
+ ->map(Media::rowMapper($tree))
->filter(GedcomRecord::accessFilter());
foreach ($records as $record) {
diff --git a/app/Http/RequestHandlers/UpdatePlacesAction.php b/app/Http/RequestHandlers/UpdatePlacesAction.php
index 1a1499029a..281e3f8574 100644
--- a/app/Http/RequestHandlers/UpdatePlacesAction.php
+++ b/app/Http/RequestHandlers/UpdatePlacesAction.php
@@ -63,14 +63,14 @@ class UpdatePlacesAction implements RequestHandlerInterface
->whereContains('i_gedcom', $search)
->select(['individuals.*'])
->get()
- ->map(Individual::rowMapper());
+ ->map(Individual::rowMapper($tree));
$family_changes = DB::table('families')
->where('f_file', '=', $tree->id())
->whereContains('f_gedcom', $search)
->select(['families.*'])
->get()
- ->map(Family::rowMapper());
+ ->map(Family::rowMapper($tree));
$changes = $individual_changes->merge($family_changes)
->mapWithKeys(static function (GedcomRecord $record) use ($search, $replace): array {