mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-19 09:11:29 +00:00
pref-feeds: add action to rescore feeds
This commit is contained in:
@@ -5519,4 +5519,35 @@
|
|||||||
$text = preg_replace("/\]\]\>/", "", $text);
|
$text = preg_replace("/\]\]\>/", "", $text);
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function load_filters($link, $feed, $owner_uid, $action_id = false) {
|
||||||
|
$filters = array();
|
||||||
|
|
||||||
|
if ($action_id) $ftype_query_part = "action_id = '$action_id' AND";
|
||||||
|
|
||||||
|
$result = db_query($link, "SELECT reg_exp,
|
||||||
|
ttrss_filter_types.name AS name,
|
||||||
|
ttrss_filter_actions.name AS action,
|
||||||
|
inverse,
|
||||||
|
action_param
|
||||||
|
FROM ttrss_filters,ttrss_filter_types,ttrss_filter_actions WHERE
|
||||||
|
enabled = true AND
|
||||||
|
$ftype_query_part
|
||||||
|
owner_uid = $owner_uid AND
|
||||||
|
ttrss_filter_types.id = filter_type AND
|
||||||
|
ttrss_filter_actions.id = action_id AND
|
||||||
|
(feed_id IS NULL OR feed_id = '$feed') ORDER BY reg_exp");
|
||||||
|
|
||||||
|
while ($line = db_fetch_assoc($result)) {
|
||||||
|
if (!$filters[$line["name"]]) $filters[$line["name"]] = array();
|
||||||
|
$filter["reg_exp"] = $line["reg_exp"];
|
||||||
|
$filter["action"] = $line["action"];
|
||||||
|
$filter["action_param"] = $line["action_param"];
|
||||||
|
$filter["inverse"] = sql_bool_to_bool($line["inverse"]);
|
||||||
|
|
||||||
|
array_push($filters[$line["name"]], $filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $filters;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -473,6 +473,49 @@
|
|||||||
clear_feed_articles($link, $id);
|
clear_feed_articles($link, $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($subop == "rescore") {
|
||||||
|
$ids = split(",", db_escape_string($_GET["ids"]));
|
||||||
|
|
||||||
|
foreach ($ids as $id) {
|
||||||
|
|
||||||
|
$filters = load_filters($link, $id, $_SESSION["uid"], 6);
|
||||||
|
|
||||||
|
$result = db_query($link, "SELECT title, content, link, ref_id FROM
|
||||||
|
ttrss_user_entries, ttrss_entries
|
||||||
|
WHERE ref_id = id AND feed_id = '$id' AND
|
||||||
|
owner_uid = " .$_SESSION['uid']."
|
||||||
|
ORDER BY updated DESC LIMIT 100");
|
||||||
|
|
||||||
|
$scores = array();
|
||||||
|
|
||||||
|
while ($line = db_fetch_assoc($result)) {
|
||||||
|
|
||||||
|
$article_filters = get_article_filters($filters, $line['title'],
|
||||||
|
$line['content'], $line['link']);
|
||||||
|
|
||||||
|
$new_score = calculate_article_score($article_filters);
|
||||||
|
|
||||||
|
if (!$scores[$new_score]) $scores[$new_score] = array();
|
||||||
|
|
||||||
|
array_push($scores[$new_score], $line['ref_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (array_keys($scores) as $s) {
|
||||||
|
if ($s > 1000) {
|
||||||
|
db_query($link, "UPDATE ttrss_user_entries SET score = '$s',
|
||||||
|
marked = true WHERE
|
||||||
|
ref_id IN (" . join(',', $scores[$s]) . ")");
|
||||||
|
} else {
|
||||||
|
db_query($link, "UPDATE ttrss_user_entries SET score = '$s' WHERE
|
||||||
|
ref_id IN (" . join(',', $scores[$s]) . ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print __("All done.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if ($subop == "add") {
|
if ($subop == "add") {
|
||||||
|
|
||||||
if (!WEB_DEMO_MODE) {
|
if (!WEB_DEMO_MODE) {
|
||||||
@@ -1020,6 +1063,7 @@
|
|||||||
<option value=\"facEdit\"> ".__('Edit')."</option>
|
<option value=\"facEdit\"> ".__('Edit')."</option>
|
||||||
<option value=\"facPurge\"> ".__('Manual purge')."</option>
|
<option value=\"facPurge\"> ".__('Manual purge')."</option>
|
||||||
<option value=\"facClear\"> ".__('Clear feed data')."</option>
|
<option value=\"facClear\"> ".__('Clear feed data')."</option>
|
||||||
|
<option value=\"facRescore\"> ".__('Rescore articles')."</option>
|
||||||
<option value=\"facUnsubscribe\"> ".__('Unsubscribe')."</option>";
|
<option value=\"facUnsubscribe\"> ".__('Unsubscribe')."</option>";
|
||||||
|
|
||||||
if (get_pref($link, 'ENABLE_FEED_CATS')) {
|
if (get_pref($link, 'ENABLE_FEED_CATS')) {
|
||||||
|
|||||||
31
prefs.js
31
prefs.js
@@ -1888,6 +1888,10 @@ function feedActionGo(op) {
|
|||||||
editFeedCats();
|
editFeedCats();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (op == "facRescore") {
|
||||||
|
rescoreSelectedFeeds();
|
||||||
|
}
|
||||||
|
|
||||||
if (op == "facUnsubscribe") {
|
if (op == "facUnsubscribe") {
|
||||||
removeSelectedFeeds();
|
removeSelectedFeeds();
|
||||||
}
|
}
|
||||||
@@ -1912,4 +1916,31 @@ function clearFeedArticles(feed_id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function rescoreSelectedFeeds() {
|
||||||
|
|
||||||
|
if (!xmlhttp_ready(xmlhttp)) {
|
||||||
|
printLockingError();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var sel_rows = getSelectedFeeds();
|
||||||
|
|
||||||
|
if (sel_rows.length > 0) {
|
||||||
|
|
||||||
|
var ok = confirm(__("Rescore last 100 articles in selected feeds?"));
|
||||||
|
|
||||||
|
if (ok) {
|
||||||
|
notify_progress("Rescoring selected labels...");
|
||||||
|
|
||||||
|
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=rescore&quiet=1&ids="+
|
||||||
|
param_escape(sel_rows.toString()), true);
|
||||||
|
xmlhttp.onreadystatechange=notify_callback;
|
||||||
|
xmlhttp.send(null);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
alert(__("No feeds are selected."));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user