diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-01-15 10:10:04 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-01-15 10:10:11 +0000 |
| commit | e778de49b6f9ff082806486da8ac3111c4ef86bd (patch) | |
| tree | 1d61017571c07dbac66015eab5e3c6279ec2205f | |
| parent | ff5d6496b3dbfb693ee8dd7d5d34621bade6b935 (diff) | |
| download | webtrees-e778de49b6f9ff082806486da8ac3111c4ef86bd.tar.gz webtrees-e778de49b6f9ff082806486da8ac3111c4ef86bd.tar.bz2 webtrees-e778de49b6f9ff082806486da8ac3111c4ef86bd.zip | |
Use Collection class
| -rw-r--r-- | app/Http/Controllers/AdminMediaController.php | 40 | ||||
| -rw-r--r-- | app/Media.php | 16 |
2 files changed, 31 insertions, 25 deletions
diff --git a/app/Http/Controllers/AdminMediaController.php b/app/Http/Controllers/AdminMediaController.php index 3888fd6a4f..0aa494a73f 100644 --- a/app/Http/Controllers/AdminMediaController.php +++ b/app/Http/Controllers/AdminMediaController.php @@ -149,7 +149,7 @@ class AdminMediaController extends AbstractBaseController case 'local': // Filtered rows $SELECT1 = - "SELECT SQL_CALC_FOUND_ROWS TRIM(LEADING :media_path_1 FROM multimedia_file_refn) AS media_path, m_id AS xref, descriptive_title, m_file AS gedcom_id, m_gedcom AS gedcom" . + "SELECT SQL_CALC_FOUND_ROWS TRIM(LEADING :media_path_1 FROM multimedia_file_refn) AS media_path, m_id, descriptive_title, m_file, m_gedcom, multimedia_file_refn" . " FROM `##media`" . " JOIN `##media_file` USING (m_file, m_id)" . " JOIN `##gedcom_setting` ON (m_file = gedcom_id AND setting_name = 'MEDIA_DIRECTORY')" . @@ -225,14 +225,21 @@ class AdminMediaController extends AbstractBaseController $data = []; foreach ($rows as $row) { - $media = Media::getInstance($row->xref, Tree::findById((int) $row->gedcom_id), $row->gedcom); - $media_files = $media->mediaFiles(); - $media_files = array_map(function (MediaFile $media_file): string { - return $media_file->displayImage(150, 150, '', []); - }, $media_files); - $data[] = [ + /** @var Media $media */ + $media = Media::rowMapper()($row); + + $media_files = $media->mediaFiles() + ->filter(function(MediaFile $media_file) use ($row): bool { + return $media_file->filename() == $row->multimedia_file_refn; + }) + ->map(function (MediaFile $media_file): string { + return $media_file->displayImage(150, 150, '', []); + }) + ->implode(''); + + $data[] = [ $this->mediaFileInfo($media_folder, $media_path, $row->media_path), - implode('', $media_files), + $media_files, $this->mediaObjectInfo($media), ]; } @@ -253,16 +260,17 @@ class AdminMediaController extends AbstractBaseController ->select(['media.*', 'media_file.multimedia_file_refn', 'media_file.descriptive_title']); return $datatables_service->handle($request, $query, ['multimedia_file_refn', 'descriptive_title'], function (stdClass $row): array { + /** @var Media $media */ $media = Media::rowMapper()($row); - $media_files = $media->mediaFiles(); - $media_files = array_filter($media_files, function(MediaFile $media_file) use ($row): bool { - return $media_file->filename() == $row->multimedia_file_refn; - }); - $media_files = array_map(function (MediaFile $media_file): string { - return $media_file->displayImage(150, 150, '', []); - }, $media_files); - $media_files = implode('', $media_files); + $media_files = $media->mediaFiles() + ->filter(function(MediaFile $media_file) use ($row): bool { + return $media_file->filename() == $row->multimedia_file_refn; + }) + ->map(function (MediaFile $media_file): string { + return $media_file->displayImage(150, 150, '', []); + }) + ->implode(''); return [ $row->multimedia_file_refn, diff --git a/app/Media.php b/app/Media.php index 8033e29648..42739dc95c 100644 --- a/app/Media.php +++ b/app/Media.php @@ -20,6 +20,7 @@ namespace Fisharebest\Webtrees; use Closure; use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; use Illuminate\Database\Capsule\Manager as DB; +use Illuminate\Support\Collection; use stdClass; /** @@ -112,17 +113,14 @@ class Media extends GedcomRecord /** * Get the media files for this media object * - * @return MediaFile[] + * @return Collection|MediaFile[] */ - public function mediaFiles(): array + public function mediaFiles(): Collection { - $media_files = []; - - foreach ($this->facts(['FILE']) as $fact) { - $media_files[] = new MediaFile($fact->gedcom(), $this); - } - - return $media_files; + return (new Collection($this->facts(['FILE']))) + ->map(function (Fact $fact): MediaFile { + return new MediaFile($fact->gedcom(), $this); + }); } /** |
