From 92c14e9d5374dec7940e007dcd9075ac9b42c2ab Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 30 Oct 2012 12:11:46 +0400 Subject: move article filter functions to rssfuncs.php --- include/rssfuncs.php | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) (limited to 'include/rssfuncs.php') diff --git a/include/rssfuncs.php b/include/rssfuncs.php index 2aaff67cf..73323ea31 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -1033,7 +1033,7 @@ _debug("update_rss_feed: assigning labels..."); } - assign_article_to_labels($link, $entry_ref_id, $article_filters, + assign_article_to_label_filters($link, $entry_ref_id, $article_filters, $owner_uid); if ($debug_enabled) { @@ -1346,4 +1346,102 @@ return $params; } + + function get_article_filters($filters, $title, $content, $link, $timestamp, $author, $tags) { + $matches = array(); + + foreach ($filters as $filter) { + $match_any_rule = $filter["match_any_rule"]; + $filter_match = false; + + foreach ($filter["rules"] as $rule) { + $match = false; + $reg_exp = $rule["reg_exp"]; + + if (!$reg_exp) + continue; + + switch ($rule["type"]) { + case "title": + $match = @preg_match("/$reg_exp/i", $title); + break; + case "content": + $match = @preg_match("/$reg_exp/i", $content); + break; + case "both": + $match = (@preg_match("/$reg_exp/i", $title) || @preg_match("/$reg_exp/i", $title)); + break; + case "link": + $match = @preg_match("/$reg_exp/i", $link); + break; + case "author": + $match = @preg_match("/$reg_exp/i", $author); + break; + case "tag": + $tag_string = join(",", $tags); + $match = @preg_match("/$reg_exp/i", $tag_string); + break; + } + + if ($match_any_rule) { + if ($match) { + $filter_match = true; + break; + } + } else { + $filter_match = $match; + if (!$match) { + break; + } + } + } + + if ($filter_match) { + foreach ($filter["actions"] AS $action) { + array_push($matches, $action); + } + } + } + + return $matches; + } + + function find_article_filter($filters, $filter_name) { + foreach ($filters as $f) { + if ($f["type"] == $filter_name) { + return $f; + }; + } + return false; + } + + function find_article_filters($filters, $filter_name) { + $results = array(); + + foreach ($filters as $f) { + if ($f["type"] == $filter_name) { + array_push($results, $f); + }; + } + return $results; + } + + function calculate_article_score($filters) { + $score = 0; + + foreach ($filters as $f) { + if ($f["type"] == "score") { + $score += $f["param"]; + }; + } + return $score; + } + + function assign_article_to_label_filters($link, $id, $filters, $owner_uid) { + foreach ($filters as $f) { + if ($f["type"] == "label") { + label_add_article($link, $id, $f["param"], $owner_uid); + }; + } + } ?> -- cgit v1.2.3