move article filter functions to rssfuncs.php

This commit is contained in:
Andrew Dolgov 2012-10-30 12:11:46 +04:00
parent 74467907c5
commit 92c14e9d53
3 changed files with 101 additions and 99 deletions

View file

@ -1074,6 +1074,8 @@ class Pref_Feeds extends Handler_Protected {
} }
function rescore() { function rescore() {
require_once "rssfuncs.php";
$ids = split(",", db_escape_string($_REQUEST["ids"])); $ids = split(",", db_escape_string($_REQUEST["ids"]));
foreach ($ids as $id) { foreach ($ids as $id) {

View file

@ -465,104 +465,6 @@
print "</select>"; print "</select>";
} }
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() { function getmicrotime() {
list($usec, $sec) = explode(" ",microtime()); list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec); return ((float)$usec + (float)$sec);

View file

@ -1033,7 +1033,7 @@
_debug("update_rss_feed: assigning labels..."); _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); $owner_uid);
if ($debug_enabled) { if ($debug_enabled) {
@ -1346,4 +1346,102 @@
return $params; 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);
};
}
}
?> ?>