diff options
Diffstat (limited to 'app/Http')
| -rw-r--r-- | app/Http/RequestHandlers/AutoCompleteCitation.php | 2 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AutoCompleteFolder.php | 38 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AutoCompletePlace.php | 2 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AutoCompleteSurname.php | 2 | ||||
| -rw-r--r-- | app/Http/Routes/WebRoutes.php | 8 |
5 files changed, 21 insertions, 31 deletions
diff --git a/app/Http/RequestHandlers/AutoCompleteCitation.php b/app/Http/RequestHandlers/AutoCompleteCitation.php index c8e44197bc..e0b076b05e 100644 --- a/app/Http/RequestHandlers/AutoCompleteCitation.php +++ b/app/Http/RequestHandlers/AutoCompleteCitation.php @@ -42,7 +42,7 @@ class AutoCompleteCitation extends AbstractAutocompleteHandler $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $query = $request->getAttribute('query'); + $query = $request->getQueryParams()['query'] ?? ''; $xref = $request->getQueryParams()['extra'] ?? ''; $source = Registry::sourceFactory()->make($xref, $tree); $source = Auth::checkSourceAccess($source); diff --git a/app/Http/RequestHandlers/AutoCompleteFolder.php b/app/Http/RequestHandlers/AutoCompleteFolder.php index 8b7fb9af07..d95c7063f7 100644 --- a/app/Http/RequestHandlers/AutoCompleteFolder.php +++ b/app/Http/RequestHandlers/AutoCompleteFolder.php @@ -19,12 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\MediaFileService; +use Fisharebest\Webtrees\Services\SearchService; use Fisharebest\Webtrees\Tree; use Illuminate\Support\Collection; -use League\Flysystem\Filesystem; use League\Flysystem\FilesystemException; -use League\Flysystem\StorageAttributes; use Psr\Http\Message\ServerRequestInterface; use function assert; @@ -34,6 +33,15 @@ use function assert; */ class AutoCompleteFolder extends AbstractAutocompleteHandler { + private MediaFileService $media_file_service; + + public function __construct(MediaFileService $media_file_service, SearchService $search_service) + { + parent::__construct($search_service); + + $this->media_file_service = $media_file_service; + } + /** * @param ServerRequestInterface $request * @@ -44,29 +52,11 @@ class AutoCompleteFolder extends AbstractAutocompleteHandler $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $query = $request->getAttribute('query'); - - $media_filesystem = Registry::filesystem()->media($tree); + $query = $request->getQueryParams()['query'] ?? ''; try { - $folders = $media_filesystem->listContents('', Filesystem::LIST_DEEP) - ->filter(fn (StorageAttributes $attributes): bool => $attributes->isDir()) - ->filter(fn (StorageAttributes $attributes): bool => str_contains($attributes->path(), $query)) - ->filter(fn (StorageAttributes $attributes): bool => !in_array('thumbs', explode('/', $attributes->path()), true)) - ->filter(fn (StorageAttributes $attributes): bool => !in_array('watermarks', explode('/', $attributes->path()), true)) - ->map(fn (StorageAttributes $attributes): string => $attributes->path()); - - return new Collection($folders); - - $contents = new Collection($media_filesystem->listContents('', Filesystem::LIST_DEEP)); - - return $contents - ->filter(static function (array $object) use ($query): bool { - return $object['type'] === 'dir' && str_contains($object['path'], $query); - }) - ->values() - ->pluck('path') - ->take(static::LIMIT); + return $this->media_file_service->mediaFolders($tree) + ->filter(fn (string $path): bool => stripos($path, $query) !== false); } catch (FilesystemException $ex) { return new Collection(); } diff --git a/app/Http/RequestHandlers/AutoCompletePlace.php b/app/Http/RequestHandlers/AutoCompletePlace.php index c6ca0c7fa5..54ae2f81f7 100644 --- a/app/Http/RequestHandlers/AutoCompletePlace.php +++ b/app/Http/RequestHandlers/AutoCompletePlace.php @@ -73,7 +73,7 @@ class AutoCompletePlace extends AbstractAutocompleteHandler $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $query = $request->getAttribute('query'); + $query = $request->getQueryParams()['query'] ?? ''; $data = $this->search_service ->searchPlaces($tree, $query, 0, static::LIMIT) diff --git a/app/Http/RequestHandlers/AutoCompleteSurname.php b/app/Http/RequestHandlers/AutoCompleteSurname.php index 477135afe7..f8dd20be3e 100644 --- a/app/Http/RequestHandlers/AutoCompleteSurname.php +++ b/app/Http/RequestHandlers/AutoCompleteSurname.php @@ -40,7 +40,7 @@ class AutoCompleteSurname extends AbstractAutocompleteHandler $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $query = $request->getAttribute('query'); + $query = $request->getQueryParams()['query'] ?? ''; return $this->search_service ->searchSurnames([$tree], [$query], 0, static::LIMIT); diff --git a/app/Http/Routes/WebRoutes.php b/app/Http/Routes/WebRoutes.php index 3e2f2039db..56681f817e 100644 --- a/app/Http/Routes/WebRoutes.php +++ b/app/Http/Routes/WebRoutes.php @@ -528,10 +528,10 @@ class WebRoutes ], ]); - $router->get(AutoCompleteCitation::class, '/autocomplete/citation/{query}'); - $router->get(AutoCompleteFolder::class, '/autocomplete/folder/{query}'); - $router->get(AutoCompletePlace::class, '/autocomplete/place/{query}'); - $router->get(AutoCompleteSurname::class, '/autocomplete/surname/{query}'); + $router->get(AutoCompleteCitation::class, '/autocomplete/citation'); + $router->get(AutoCompleteFolder::class, '/autocomplete/folder'); + $router->get(AutoCompletePlace::class, '/autocomplete/place'); + $router->get(AutoCompleteSurname::class, '/autocomplete/surname'); $router->get(AddChildToFamilyPage::class, '/add-child-to-family/{xref}/{sex}'); $router->post(AddChildToFamilyAction::class, '/add-child-to-family/{xref}'); $router->get(AddNewFact::class, '/add-fact/{xref}/{fact}'); |
