From 67bd0b1f26707945cd086e5a86e0f7a7c2d6e0bf Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 9 Oct 2012 19:09:50 +0400 Subject: allow filters to work on child categories --- include/functions.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'include/functions.php') diff --git a/include/functions.php b/include/functions.php index 343de9ad7..0231c52de 100644 --- a/include/functions.php +++ b/include/functions.php @@ -2262,6 +2262,20 @@ return $search_query_part; } + function getParentCategories($link, $cat, $owner_uid) { + $rv = array(); + + $result = db_query($link, "SELECT parent_cat FROM ttrss_feed_categories + WHERE id = '$cat' AND parent_cat IS NOT NULL AND owner_uid = $owner_uid"); + + while ($line = db_fetch_assoc($result)) { + array_push($rv, $line["parent_cat"]); + $rv = array_merge($rv, getParentCategories($link, $line["parent_cat"], $owner_uid)); + } + + return $rv; + } + function getChildCategories($link, $cat, $owner_uid) { $rv = array(); @@ -3635,6 +3649,10 @@ $result = db_query($link, "SELECT * FROM ttrss_filters2 WHERE owner_uid = $owner_uid AND enabled = true"); + $check_cats = join(",", array_merge( + getParentCategories($link, $cat_id, $owner_uid), + array($cat_id))); + while ($line = db_fetch_assoc($result)) { $filter_id = $line["id"]; @@ -3643,7 +3661,7 @@ FROM ttrss_filters2_rules AS r, ttrss_filter_types AS t WHERE - (cat_id IS NULL OR cat_id = '$cat_id') AND + (cat_id IS NULL 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'"); -- cgit v1.2.3