. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Tree; use Illuminate\Support\Collection; use Psr\Http\Message\ServerRequestInterface; use function assert; /** * Autocomplete handler for media folders */ class AutoCompleteFolder extends AbstractAutocompleteHandler { protected function search(ServerRequestInterface $request): Collection { $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); $query = $request->getAttribute('query'); $media_filesystem = Registry::filesystem()->media($tree); $contents = new Collection($media_filesystem->listContents('', true)); 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); } }