diff --git a/include/ccache.php b/include/ccache.php index 406dec81d..b938b8664 100644 --- a/include/ccache.php +++ b/include/ccache.php @@ -139,6 +139,7 @@ $result = db_query("SELECT SUM(value) AS sv FROM ttrss_counters_cache, ttrss_feeds WHERE id = feed_id AND $cat_qpart AND + ttrss_counters_cache.owner_uid = $owner_uid AND ttrss_feeds.owner_uid = '$owner_uid'"); $unread = (int) db_fetch_result($result, 0, "sv"); diff --git a/include/rssfuncs.php b/include/rssfuncs.php index 1a26e0485..a27a91747 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -1393,6 +1393,24 @@ return $error; } */ + function cleanup_counters_cache($debug) { + $result = db_query("DELETE FROM ttrss_counters_cache + WHERE feed_id > 0 AND + (SELECT COUNT(id) FROM ttrss_feeds WHERE + id = feed_id AND + ttrss_counters_cache.owner_uid = ttrss_feeds.owner_uid) = 0"); + $frows = db_affected_rows($result); + + $result = db_query("DELETE FROM ttrss_cat_counters_cache + WHERE feed_id > 0 AND + (SELECT COUNT(id) FROM ttrss_feed_categories WHERE + id = feed_id AND + ttrss_cat_counters_cache.owner_uid = ttrss_feed_categories.owner_uid) = 0"); + $crows = db_affected_rows($result); + + _debug("Removed $frows (feeds) $crows (cats) orphaned counter cache entries."); + } + function housekeeping_common($debug) { expire_cached_files($debug); expire_lock_files($debug); @@ -1402,6 +1420,7 @@ _debug("Feedbrowser updated, $count feeds processed."); purge_orphans( true); + cleanup_counters_cache($debug); $rc = cleanup_tags( 14, 50000); _debug("Cleaned $rc cached tags.");