summaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-10-22 11:35:12 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-10-22 11:35:12 +0200
commitc102123dc902b855842d3e9942b4629abba83ebb (patch)
tree8d3058583cc0727ef79daa6d5ab34b2dd669fb0e /service
parentdc8b8301d387d48e38624423cba9cf5323f26291 (diff)
add caching
Diffstat (limited to 'service')
-rw-r--r--service/feedservice.php17
1 files changed, 14 insertions, 3 deletions
diff --git a/service/feedservice.php b/service/feedservice.php
index 872f05ef8..6ecf543b1 100644
--- a/service/feedservice.php
+++ b/service/feedservice.php
@@ -192,14 +192,25 @@ class FeedService extends Service {
}
try {
- list(, $items) = $this->feedFetcher->fetch(
- $existingFeed->getUrl(), false);
+ list($fetchedFeed, $items) = $this->feedFetcher->fetch(
+ $existingFeed->getUrl(),
+ false,
+ $existingFeed->getLastModified(),
+ $existingFeed->getEtag()
+ );
+
+ // if there is no feed it means that no update took place
+ if (!$fetchedFeed) {
+ return $existingFeed;
+ }
// update number of articles on every feed update
if($existingFeed->getArticlesPerUpdate() !== count($items)) {
$existingFeed->setArticlesPerUpdate(count($items));
- $this->feedMapper->update($existingFeed);
}
+ $existingFeed->setLastModified($fetchedFeed->getLastModified());
+ $existingFeed->setEtag($fetchedFeed->getEtag());
+ $this->feedMapper->update($existingFeed);
// insert items in reverse order because the first one is
// usually the newest item