From 2e1d45a88d2cfd439f4f9e7d92ca9c8cbdb39466 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Tue, 5 Sep 2023 17:33:38 +0200 Subject: Fix parenthesis escaping bug (#5633) fix https://github.com/FreshRSS/FreshRSS/issues/5632 In the SQL search, parentheses should not be escaped. Escaped parenthesis in the SQL search were tolerated by PostgreSQL but not by SQLite. --- app/Models/BooleanSearch.php | 2 +- app/Models/Search.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'app/Models') diff --git a/app/Models/BooleanSearch.php b/app/Models/BooleanSearch.php index 5cfcd9342..0a50464de 100644 --- a/app/Models/BooleanSearch.php +++ b/app/Models/BooleanSearch.php @@ -233,7 +233,7 @@ class FreshRSS_BooleanSearch { private function parseOrSegments(string $input): void { $input = trim($input); - if ($input == '') { + if ($input === '') { return; } $splits = preg_split('/\b(OR)\b/i', $input, -1, PREG_SPLIT_DELIM_CAPTURE) ?: []; diff --git a/app/Models/Search.php b/app/Models/Search.php index 52b000344..404b8bfac 100644 --- a/app/Models/Search.php +++ b/app/Models/Search.php @@ -73,6 +73,7 @@ class FreshRSS_Search { public function __construct(string $input) { $input = self::cleanSearch($input); + $input = self::unescape($input); $this->raw_input = $input; $input = $this->parseNotEntryIds($input); @@ -662,4 +663,9 @@ class FreshRSS_Search { } return trim($input); } + + /** Remove escaping backslashes for parenthesis logic */ + private static function unescape(string $input): string { + return str_replace(['\\(', '\\)'], ['(', ')'], $input); + } } -- cgit v1.2.3