summaryrefslogtreecommitdiff
path: root/app/Http
diff options
context:
space:
mode:
Diffstat (limited to 'app/Http')
-rw-r--r--app/Http/RequestHandlers/AutoCompleteCitation.php2
-rw-r--r--app/Http/RequestHandlers/AutoCompleteFolder.php38
-rw-r--r--app/Http/RequestHandlers/AutoCompletePlace.php2
-rw-r--r--app/Http/RequestHandlers/AutoCompleteSurname.php2
-rw-r--r--app/Http/Routes/WebRoutes.php8
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}');