From 9f5da17e1d9406d87e0f0b2dd82532377def401f Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Tue, 14 Nov 2023 15:17:15 +0100 Subject: fix: adopt search to NC 28 filters Signed-off-by: Sean Molenaar --- CHANGELOG.md | 1 + lib/Search/FeedSearchProvider.php | 7 ++++++- lib/Search/FolderSearchProvider.php | 7 ++++++- lib/Search/ItemSearchProvider.php | 12 +++++++++--- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09a91903d..6765f1779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is mostly based on [Keep a Changelog](https://keepachangelog.com/en/1 ### Changed ### Fixed +- Fix search support for Nextcloud 28 # Releases ## [25.0.0-alpha2] - 2023-11-08 diff --git a/lib/Search/FeedSearchProvider.php b/lib/Search/FeedSearchProvider.php index 890692efc..65b2059c5 100644 --- a/lib/Search/FeedSearchProvider.php +++ b/lib/Search/FeedSearchProvider.php @@ -59,7 +59,12 @@ class FeedSearchProvider implements IProvider public function search(IUser $user, ISearchQuery $query): SearchResult { $list = []; - $term = strtolower($query->getTerm()); + if (method_exists($query, 'getFilter')) { + $term = $query->getFilter('term')?->get() ?? ''; + } else { + $term = $query->getTerm(); + } + $term = strtolower($term); foreach ($this->service->findAllForUser($user->getUID()) as $feed) { if (strpos(strtolower($feed->getTitle()), $term) === false) { diff --git a/lib/Search/FolderSearchProvider.php b/lib/Search/FolderSearchProvider.php index 315ac016f..3997eba36 100644 --- a/lib/Search/FolderSearchProvider.php +++ b/lib/Search/FolderSearchProvider.php @@ -60,7 +60,12 @@ class FolderSearchProvider implements IProvider public function search(IUser $user, ISearchQuery $query): SearchResult { $list = []; - $term = strtolower($query->getTerm()); + if (method_exists($query, 'getFilter')) { + $term = $query->getFilter('term')?->get() ?? ''; + } else { + $term = $query->getTerm(); + } + $term = strtolower($term); foreach ($this->service->findAllForUser($user->getUID()) as $folder) { if (strpos(strtolower($folder->getName()), $term) === false) { diff --git a/lib/Search/ItemSearchProvider.php b/lib/Search/ItemSearchProvider.php index 1c0cb4a06..acc0bcbad 100644 --- a/lib/Search/ItemSearchProvider.php +++ b/lib/Search/ItemSearchProvider.php @@ -60,13 +60,13 @@ class ItemSearchProvider implements IProvider private function stripTruncate(string $string, int $length = 50): string { $string = strip_tags(trim($string)); - + if (strlen($string) > $length) { $string = wordwrap($string, $length); $string = explode("\n", $string, 2); $string = $string[0]; } - + return $string; } @@ -76,13 +76,19 @@ class ItemSearchProvider implements IProvider $offset = (int) ($query->getCursor() ?? 0); $limit = $query->getLimit(); + if (method_exists($query, 'getFilter')) { + $term = $query->getFilter('term')?->get() ?? ''; + } else { + $term = $query->getTerm(); + } + $search_result = $this->service->findAllWithFilters( $user->getUID(), ListType::ALL_ITEMS, $limit, $offset, false, - [$query->getTerm()] + [$term] ); $last = end($search_result); -- cgit v1.2.3