summaryrefslogtreecommitdiff
path: root/include/functions.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-07-02 20:37:01 +0300
committerAndrew Dolgov <[email protected]>2017-07-02 20:37:01 +0300
commitf5d174bda96ddc41aa3828bf372a2a3d99cc4460 (patch)
tree59fe48af6ddc9c49aae003e3c29b1ac6ec88a490 /include/functions.php
parente0f51d786f6bb14ab0a349fe167e797e7a5429b4 (diff)
Revert "filters: support matching on multiple feeds/categories"
This reverts commit 0bf7e007bb3a7039ea11601c7f93c6da33604228.
Diffstat (limited to 'include/functions.php')
-rw-r--r--include/functions.php73
1 files changed, 22 insertions, 51 deletions
diff --git a/include/functions.php b/include/functions.php
index 4ad6e6394..6ea3e9ff2 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1813,26 +1813,20 @@
$result = db_query("SELECT * FROM ttrss_filters2 WHERE
owner_uid = $owner_uid AND enabled = true ORDER BY order_id, title");
- $check_cats = array_merge(
+ $check_cats = join(",", array_merge(
Feeds::getParentCategories($cat_id, $owner_uid),
- [$cat_id]);
-
- $check_cats_str = join(",", $check_cats);
- $check_cats_fullids = array_map(function($a) { return "CAT:$a"; }, $check_cats);
+ array($cat_id)));
while ($line = db_fetch_assoc($result)) {
$filter_id = $line["id"];
- $match_any_rule = sql_bool_to_bool($line["match_any_rule"]);
-
$result2 = db_query("SELECT
- r.reg_exp, r.inverse, r.feed_id, r.cat_id, r.cat_filter, r.match_on, t.name AS type_name
+ r.reg_exp, r.inverse, r.feed_id, r.cat_id, r.cat_filter, t.name AS type_name
FROM ttrss_filters2_rules AS r,
ttrss_filter_types AS t
WHERE
- (match_on IS NOT NULL OR
- (($null_cat_qpart (cat_id IS NULL AND cat_filter = false) OR cat_id IN ($check_cats_str)) AND
- (feed_id IS NULL OR feed_id = '$feed_id'))) AND
+ ($null_cat_qpart (cat_id IS NULL AND cat_filter = false) OR cat_id IN ($check_cats)) AND
+ (feed_id IS NULL OR feed_id = '$feed_id') AND
filter_type = t.id AND filter_id = '$filter_id'");
$rules = array();
@@ -1841,53 +1835,30 @@
while ($rule_line = db_fetch_assoc($result2)) {
# print_r($rule_line);
- if ($rule_line["match_on"]) {
- $match_on = json_decode($rule_line["match_on"], true);
-
- if (in_array("0", $match_on) || in_array($feed_id, $match_on) || count(array_intersect($check_cats_fullids, $match_on)) > 0) {
+ $rule = array();
+ $rule["reg_exp"] = $rule_line["reg_exp"];
+ $rule["type"] = $rule_line["type_name"];
+ $rule["inverse"] = sql_bool_to_bool($rule_line["inverse"]);
- $rule = array();
- $rule["reg_exp"] = $rule_line["reg_exp"];
- $rule["type"] = $rule_line["type_name"];
- $rule["inverse"] = sql_bool_to_bool($rule_line["inverse"]);
-
- array_push($rules, $rule);
- } else if (!$match_any_rule) {
- // this filter contains a rule that doesn't match to this feed/category combination
- // thus filter has to be rejected
+ array_push($rules, $rule);
+ }
- $rules = [];
- break;
- }
+ $result2 = db_query("SELECT a.action_param,t.name AS type_name
+ FROM ttrss_filters2_actions AS a,
+ ttrss_filter_actions AS t
+ WHERE
+ action_id = t.id AND filter_id = '$filter_id'");
- } else {
+ while ($action_line = db_fetch_assoc($result2)) {
+ # print_r($action_line);
- $rule = array();
- $rule["reg_exp"] = $rule_line["reg_exp"];
- $rule["type"] = $rule_line["type_name"];
- $rule["inverse"] = sql_bool_to_bool($rule_line["inverse"]);
+ $action = array();
+ $action["type"] = $action_line["type_name"];
+ $action["param"] = $action_line["action_param"];
- array_push($rules, $rule);
- }
+ array_push($actions, $action);
}
- if (count($rules) > 0) {
- $result2 = db_query("SELECT a.action_param,t.name AS type_name
- FROM ttrss_filters2_actions AS a,
- ttrss_filter_actions AS t
- WHERE
- action_id = t.id AND filter_id = '$filter_id'");
-
- while ($action_line = db_fetch_assoc($result2)) {
- # print_r($action_line);
-
- $action = array();
- $action["type"] = $action_line["type_name"];
- $action["param"] = $action_line["action_param"];
-
- array_push($actions, $action);
- }
- }
$filter = array();
$filter["match_any_rule"] = sql_bool_to_bool($line["match_any_rule"]);