From f6024a895c2066f3b1c6231cabd9251834ebd6af Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 14 Dec 2021 17:49:48 +0100 Subject: [PATCH] also use case sensitive like when searching in a folder this case was missed from https://github.com/nextcloud/server/pull/29080 Signed-off-by: Robin Appelman --- lib/private/Files/Cache/QuerySearchHelper.php | 6 ++++-- lib/private/Files/Node/Folder.php | 2 +- lib/public/Files/Search/ISearchComparison.php | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/private/Files/Cache/QuerySearchHelper.php b/lib/private/Files/Cache/QuerySearchHelper.php index 16b15aa6b3b3a..48e916c52aadf 100644 --- a/lib/private/Files/Cache/QuerySearchHelper.php +++ b/lib/private/Files/Cache/QuerySearchHelper.php @@ -39,6 +39,7 @@ class QuerySearchHelper { protected static $searchOperatorMap = [ ISearchComparison::COMPARE_LIKE => 'iLike', + ISearchComparison::COMPARE_LIKE_CASE_SENSITIVE => 'like', ISearchComparison::COMPARE_EQUAL => 'eq', ISearchComparison::COMPARE_GREATER_THAN => 'gt', ISearchComparison::COMPARE_GREATER_THAN_EQUAL => 'gte', @@ -48,6 +49,7 @@ class QuerySearchHelper { protected static $searchOperatorNegativeMap = [ ISearchComparison::COMPARE_LIKE => 'notLike', + ISearchComparison::COMPARE_LIKE_CASE_SENSITIVE => 'notLike', ISearchComparison::COMPARE_EQUAL => 'neq', ISearchComparison::COMPARE_GREATER_THAN => 'lte', ISearchComparison::COMPARE_GREATER_THAN_EQUAL => 'lt', @@ -187,8 +189,8 @@ private function validateComparison(ISearchComparison $operator) { $comparisons = [ 'mimetype' => ['eq', 'like'], 'mtime' => ['eq', 'gt', 'lt', 'gte', 'lte'], - 'name' => ['eq', 'like'], - 'path' => ['eq', 'like'], + 'name' => ['eq', 'like', 'clike'], + 'path' => ['eq', 'like', 'clike'], 'size' => ['eq', 'gt', 'lt', 'gte', 'lte'], 'tagname' => ['eq', 'like'], 'favorite' => ['eq'], diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php index 24ee7bbfb8a65..98a1a7d14cd43 100644 --- a/lib/private/Files/Node/Folder.php +++ b/lib/private/Files/Node/Folder.php @@ -263,7 +263,7 @@ public function search($query) { $subQueryLimit = $query->getLimit() > 0 ? $query->getLimit() + $query->getOffset() : 0; $rootQuery = new SearchQuery( new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_AND, [ - new SearchComparison(ISearchComparison::COMPARE_LIKE, 'path', $internalPath . '%'), + new SearchComparison(ISearchComparison::COMPARE_LIKE_CASE_SENSITIVE, 'path', $internalPath . '%'), $query->getSearchOperation(), ] ), diff --git a/lib/public/Files/Search/ISearchComparison.php b/lib/public/Files/Search/ISearchComparison.php index 6fb09433c9292..2094362429a36 100644 --- a/lib/public/Files/Search/ISearchComparison.php +++ b/lib/public/Files/Search/ISearchComparison.php @@ -34,6 +34,7 @@ interface ISearchComparison extends ISearchOperator { public const COMPARE_LESS_THAN = 'lt'; public const COMPARE_LESS_THAN_EQUAL = 'lte'; public const COMPARE_LIKE = 'like'; + public const COMPARE_LIKE_CASE_SENSITIVE = 'clike'; /** * Get the type of comparison, one of the ISearchComparison::COMPARE_* constants