aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers/feedController.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Controllers/feedController.php')
-rw-r--r--app/Controllers/feedController.php11
1 files changed, 11 insertions, 0 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 645175d19..fc03f7224 100644
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -400,6 +400,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
}
$isNewFeed = $feed->lastUpdate() <= 0;
+ $feedIsUnchanged = false;
try {
if ($simplePiePush) {
@@ -416,6 +417,10 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
}
} else {
$simplePie = $feed->load(false, $isNewFeed);
+ if ($simplePie === null) {
+ // Feed is cached and unchanged
+ $feedIsUnchanged = true;
+ }
}
$newGuids = $simplePie === null ? [] : $feed->loadGuids($simplePie);
$entries = $simplePie === null ? [] : $feed->loadEntries($simplePie);
@@ -525,6 +530,12 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
}
}
$entryDAO->updateLastSeen($feed->id(), array_keys($newGuids), $mtime);
+ } elseif ($feedIsUnchanged) {
+ // Feed cache was unchanged, so mark as seen the same entries as last time
+ if (!$entryDAO->inTransaction()) {
+ $entryDAO->beginTransaction();
+ }
+ $entryDAO->updateLastSeenUnchanged($feed->id(), $mtime);
}
unset($entries);