_debug("update_rss_feed: loading filters...");
}
- $filters = array();
-
- $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
- 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);
- }
+ $filters = load_filters($link, $feed, $owner_uid);
if ($use_simplepie) {
$iterator = $rss->get_items();
$result = db_query($link, "SELECT
id,content_hash,no_orig_date,title,
- substring(date_entered,1,19) as date_entered,
- substring(updated,1,19) as updated,
+ ".SUBSTRING_FOR_DATE."(date_entered,1,19) as date_entered,
+ ".SUBSTRING_FOR_DATE."(updated,1,19) as updated,
num_comments
FROM
ttrss_entries
// error_reporting (DEFAULT_ERROR_LEVEL);
+ $score = calculate_article_score($article_filters);
+
+ if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
+ _debug("update_rss_feed: initial score: $score");
+ }
+
$result = db_query($link,
"SELECT ref_id, int_id FROM ttrss_user_entries WHERE
ref_id = '$ref_id' AND owner_uid = '$owner_uid'
$last_read_qpart = 'NOW()';
}
- if (find_article_filter($article_filters, 'mark')) {
+ if (find_article_filter($article_filters, 'mark') || $score > 1000) {
$marked = 'true';
} else {
$marked = 'false';
$result = db_query($link,
"INSERT INTO ttrss_user_entries
- (ref_id, owner_uid, feed_id, unread, last_read, marked, published)
+ (ref_id, owner_uid, feed_id, unread, last_read, marked,
+ published, score)
VALUES ('$ref_id', '$owner_uid', '$feed', $unread,
- $last_read_qpart, $marked, $published)");
+ $last_read_qpart, $marked, $published, '$score')");
$result = db_query($link,
"SELECT int_id FROM ttrss_user_entries WHERE
return false;
}
+ function calculate_article_score($filters) {
+ $score = 0;
+
+ foreach ($filters as $f) {
+ if ($f[0] == "score") {
+ $score += $f[1];
+ };
+ }
+ return $score;
+ }
+
+
function printFeedEntry($feed_id, $class, $feed_title, $unread, $icon_file, $link,
$rtl_content = false, $last_updated = false, $last_error = false) {
} else if ($id == -3) {
return __("Fresh articles");
} else if ($id < -10) {
- $label_id = -10 - $id;
+ $label_id = -$id - 11;
$result = db_query($link, "SELECT description FROM ttrss_labels WHERE id = '$label_id'");
if (db_num_rows($result) == 1) {
return db_fetch_result($result, 0, "description");
$order_by = "updated DESC";
}
+ $order_by = "score DESC, $order_by";
+
if ($override_order) {
$order_by = $override_order;
}
} else if ($feed == -1) {
$feed_title = __("Starred articles");
+ if ($search) { $feed_title = __("Searched for") . " $search ($feed_title)"; }
} else if ($feed == -2) {
$feed_title = __("Published articles");
+ if ($search) { $feed_title = __("Searched for") . " $search ($feed_title)"; }
} else if ($feed == -3) {
$feed_title = __("Fresh articles");
+ if ($search) { $feed_title = __("Searched for") . " $search ($feed_title)"; }
} else if ($feed < -10) {
$label_id = -$feed - 11;
$result = db_query($link, "SELECT description FROM ttrss_labels
$offset_query_part = "OFFSET $offset";
}
+ if ($vfeed_query_part && defined('_VFEED_GROUP_BY_FEED')) {
+ if (!$override_order) {
+ $order_by = "ttrss_feeds.title, $order_by";
+ }
+
+ if ($feed == -3) {
+ $group_limit_part = "(select count(*) from
+ ttrss_user_entries AS t1, ttrss_entries AS t2 where
+ t1.ref_id = t2.id and t1.owner_uid = 2 and
+ t1.feed_id = ttrss_user_entries.feed_id and
+ t2.updated > ttrss_entries.updated) <= 5 AND";
+ }
+ }
+
$query = "SELECT
guid,
ttrss_entries.id,ttrss_entries.title,
$vfeed_query_part
$content_query_part
".SUBSTRING_FOR_DATE."(updated,1,19) as updated_noms,
- author
+ author,score
FROM
ttrss_entries,ttrss_user_entries,ttrss_feeds
WHERE
- ttrss_feeds.hidden = false AND
+ $group_limit_part
+ ttrss_feeds.hidden = false AND
ttrss_user_entries.feed_id = ttrss_feeds.id AND
ttrss_user_entries.ref_id = ttrss_entries.id AND
ttrss_user_entries.owner_uid = '$owner_uid' AND
FROM
ttrss_entries,ttrss_user_entries,ttrss_tags
WHERE
- ref_id = ttrss_entries.id AND
+ ref_id = ttrss_entries.id AND
ttrss_user_entries.owner_uid = '$owner_uid' AND
post_int_id = int_id AND tag_name = '$feed' AND
$view_query_part
if (!$dashboard_menu) {
if (strpos($_SESSION["client.userAgent"], "MSIE") === false) {
-
+
print "<td class=\"headlineActions$rtl_cpart\">
<ul class=\"headlineDropdownMenu\">
<li class=\"top2\">
<a href=\"$sel_unread_link\">".__('Unread')."</a>,
<a href=\"$sel_none_link\">".__('None')."</a></li>
<li class=\"vsep\"> </li>
- <li class=\"top\">".__('Toggle')."<ul>
- <li onclick=\"$tog_unread_link\">".__('Unread')."</li>
- <li onclick=\"$tog_marked_link\">".__('Starred')."</li>
- <li onclick=\"$tog_published_link\">".__('Published')."</li>
- </ul></li>
- <li class=\"vsep\"> </li>
- <li class=\"top\">".__('Mark as read')."<ul>
- <li onclick=\"$catchup_sel_link\">".__('Selection')."</li>
- <!-- <li onclick=\"$catchup_page_link\">".__('This page')."</li> -->";
-
- if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
-
- print "
+ <li class=\"top\">".__('Actions...')."<ul>
+ <li><span class=\"insensitive\">".__('Selection toggle:')."</span></li>
+ <li onclick=\"$tog_unread_link\"> ".__('Unread')."</li>
+ <li onclick=\"$tog_marked_link\"> ".__('Starred')."</li>
+ <li onclick=\"$tog_published_link\"> ".__('Published')."</li>
<li><span class=\"insensitive\">--------</span></li>
- <li onclick=\"catchupRelativeToArticle(0)\">".__("Above active article")."</li>
- <li onclick=\"catchupRelativeToArticle(1)\">".__("Below active article")."</li>
- <li><span class=\"insensitive\">--------</span></li>";
- }
+ <li><span class=\"insensitive\">".__('Mark as read:')."</span></li>
+ <li onclick=\"$catchup_sel_link\"> ".__('Selection')."</li>";
+
+/* if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
print "
- <li onclick=\"$catchup_feed_link\">".__('Entire feed')."</li></ul></li>
- ";
-
- $enable_pagination = get_pref($link, "_PREFS_ENABLE_PAGINATION");
-
- if ($limit != 0 && !$search && $enable_pagination) {
- print "
- <li class=\"vsep\"> </li>
- <li class=\"top\"><a href=\"$page_next_link\">".__('Next page')."</a><ul>
- <li onclick=\"$page_prev_link\">".__('Previous page')."</li>
- <li onclick=\"$page_first_link\">".__('First page')."</li></ul></li>
- </ul>";
- }
-
- if ($search && $feed_id >= 0 && get_pref($link, 'ENABLE_LABELS') && GLOBAL_ENABLE_LABELS) {
- print "
- <li class=\"vsep\"> </li>
- <li class=\"top3\">
- <a href=\"javascript:labelFromSearch('$search', '$search_mode',
- '$match_on', '$feed_id', '$is_cat');\">
- ".__('Convert to label')."</a></td>";
- }
- print "
- </td>";
+ <li onclick=\"catchupRelativeToArticle(0)\"> ".__("Above active article")."</li>
+ <li onclick=\"catchupRelativeToArticle(1)\"> ".__("Below active article")."</li>";
+ } else {
+ print "
+ <li><span class=\"insensitive\"> ".__("Above active article")."</span></li>
+ <li><span class=\"insensitive\"> ".__("Below active article")."</span></li>";
+
+ } */
+
+ print "<li onclick=\"$catchup_feed_link\"> ".__('Entire feed')."</li>";
+
+ print "<li><span class=\"insensitive\">--------</span></li>";
+ print "<li><span class=\"insensitive\">".__('Other actions:')."</span></li>";
+
+
+ if ($search && $feed_id >= 0 && get_pref($link, 'ENABLE_LABELS') && GLOBAL_ENABLE_LABELS) {
+ print "
+ <li onclick=\"javascript:labelFromSearch('$search', '$search_mode',
+ '$match_on', '$feed_id', '$is_cat');\">
+ ".__('Search to label')."</li>";
+ } else {
+ print "<li><span class=\"insensitive\"> ".__('Search to label')."</li>";
+
+ }
+
+ print "</ul></li></ul>";
+ print "</td>";
} else {
- // old style subtoolbar:
+ // old style subtoolbar:
print "<td class=\"headlineActions$rtl_cpart\">".
__('Select:')."
}
} else { // dashboard menu actions
- print "<td class=\"headlineActions$rtl_cpart\">
- <ul class=\"headlineDropdownMenu\">
- <li class=\"top2\">
- <a href=\"#\" onclick=\"return displayDlg('quickAddFeed');\">".
- __('Subscribe to feed')."</a>
- </li>
- <li class=\"vsep\"> </li>
- <li class=\"top\">".__('Placeholder')."<ul>
- <li onclick=\"\">".__('Placeholder')."</li>
- <li onclick=\"\">".__('Placeholder')."</li>
- <li onclick=\"\">".__('Placeholder')."</li>
- </ul></li>
- <li class=\"vsep\"> </li>
- <li class=\"top\">".__('Show')."<ul>
- <li onclick=\"\">".__('Update errors')."</li>
- </ul></li></ul>";
-
- print "</td>";
-
+ // not implemented
+ print "</td>";
}
-/* if ($search && $feed_id >= 0 && get_pref($link, 'ENABLE_LABELS') && GLOBAL_ENABLE_LABELS) {
- print "<td class=\"headlineActions$rtl_cpart\">
- <a href=\"javascript:labelFromSearch('$search', '$search_mode',
- '$match_on', '$feed_id', '$is_cat');\">
- ".__('Convert to Label')."</a></td>";
-} */
-
print "<td class=\"headlineTitle$rtl_cpart\">";
- print "<span class=\"headlineInnerTitle\">";
+ print "<span id=\"subtoolbar_search\"
+ style=\"display : none\">Search: <input
+ id=\"subtoolbar_search_box\"
+ onblur=\"javascript:enableHotkeys();\"
+ onfocus=\"javascript:disableHotkeys();\"
+ onchange=\"subtoolbarSearch()\"
+ onkeyup=\"subtoolbarSearch()\" type=\"search\"></span>";
+
+ print "<span id=\"subtoolbar_ftitle\">";
if ($feed_site_url) {
if (!$bottom) {
print " [$user_page_offset] ";
}
- print "</span>";
-
if (!$bottom && !$disable_feed) {
print "
<a target=\"_new\"
} else if ($feed_small_icon) {
print "<img class=\"noborder\" alt=\"\" src=\"images/$feed_small_icon\">";
}
-
+
+ print "</span>";
+
print "</td>";
print "</tr></table>";
error_reporting (DEFAULT_ERROR_LEVEL);
$num_unread = 0;
-
+ $cur_feed_title = '';
+
while ($line = db_fetch_assoc($result)) {
$class = ($lnum % 2) ? "even" : "odd";
100);
}
+ $score = $line["score"];
+
+ $score_pic = get_score_pic($score);
+
+ $score_title = __("(Click to change)");
+
+ $score_pic = "<img class='hlScorePic' src=\"images/$score_pic\"
+ onclick=\"adjustArticleScore($id, $score)\" title=\"$score $score_title\">";
+
+ if ($score > 500) {
+ $hlc_suffix = "H";
+ } else if ($score < -100) {
+ $hlc_suffix = "L";
+ } else {
+ $hlc_suffix = "";
+ }
+
$entry_author = $line["author"];
if ($entry_author) {
}
if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
+
+ if (defined('_VFEED_GROUP_BY_FEED')) {
+ if ($line["feed_title"] != $cur_feed_title) {
+/* print "<tr class='feedTitle'><td colspan='7'>".
+ $line["feed_title"].
+ " (<a href=\"javascript:viewfeed($feed_id, '', false)\">".
+ "more</a>)</td></tr>"; */
+
+ print "<tr class='feedTitle'><td colspan='7'>".
+ "<a href=\"javascript:viewfeed($feed_id, '', false)\">".
+ $line["feed_title"]."</a>:</td></tr>";
+
+ $cur_feed_title = $line["feed_title"];
+ }
+ }
print "<tr class='$class' id='RROW-$id'>";
# truncate_string($line["feed_title"],30)."</a> </td>";
# } else {
- print "<td class='hlContent' valign='middle'>";
+ print "<td class='hlContent$hlc_suffix' valign='middle'>";
- print "<a href=\"javascript:view($id,$feed_id);\">" .
+ print "<a id=\"RTITLE-$id\" href=\"javascript:view($id,$feed_id);\">" .
$line["title"];
if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
# <a href=\"javascript:viewfeed($feed_id, '', false)\">".
# $line["feed_title"]."</a>
- if ($line["feed_title"]) {
- print "<span class=\"hlFeed\">
- (<a href=\"javascript:viewfeed($feed_id, '', false)\">".
- $line["feed_title"]."</a>)
- </span>";
+ if (!defined('_VFEED_GROUP_BY_FEED')) {
+ if ($line["feed_title"]) {
+ print "<span class=\"hlFeed\">
+ (<a href=\"javascript:viewfeed($feed_id, '', false)\">".
+ $line["feed_title"]."</a>)
+ </span>";
+ }
}
# }
print "<td class=\"hlUpdated\"><nobr>$updated_fmt </nobr></td>";
-
+
+ print "<td class='hlMarkedPic'>$score_pic</td>";
+
print "</tr>";
} else {
-
+
+ if (defined('_VFEED_GROUP_BY_FEED')) {
+ if ($line["feed_title"] != $cur_feed_title) {
+ print "<div class='cdmFeedTitle'>".
+ "<a href=\"javascript:viewfeed($feed_id, '', false)\">".
+ $line["feed_title"]."</a></div>";
+ $cur_feed_title = $line["feed_title"];
+ }
+ }
+
if ($is_unread) {
$add_class = "Unread";
} else {
$expand_cdm = get_pref($link, 'CDM_EXPANDED');
- if ($expand_cdm) {
+ if ($expand_cdm && $score >= -100) {
$cdm_cstyle = "";
} else {
$cdm_cstyle = "style=\"display : none\"";
print "<div class=\"cdmHeader\">";
- print "<div class=\"articleUpdated\">$updated_fmt</div>";
-
- print "<a class=\"title\"
+ print "<div class=\"articleUpdated\">$updated_fmt $score_pic</div>";
+
+ print "<span id=\"RTITLE-$id\" class=\"titleWrap$hlc_suffix\"><a class=\"title\"
onclick=\"javascript:toggleUnread($id, 0)\"
- target=\"_new\" href=\"".$line["link"]."\">".$line["title"]."</a>";
+ target=\"_blank\" href=\"".$line["link"]."\">".$line["title"]."</a>
+ ";
print $entry_author;
- if (!$expand_cdm) {
+ if (!$expand_cdm || $score < -100) {
print " <a id=\"CICH-$id\"
href=\"javascript:cdmExpandArticle($id)\">
(".__('Show article').")</a>";
}
- if ($line["feed_title"]) {
- print " (<a href='javascript:viewfeed($feed_id)'>".$line["feed_title"]."</a>)";
+ if (!defined('_VFEED_GROUP_BY_FEED')) {
+ if ($line["feed_title"]) {
+ print " (<a href='javascript:viewfeed($feed_id)'>".$line["feed_title"]."</a>)";
+ }
}
- print "</div>";
+ print "</span></div>";
if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) {
$line["content_preview"] = preg_replace("/href=/i",
$text = preg_replace("/\]\]\>/", "", $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;
+ }
+
+ function get_score_pic($score) {
+ if ($score > 0) {
+ return "score_high.png";
+ } else if ($score < 0) {
+ return "score_low.png";
+ } else {
+ return "score_neutral.png";
+ }
+ }
?>