mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-02-28 20:47:22 -05:00
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.
This commit is contained in:
committed by
GitHub
parent
1c7c1016f4
commit
2e1d45a88d
@@ -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) ?: [];
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,8 +330,8 @@ class SearchTest extends PHPUnit\Framework\TestCase {
|
||||
[
|
||||
'intitle:"\\(test\\)"',
|
||||
'(e.title LIKE ? )',
|
||||
['%\\(test\\)%'],
|
||||
]
|
||||
['%(test)%'],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user