]> git.wh0rd.org - tt-rss.git/commitdiff
subscribe_to_feed: use already fetched data when updating initially
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 7 May 2013 11:34:20 +0000 (15:34 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 7 May 2013 11:34:20 +0000 (15:34 +0400)
include/functions.php
include/rssfuncs.php

index 414196e9c7d9a6530adc2677c4c4b419f6be556a..e3e113786b82430f20c4aefdd06deef43d397c46 100644 (file)
                        $feed_id = db_fetch_result($result, 0, "id");
 
                        if ($feed_id) {
-                               update_rss_feed($feed_id, true);
+                               update_rss_feed($feed_id, false, false, false, $contents);
                        }
 
                        return array("code" => 1);
index 612c914c034b2f6cc75498c3f334b7cb9fccb059..d5fc14f79c9f2479e104da26293e0ec7b60c7d43 100644 (file)
 
        // ignore_daemon is not used
        function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false,
-               $override_url = false) {
+               $override_url = false, $override_data = false) {
 
                $debug_enabled = defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug'];
 
 
                $force_refetch = isset($_REQUEST["force_refetch"]);
 
-               if (file_exists($cache_filename) &&
+               if ($override_data) {
+                       $feed_data = $override_data;
+               }
+
+               if (!$feed_data && file_exists($cache_filename) &&
                        is_readable($cache_filename) &&
                        !$auth_login && !$auth_pass &&
                        filemtime($cache_filename) > time() - 30) {
                        _debug("local cache will not be used for this feed", $debug_enabled);
                }
 
-               if (!$rss) {
-
-                       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);
+               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);
 
-                               $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 : $last_article_timestamp);
+                       $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 : $last_article_timestamp);
 
-                               global $fetch_curl_used;
+                       global $fetch_curl_used;
 
-                               if (!$fetch_curl_used) {
-                                       $tmp = @gzdecode($feed_data);
+                       if (!$fetch_curl_used) {
+                               $tmp = @gzdecode($feed_data);
 
-                                       if ($tmp) $feed_data = $tmp;
-                               }
+                               if ($tmp) $feed_data = $tmp;
+                       }
 
-                               $feed_data = trim($feed_data);
+                       $feed_data = trim($feed_data);
 
-                               _debug("fetch done.", $debug_enabled);
+                       _debug("fetch done.", $debug_enabled);
 
-                               if ($feed_data) {
-                                       $error = verify_feed_xml($feed_data);
+                       if ($feed_data) {
+                               $error = verify_feed_xml($feed_data);
 
-                                       if ($error) {
-                                               _debug("error verifying XML, code: " . $error->code, $debug_enabled);
+                               if ($error) {
+                                       _debug("error verifying XML, code: " . $error->code, $debug_enabled);
 
-                                               if ($error->code == 26) {
-                                                       _debug("got error 26, trying to decode entities...", $debug_enabled);
+                                       if ($error->code == 26) {
+                                               _debug("got error 26, trying to decode entities...", $debug_enabled);
 
-                                                       $feed_data = html_entity_decode($feed_data, ENT_COMPAT, 'UTF-8');
+                                               $feed_data = html_entity_decode($feed_data, ENT_COMPAT, 'UTF-8');
 
-                                                       $error = verify_feed_xml($feed_data);
+                                               $error = verify_feed_xml($feed_data);
 
-                                                       if ($error) $feed_data = '';
-                                               }
+                                               if ($error) $feed_data = '';
                                        }
                                }
                        }
+               }
 
-                       if (!$feed_data) {
-                               global $fetch_last_error;
-                               global $fetch_last_error_code;
+               if (!$feed_data) {
+                       global $fetch_last_error;
+                       global $fetch_last_error_code;
 
-                               _debug("unable to fetch: $fetch_last_error [$fetch_last_error_code]", $debug_enabled);
+                       _debug("unable to fetch: $fetch_last_error [$fetch_last_error_code]", $debug_enabled);
 
-                               $error_escaped = '';
+                       $error_escaped = '';
 
-                               // If-Modified-Since
-                               if ($fetch_last_error_code != 304) {
-                                       $error_escaped = db_escape_string($fetch_last_error);
-                               } else {
-                                       _debug("source claims data not modified, nothing to do.", $debug_enabled);
-                               }
+                       // If-Modified-Since
+                       if ($fetch_last_error_code != 304) {
+                               $error_escaped = db_escape_string($fetch_last_error);
+                       } else {
+                               _debug("source claims data not modified, nothing to do.", $debug_enabled);
+                       }
 
-                               db_query(
-                                       "UPDATE ttrss_feeds SET last_error = '$error_escaped',
-                                               last_updated = NOW() WHERE id = '$feed'");
+                       db_query(
+                               "UPDATE ttrss_feeds SET last_error = '$error_escaped',
+                                       last_updated = NOW() WHERE id = '$feed'");
 
-                               return;
-                       }
+                       return;
                }
 
                $pluginhost = new PluginHost();