From 07d0efe959e6ee03a7a4d2dca11a69e35a265461 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 15 Nov 2007 06:41:53 +0100 Subject: new preference: PURGE_UNREAD_ARTICLES (closes #161), fix bug in user purge --- functions.php | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'functions.php') diff --git a/functions.php b/functions.php index 744a728ec..4a6613a60 100644 --- a/functions.php +++ b/functions.php @@ -81,8 +81,26 @@ function purge_feed($link, $feed_id, $purge_interval, $debug = false) { + if (!$purge_interval) $purge_interval = feed_purge_interval($link, $feed_id); + $rows = -1; + $result = db_query($link, + "SELECT owner_uid FROM ttrss_feeds WHERE id = '$feed_id'"); + + $owner_uid = false; + + if (db_num_rows($result) == 1) { + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + } + + if (!$owner_uid) return; + + $purge_unread = get_pref($link, "PURGE_UNREAD_ARTICLES", + $owner_uid, false); + + if (!$purge_unread) $query_limit = " unread = false AND "; + if (DB_TYPE == "pgsql") { /* $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE marked = false AND feed_id = '$feed_id' AND @@ -97,6 +115,7 @@ ttrss_entries.id = ref_id AND marked = false AND feed_id = '$feed_id' AND + $query_limit ttrss_entries.date_entered < NOW() - INTERVAL '$purge_interval days'"); } else { @@ -106,6 +125,7 @@ WHERE ttrss_entries.id = ref_id AND marked = false AND feed_id = '$feed_id' AND + $query_limit ttrss_entries.date_entered < NOW() - INTERVAL '$purge_interval days'"); } @@ -123,6 +143,7 @@ WHERE ttrss_entries.id = ref_id AND marked = false AND feed_id = '$feed_id' AND + $query_limit ttrss_entries.date_entered < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)"); $rows = mysql_affected_rows($link); @@ -185,6 +206,25 @@ } + function feed_purge_interval($link, $feed_id) { + + $result = db_query($link, "SELECT purge_interval, owner_uid FROM ttrss_feeds + WHERE id = '$feed_id'"); + + if (db_num_rows($result) == 1) { + $purge_interval = db_fetch_result($result, 0, "purge_interval"); + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + + if ($purge_interval == 0) $purge_interval = get_pref($link, + 'PURGE_OLD_DAYS', $user_id); + + return $purge_interval; + + } else { + return -1; + } + } + function purge_old_posts($link) { $user_id = $_SESSION["uid"]; -- cgit v1.2.3