X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=include%2Frssfuncs.php;h=f657f8413fffe379bda3d14385ebc57ea02b453d;hb=0084f0d1ba81522b243bb3b9138334ba0a7d2f00;hp=dc0d6b02da5f57a810ec34e93974b76f9be106f8;hpb=537eca400071c109df225440eb38957a7e335dbe;p=tt-rss.git diff --git a/include/rssfuncs.php b/include/rssfuncs.php index dc0d6b02..f657f841 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -2,6 +2,7 @@ define_default('DAEMON_UPDATE_LOGIN_LIMIT', 30); define_default('DAEMON_FEED_LIMIT', 500); define_default('DAEMON_SLEEP_INTERVAL', 120); + define_default('_MIN_CACHE_IMAGE_SIZE', 1024); function update_feedbrowser_cache() { @@ -183,7 +184,7 @@ while ($tline = db_fetch_assoc($tmp_result)) { if($debug) _debug(" => " . $tline["last_updated"] . ", " . $tline["id"] . " " . $tline["owner_uid"]); - $rss = update_rss_feed($tline["id"], true, false, $rss); + $rss = update_rss_feed($tline["id"], true, false); _debug_suppress(false); ++$nf; } @@ -208,7 +209,7 @@ _debug("start", $debug_enabled); $result = db_query("SELECT id,update_interval,auth_login, - feed_url,auth_pass,cache_images,last_updated, + feed_url,auth_pass,cache_images, mark_unread_on_update, owner_uid, pubsub_state, auth_pass_encrypted, (SELECT max(date_entered) FROM @@ -220,7 +221,6 @@ return false; } - $last_updated = db_fetch_result($result, 0, "last_updated"); $last_article_timestamp = @strtotime(db_fetch_result($result, 0, "last_article_timestamp")); if (defined('_DISABLE_HTTP_304')) @@ -268,12 +268,18 @@ $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, $last_article_timestamp, $auth_login, $auth_pass); + } + + // try cache + if (!$feed_data && + file_exists($cache_filename) && is_readable($cache_filename) && !$auth_login && !$auth_pass && filemtime($cache_filename) > time() - 30) { - _debug("using local cache.", $debug_enabled); + _debug("using local cache [$cache_filename].", $debug_enabled); @$feed_data = file_get_contents($cache_filename); @@ -284,14 +290,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); @@ -330,6 +330,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) { @@ -381,16 +391,6 @@ if (!$rss->error()) { - // cache data for later - if (!$auth_pass && !$auth_login && is_writable(CACHE_DIR . "/simplepie")) { - $new_rss_hash = sha1($rss_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); @@ -534,7 +534,7 @@ $rc = $s->subscribe($feed_self_url); - _debug("feed hub url found, subscribe request sent.", $debug_enabled); + _debug("feed hub url found, subscribe request sent. [rc=$rc]", $debug_enabled); db_query("UPDATE ttrss_feeds SET pubsub_state = 1 WHERE id = '$feed'"); @@ -570,9 +570,6 @@ if ($entry_timestamp == -1 || !$entry_timestamp || $entry_timestamp > time()) { $entry_timestamp = time(); - $no_orig_date = 'true'; - } else { - $no_orig_date = 'false'; } $entry_timestamp_fmt = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); @@ -614,6 +611,8 @@ $entry_language = db_escape_string(substr($entry_language[0], 0, 2)); _debug("detected language: $entry_language", $debug_enabled); + } else { + $entry_language = ""; } } @@ -688,6 +687,12 @@ foreach ($pluginhost->get_hooks(PluginHost::HOOK_ARTICLE_FILTER) as $plugin) { $article = $plugin->hook_article_filter($article); + + $article["stored"] = array("title" => $article["title"], + "content" => $article["content"], + "link" => $article["link"], + "tags" => $article["tags"], + "author" => $article["author"]); } $entry_tags = $article["tags"]; @@ -698,7 +703,6 @@ $entry_plugin_data = db_escape_string($article["plugin_data"]); $entry_content = $article["content"]; // escaped below - _debug("plugin data: $entry_plugin_data", $debug_enabled); if ($cache_images && is_writable(CACHE_DIR . '/images')) @@ -742,7 +746,7 @@ '$entry_timestamp_fmt', '$entry_content', '$content_hash', - $no_orig_date, + false, NOW(), '$date_feed_processed', '$entry_comments', @@ -770,9 +774,7 @@ // now it should exist, if not - bad luck then $result = db_query("SELECT - id,content_hash,no_orig_date,title,plugin_data,guid, - ".SUBSTRING_FOR_DATE."(date_updated,1,19) as date_updated, - ".SUBSTRING_FOR_DATE."(updated,1,19) as updated, + id,content_hash,title,plugin_data,guid, num_comments FROM ttrss_entries @@ -789,8 +791,6 @@ $orig_content_hash = db_fetch_result($result, 0, "content_hash"); $orig_title = db_fetch_result($result, 0, "title"); $orig_num_comments = db_fetch_result($result, 0, "num_comments"); - $orig_date_updated = strtotime(db_fetch_result($result, - 0, "date_updated")); $orig_plugin_data = db_fetch_result($result, 0, "plugin_data"); $ref_id = db_fetch_result($result, 0, "id"); @@ -906,7 +906,7 @@ $p = new Publisher(PUBSUBHUBBUB_HUB); - $pubsub_result = $p->publish_update($rss_link); + /* $pubsub_result = */ $p->publish_update($rss_link); } $result = db_query( @@ -994,7 +994,7 @@ if (is_array($encs)) { foreach ($encs as $e) { $e_item = array( - $e->link, $e->type, $e->length, $e->title); + $e->link, $e->type, $e->length, $e->title, $e->width, $e->height); array_push($enclosures, $e_item); } } @@ -1014,14 +1014,16 @@ $enc_type = db_escape_string($enc[1]); $enc_dur = db_escape_string($enc[2]); $enc_title = db_escape_string($enc[3]); + $enc_width = intval($enc[4]); + $enc_height = intval($enc[5]); $result = db_query("SELECT id FROM ttrss_enclosures WHERE content_url = '$enc_url' AND post_id = '$entry_ref_id'"); if (db_num_rows($result) == 0) { db_query("INSERT INTO ttrss_enclosures - (content_url, content_type, title, duration, post_id) VALUES - ('$enc_url', '$enc_type', '$enc_title', '$enc_dur', '$entry_ref_id')"); + (content_url, content_type, title, duration, post_id, width, height) VALUES + ('$enc_url', '$enc_type', '$enc_title', '$enc_dur', '$entry_ref_id', $enc_width, $enc_height)"); } } @@ -1156,8 +1158,6 @@ } function cache_images($html, $site_url, $debug) { - $cache_dir = CACHE_DIR . "/images"; - libxml_use_internal_errors(true); $charset_hack = ' @@ -1181,7 +1181,7 @@ if (!file_exists($local_filename)) { $file_content = fetch_file_contents($src); - if ($file_content && strlen($file_content) > 1024) { + if ($file_content && strlen($file_content) > _MIN_CACHE_IMAGE_SIZE) { file_put_contents($local_filename, $file_content); } }