diff options
Diffstat (limited to 'app/Http')
| -rw-r--r-- | app/Http/Controllers/Admin/FixLevel0MediaController.php | 15 | ||||
| -rw-r--r-- | app/Http/Controllers/Admin/ImportThumbnailsController.php | 48 | ||||
| -rw-r--r-- | app/Http/Controllers/Admin/MediaController.php | 17 | ||||
| -rw-r--r-- | app/Http/Controllers/AutocompleteController.php | 4 | ||||
| -rw-r--r-- | app/Http/Controllers/BranchesController.php | 2 | ||||
| -rw-r--r-- | app/Http/Controllers/ListController.php | 8 | ||||
| -rw-r--r-- | app/Http/Controllers/PlaceHierarchyController.php | 4 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/ExportGedcomClient.php | 2 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/UpdatePlacesAction.php | 4 |
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 { |
