summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRoland Angerer <[email protected]>2014-03-14 08:29:58 +0100
committerRoland Angerer <[email protected]>2014-03-14 08:35:39 +0100
commit95beaa147139647fd7844b6dda67a844da80e033 (patch)
treec1829397487284ed04a8135564adf56296ab982e /include
parentad593e43933d4908c361d5bc23d448ebd931eae6 (diff)
fixed feed caching logic for multiuser scenario
only vanilla feed data may be cached as every user may have different fetched feed hooks to apply
Diffstat (limited to 'include')
-rw-r--r--include/rssfuncs.php36
1 files changed, 18 insertions, 18 deletions
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index 0b88ef989..1c8de2b2f 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -267,7 +267,13 @@
$force_refetch = isset($_REQUEST["force_refetch"]);
- if (file_exists($cache_filename) &&
+ foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) {
+ $feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed);
+ }
+
+ // try cache
+ if (!$feed_data &&
+ file_exists($cache_filename) &&
is_readable($cache_filename) &&
!$auth_login && !$auth_pass &&
filemtime($cache_filename) > time() - 30) {
@@ -283,14 +289,8 @@
} else {
_debug("local cache will not be used for this feed", $debug_enabled);
}
- }
-
- if (!$rss) {
-
- foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) {
- $feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed);
- }
+ // fetch feed from source
if (!$feed_data) {
_debug("fetching [$fetch_url]...", $debug_enabled);
_debug("If-Modified-Since: ".gmdate('D, d M Y H:i:s \G\M\T', $last_article_timestamp), $debug_enabled);
@@ -329,6 +329,16 @@
}
}
} */
+
+ // cache vanilla feed data for re-use
+ if ($feed_data && !$auth_pass && !$auth_login && is_writable(CACHE_DIR . "/simplepie")) {
+ $new_rss_hash = sha1($feed_data);
+
+ if ($new_rss_hash != $rss_hash) {
+ _debug("saving $cache_filename", $debug_enabled);
+ @file_put_contents($cache_filename, $feed_data);
+ }
+ }
}
if (!$feed_data) {
@@ -380,16 +390,6 @@
if (!$rss->error()) {
- // cache data for later
- if (!$auth_pass && !$auth_login && is_writable(CACHE_DIR . "/simplepie")) {
- $new_rss_hash = sha1($feed_data);
-
- if ($new_rss_hash != $rss_hash && count($rss->get_items()) > 0 ) {
- _debug("saving $cache_filename", $debug_enabled);
- @file_put_contents($cache_filename, $feed_data);
- }
- }
-
// We use local pluginhost here because we need to load different per-user feed plugins
$pluginhost->run_hooks(PluginHost::HOOK_FEED_PARSED, "hook_feed_parsed", $rss);