]> git.wh0rd.org - tt-rss.git/commitdiff
base if-modified-since on last received article, not feed update timestamp
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Thu, 25 Apr 2013 14:42:48 +0000 (18:42 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Thu, 25 Apr 2013 14:42:48 +0000 (18:42 +0400)
classes/feeds.php
include/functions.php
include/rssfuncs.php

index d2a41266f49d2ed0422a855e01ae109038db036a..4b77f4ac48d55397d40bfb19d87f0c8cdb90e00b 100644 (file)
@@ -250,7 +250,8 @@ class Feeds extends Handler_Protected {
                $feed_title = $qfh_ret[1];
                $feed_site_url = $qfh_ret[2];
                $last_error = $qfh_ret[3];
-               $last_updated = make_local_datetime($qfh_ret[4], false);
+               $last_updated = strpos($qfh_ret[4], '1970-') === FALSE ?
+                       make_local_datetime($qfh_ret[4], false) : __("Never");
 
                $vgroup_last_feed = $vgr_last_feed;
 
index d42e111f27b768cf8f38ab502ef32dc3f6c94982..8d09abf7b663f300ee1dc087c8fa824c20a10974 100644 (file)
                global $utc_tz;
                global $tz_offset;
 
+               $timestamp = substr($timestamp, 0, 19);
+
                # We store date in UTC internally
                $dt = new DateTime($timestamp, $utc_tz);
 
index dbe76d2d377c2103f509b4d8b7a4a39f71a8ecf9..0cd41dc059c8510a94b02d4c2357c00b0962a089 100644 (file)
                $result = db_query("SELECT id,update_interval,auth_login,
                        feed_url,auth_pass,cache_images,last_updated,
                        mark_unread_on_update, owner_uid,
-                       pubsub_state, auth_pass_encrypted
+                       pubsub_state, auth_pass_encrypted,
+                       (SELECT max(date_entered) FROM
+                               ttrss_entries, ttrss_user_entries where ref_id = id AND feed_id = '$feed') AS last_article_timestamp
                        FROM ttrss_feeds WHERE id = '$feed'");
 
                if (db_num_rows($result) == 0) {
                }
 
                $last_updated = db_fetch_result($result, 0, "last_updated");
+               $last_article_timestamp = @strtotime(db_fetch_result($result, 0, "last_article_timestamp"));
                $owner_uid = db_fetch_result($result, 0, "owner_uid");
                $mark_unread_on_update = sql_bool_to_bool(db_fetch_result($result,
                        0, "mark_unread_on_update"));
                $rss = false;
                $rss_hash = false;
                $cache_timestamp = file_exists($cache_filename) ? filemtime($cache_filename) : 0;
-               $last_updated_timestamp = strtotime($last_updated);
 
                $force_refetch = isset($_REQUEST["force_refetch"]);
 
 
                                _debug("using local cache.", $debug_enabled);
 
-                               if ($cache_timestamp > $last_updated_timestamp) {
+                               if ($cache_timestamp > $last_article_timestamp) {
                                        @$rss_data = file_get_contents($cache_filename);
 
                                        if ($rss_data) {
                                }
                } else {
                        _debug("local cache will not be used for this feed", $debug_enabled);
-                       $cache_timestamp = 0;
                }
 
                if (!$rss) {
 
                        if (!$feed_data) {
-                               _debug("fetching [$fetch_url] (ts: $cache_timestamp/$last_updated_timestamp)", $debug_enabled);
+                               _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);
 
                                $feed_data = fetch_file_contents($fetch_url, false,
                                        $auth_login, $auth_pass, false,
                                        $no_cache ? FEED_FETCH_NO_CACHE_TIMEOUT : FEED_FETCH_TIMEOUT,
-                                       $force_refetch ? 0 : max($last_updated_timestamp, $cache_timestamp));
+                                       $force_refetch ? 0 : $last_article_timestamp);
 
                                global $fetch_curl_used;