summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-03-31 12:37:42 +0400
committerAndrew Dolgov <[email protected]>2013-03-31 12:37:42 +0400
commitc8b693cf7f8616e4dc37ee2f370a01b6642ac7f5 (patch)
tree9520a60643e476a6afaab1ceacb400510595968e /include
parentbf1fee83471cc9efef9f8d3ade0cd00b84633cf1 (diff)
implement catchup with selectable updated criteria
Diffstat (limited to 'include')
-rw-r--r--include/functions.php121
1 files changed, 70 insertions, 51 deletions
diff --git a/include/functions.php b/include/functions.php
index 307f66200..33014e2df 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1003,12 +1003,42 @@
}
}
- function catchup_feed($link, $feed, $cat_view, $owner_uid = false, $max_id = false) {
+ function catchup_feed($link, $feed, $cat_view, $owner_uid = false, $max_id = false, $mode = 'all') {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
//if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) {
+ // Todo: all this interval stuff needs some generic generator function
+
+ $date_qpart = "false";
+
+ switch ($mode) {
+ case "1day":
+ if (DB_TYPE == "pgsql") {
+ $date_qpart = "updated < NOW() - INTERVAL '1 day' ";
+ } else {
+ $date_qpart = "updated < DATE_SUB(NOW(), INTERVAL 1 WEEK) ";
+ }
+ break;
+ case "1week":
+ if (DB_TYPE == "pgsql") {
+ $date_qpart = "updated < NOW() - INTERVAL '1 week' ";
+ } else {
+ $date_qpart = "updated < DATE_SUB(NOW(), INTERVAL 1 WEEK) ";
+ }
+ break;
+ case "2weeks":
+ if (DB_TYPE == "pgsql") {
+ $date_qpart = "updated < NOW() - INTERVAL '2 week' ";
+ } else {
+ $date_qpart = "updated < DATE_SUB(NOW(), INTERVAL 2 WEEK) ";
+ }
+ break;
+ default:
+ $date_qpart = "true";
+ }
+
if (is_numeric($feed)) {
if ($cat_view) {
@@ -1026,43 +1056,44 @@
}
db_query($link, "UPDATE ttrss_user_entries
- SET unread = false,last_read = NOW()
- WHERE feed_id IN (SELECT id FROM ttrss_feeds WHERE $cat_qpart)
- AND unread = true
- AND owner_uid = $owner_uid");
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
+ AND owner_uid = $owner_uid AND unread = true AND feed_id IN
+ (SELECT id FROM ttrss_feeds WHERE $cat_qpart) AND $date_qpart) as tmp)");
} 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 unread = true AND $date_qpart 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 unread = true
- AND owner_uid = $owner_uid");
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
+ AND owner_uid = $owner_uid AND unread = true AND feed_id = $feed AND $date_qpart) as tmp)");
} else if ($feed < 0 && $feed > LABEL_BASE_INDEX) { // special, like starred
if ($feed == -1) {
db_query($link, "UPDATE ttrss_user_entries
- SET unread = false,last_read = NOW()
- WHERE marked = true
- AND unread = true
- AND owner_uid = $owner_uid");
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
+ AND owner_uid = $owner_uid AND unread = true AND marked = true AND $date_qpart) as tmp)");
}
if ($feed == -2) {
db_query($link, "UPDATE ttrss_user_entries
- SET unread = false,last_read = NOW()
- WHERE published = true
- AND unread = true
- AND owner_uid = $owner_uid");
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
+ AND owner_uid = $owner_uid AND unread = true AND published = true AND $date_qpart) as tmp)");
}
if ($feed == -3) {
@@ -1076,56 +1107,44 @@
INTERVAL $intl HOUR) ";
}
- $result = db_query($link, "SELECT id FROM ttrss_entries,
- ttrss_user_entries WHERE $match_part AND
- unread = true AND
- ttrss_user_entries.ref_id = ttrss_entries.id AND
- owner_uid = $owner_uid");
-
- $affected_ids = array();
-
- while ($line = db_fetch_assoc($result)) {
- array_push($affected_ids, $line["id"]);
- }
-
- catchupArticlesById($link, $affected_ids, 0);
+ db_query($link, "UPDATE ttrss_user_entries
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
+ AND owner_uid = $owner_uid AND unread = true AND feed_id = $feed AND $date_qpart AND $match_part) as tmp)");
}
if ($feed == -4) {
db_query($link, "UPDATE ttrss_user_entries
- SET unread = false,last_read = NOW()
- WHERE unread = true AND
- owner_uid = $owner_uid");
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
+ AND owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)");
}
} else if ($feed < LABEL_BASE_INDEX) { // label
$label_id = feed_to_label_id($feed);
- 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 owner_uid = '$owner_uid' AND ref_id = article_id");
+ db_query($link, "UPDATE ttrss_user_entries
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_user_labels2 WHERE ref_id = id
+ AND label_id = '$label_id' AND ref_id = article_id
+ AND owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)");
}
ccache_update($link, $feed, $owner_uid, $cat_view);
} else { // tag
- db_query($link, "BEGIN");
+ db_query($link, "UPDATE ttrss_user_entries
+ SET unread = false, last_read = NOW() WHERE ref_id IN
+ (SELECT id FROM
+ (SELECT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_tags WHERE ref_id = ttrss_entries.id
+ AND post_int_id = int_id AND tag_name = '$feed'
+ AND ttrss_user_entries.owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)");
- $tag_name = db_escape_string($link, $feed);
-
- $result = db_query($link, "SELECT post_int_id FROM ttrss_tags
- WHERE tag_name = '$tag_name' AND owner_uid = $owner_uid");
-
- while ($line = db_fetch_assoc($result)) {
- db_query($link, "UPDATE ttrss_user_entries SET
- unread = false, last_read = NOW()
- WHERE unread = true
- AND int_id = " . $line["post_int_id"]);
- }
- db_query($link, "COMMIT");
}
}