From 92c14e9d5374dec7940e007dcd9075ac9b42c2ab Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 30 Oct 2012 12:11:46 +0400 Subject: [PATCH] move article filter functions to rssfuncs.php --- classes/pref/feeds.php | 2 + include/functions.php | 98 ---------------------------------------- include/rssfuncs.php | 100 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 101 insertions(+), 99 deletions(-) diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index e396c5ab1..91c504ce4 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -1074,6 +1074,8 @@ class Pref_Feeds extends Handler_Protected { } function rescore() { + require_once "rssfuncs.php"; + $ids = split(",", db_escape_string($_REQUEST["ids"])); foreach ($ids as $id) { diff --git a/include/functions.php b/include/functions.php index 632e2e02e..2e230c3c6 100644 --- a/include/functions.php +++ b/include/functions.php @@ -465,104 +465,6 @@ print ""; } - 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_labels($link, $id, $filters, $owner_uid) { - foreach ($filters as $f) { - if ($f["type"] == "label") { - label_add_article($link, $id, $f["param"], $owner_uid); - }; - } - } - function getmicrotime() { list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); 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); + }; + } + } ?>