summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/rpc.php3
-rw-r--r--include/functions.php28
-rw-r--r--js/feedlist.js18
3 files changed, 39 insertions, 10 deletions
diff --git a/classes/rpc.php b/classes/rpc.php
index a5e32d47e..86128ccfe 100644
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -646,8 +646,9 @@ class RPC extends Protected_Handler {
function catchupFeed() {
$feed_id = db_escape_string($_REQUEST['feed_id']);
$is_cat = db_escape_string($_REQUEST['is_cat']) == "true";
+ $max_id = (int) db_escape_string($_REQUEST['max_id']);
- catchup_feed($this->link, $feed_id, $is_cat);
+ catchup_feed($this->link, $feed_id, $is_cat, false, $max_id);
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
diff --git a/include/functions.php b/include/functions.php
index d11d62d22..346396ed6 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1320,12 +1320,14 @@
}
}
- function catchup_feed($link, $feed, $cat_view, $owner_uid = false) {
+ function catchup_feed($link, $feed, $cat_view, $owner_uid = false, $max_id = false) {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
//if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) {
+ $ref_check_qpart = ($max_id) ? "ref_id <= '$max_id'" : "true";
+
if (is_numeric($feed)) {
if ($cat_view) {
@@ -1346,34 +1348,43 @@
db_query($link, "UPDATE ttrss_user_entries
SET unread = false,last_read = NOW()
- WHERE feed_id = '$tmp_feed' AND owner_uid = $owner_uid");
+ WHERE feed_id = '$tmp_feed'
+ AND $ref_check_qpart
+ AND owner_uid = $owner_uid");
}
} else if ($feed == -2) {
db_query($link, "UPDATE ttrss_user_entries
SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*)
FROM ttrss_user_labels2 WHERE article_id = ref_id) > 0
- AND unread = true AND owner_uid = $owner_uid");
+ AND $ref_check_qpart
+ AND unread = true AND owner_uid = $owner_uid");
}
} else if ($feed > 0) {
db_query($link, "UPDATE ttrss_user_entries
SET unread = false,last_read = NOW()
- WHERE feed_id = '$feed' AND owner_uid = $owner_uid");
+ WHERE feed_id = '$feed'
+ AND $ref_check_qpart
+ AND owner_uid = $owner_uid");
} else if ($feed < 0 && $feed > -10) { // special, like starred
if ($feed == -1) {
db_query($link, "UPDATE ttrss_user_entries
SET unread = false,last_read = NOW()
- WHERE marked = true AND owner_uid = $owner_uid");
+ WHERE marked = true
+ AND $ref_check_qpart
+ AND owner_uid = $owner_uid");
}
if ($feed == -2) {
db_query($link, "UPDATE ttrss_user_entries
SET unread = false,last_read = NOW()
- WHERE published = true AND owner_uid = $owner_uid");
+ WHERE published = true
+ AND $ref_check_qpart
+ AND owner_uid = $owner_uid");
}
if ($feed == -3) {
@@ -1405,7 +1416,7 @@
if ($feed == -4) {
db_query($link, "UPDATE ttrss_user_entries
SET unread = false,last_read = NOW()
- WHERE owner_uid = $owner_uid");
+ WHERE $ref_check_qpart AND owner_uid = $owner_uid");
}
} else if ($feed < -10) { // label
@@ -1415,6 +1426,7 @@
db_query($link, "UPDATE ttrss_user_entries, ttrss_user_labels2
SET unread = false, last_read = NOW()
WHERE label_id = '$label_id' AND unread = true
+ AND $ref_check_qpart
AND owner_uid = '$owner_uid' AND ref_id = article_id");
}
@@ -1432,7 +1444,7 @@
while ($line = db_fetch_assoc($result)) {
db_query($link, "UPDATE ttrss_user_entries SET
unread = false, last_read = NOW()
- WHERE int_id = " . $line["post_int_id"]);
+ WHERE $ref_check_qpart AND int_id = " . $line["post_int_id"]);
}
db_query($link, "COMMIT");
}
diff --git a/js/feedlist.js b/js/feedlist.js
index a2a24d0e0..4341a5d80 100644
--- a/js/feedlist.js
+++ b/js/feedlist.js
@@ -480,6 +480,8 @@ function catchupFeedInGroup(id) {
function catchupFeed(feed, is_cat) {
try {
+ if (is_cat == undefined) is_cat = false;
+
var str = __("Mark all articles in %s as read?");
var fn = getFeedName(feed, is_cat);
@@ -489,8 +491,22 @@ function catchupFeed(feed, is_cat) {
return;
}
+ var max_id = 0;
+
+ if (feed = getActiveFeedId() && is_cat == activeFeedIsCat()) {
+ $$("#headlines-frame > div[id*=RROW]").each(
+ function(child) {
+ var id = parseInt(child.id.replace("RROW-", ""));
+
+ if (id > max_id) max_id = id;
+ }
+ );
+ }
+
var catchup_query = "?op=rpc&method=catchupFeed&feed_id=" +
- feed + "&is_cat=" + is_cat;
+ feed + "&is_cat=" + is_cat + "&max_id=" + max_id;
+
+ console.log(catchup_query);
notify_progress("Loading, please wait...", true);