|
@@ -432,8 +432,28 @@ class FreshRSS_BooleanSearch implements \Stringable {
|
|
|
return $this->operator;
|
|
return $this->operator;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /** @param FreshRSS_BooleanSearch|FreshRSS_Search $search */
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Wrap the existing searches in a single BooleanSearch if needed,
|
|
|
|
|
+ * so that another search can be added as an additional restriction (AND).
|
|
|
|
|
+ */
|
|
|
|
|
+ private function wrapSearches(): void {
|
|
|
|
|
+ if (count($this->searches) > 1 || (count($this->searches) > 0 && $this->searches[0] instanceof FreshRSS_Search)) {
|
|
|
|
|
+ $wrap = new FreshRSS_BooleanSearch('');
|
|
|
|
|
+ foreach ($this->searches as $existingSearch) {
|
|
|
|
|
+ $wrap->add($existingSearch);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (count($wrap->searches) > 0) {
|
|
|
|
|
+ $this->searches = [$wrap];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Add a search at the beginning of the Boolean expression, as an additional restriction (AND).
|
|
|
|
|
+ * @param FreshRSS_BooleanSearch|FreshRSS_Search $search
|
|
|
|
|
+ */
|
|
|
public function prepend(FreshRSS_BooleanSearch|FreshRSS_Search $search): void {
|
|
public function prepend(FreshRSS_BooleanSearch|FreshRSS_Search $search): void {
|
|
|
|
|
+ $this->wrapSearches();
|
|
|
array_unshift($this->searches, $search);
|
|
array_unshift($this->searches, $search);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -472,16 +492,7 @@ class FreshRSS_BooleanSearch implements \Stringable {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (count($result->searches) > 1 || (count($result->searches) > 0 && $result->searches[0] instanceof FreshRSS_Search)) {
|
|
|
|
|
- // Wrap the existing searches in a new BooleanSearch if needed
|
|
|
|
|
- $wrap = new FreshRSS_BooleanSearch('');
|
|
|
|
|
- foreach ($result->searches as $existingSearch) {
|
|
|
|
|
- $wrap->add($existingSearch);
|
|
|
|
|
- }
|
|
|
|
|
- if (count($wrap->searches) > 0) {
|
|
|
|
|
- $result->searches = [$wrap];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ $result->wrapSearches();
|
|
|
array_unshift($result->searches, $search);
|
|
array_unshift($result->searches, $search);
|
|
|
return $result;
|
|
return $result;
|
|
|
}
|
|
}
|