From bc0f07856012aa94eaea7c409e720d73f2fba0c3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 26 Aug 2007 05:00:30 +0100 Subject: [PATCH] enable caching of images --- config.php-dist | 12 +++++------- functions.php | 11 ++++++++--- image.php | 6 +++--- modules/pref-feeds.php | 30 ++++++++++++++++++++++++++++++ tt-rss.css | 2 +- 5 files changed, 47 insertions(+), 14 deletions(-) diff --git a/config.php-dist b/config.php-dist index 3664254e5..ecacf2028 100644 --- a/config.php-dist +++ b/config.php-dist @@ -167,13 +167,11 @@ // Cache directory for RSS feeds when using SimplePie define('SIMPLEPIE_CACHE_IMAGES', false); - // Ignore this option for now on, it doesn't work yet. - - // Cache feed images when using SimplePie. This will allow you to - // see images in feeds when originating server uses some sort of - // hotlink prevention at the expense of local bandwidth and - // disk space. - + // Allow caching feed images when using SimplePie, to bypass hotlink + // prevention and such at expense of local disk space and bandwidth. + // Note that you (or your users) also have to enable image caching + // in feed editor. + define('COUNTERS_MAX_AGE', 365); // Hard limit for unread counters calculation. Try tweaking this // parameter to speed up tt-rss when having a huge number of articles diff --git a/functions.php b/functions.php index d2f04216a..c321f9b4f 100644 --- a/functions.php +++ b/functions.php @@ -430,13 +430,14 @@ _debug("update_rss_feed: start"); } - $result = db_query($link, "SELECT update_interval,auth_login,auth_pass + $result = db_query($link, "SELECT update_interval,auth_login,auth_pass,cache_images FROM ttrss_feeds WHERE id = '$feed'"); $auth_login = db_fetch_result($result, 0, "auth_login"); $auth_pass = db_fetch_result($result, 0, "auth_pass"); $update_interval = db_fetch_result($result, 0, "update_interval"); + $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); if ($update_interval < 0) { return; } @@ -475,9 +476,13 @@ $rss->set_feed_url($fetch_url); $rss->set_output_encoding('UTF-8'); -/* if (SIMPLEPIE_CACHE_IMAGES) { + if (SIMPLEPIE_CACHE_IMAGES && $cache_images) { + if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) { + _debug("enabling image cache"); + } + $rss->set_image_handler('./image.php', 'i'); - } */ + } if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) { _debug("feed update interval (sec): " . diff --git a/image.php b/image.php index 49c3ec89b..6bed38b7c 100644 --- a/image.php +++ b/image.php @@ -1,6 +1,6 @@ diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php index af7f772c5..f0081a097 100644 --- a/modules/pref-feeds.php +++ b/modules/pref-feeds.php @@ -318,6 +318,27 @@ name=\"include_in_digest\" $checked>"; + $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); + + if ($cache_images) { + $checked = "checked"; + } else { + $checked = ""; + } + + if (ENABLE_SIMPLEPIE && SIMPLEPIE_CACHE_IMAGES) { + $disabled = ""; + $label_class = ""; + } else { + $disabled = "disabled"; + $label_class = "class='insensitive'"; + } + + print "
"; + print ""; print ""; @@ -351,6 +372,8 @@ $hidden = checkbox_to_sql_bool(db_escape_string($_POST["hidden"])); $include_in_digest = checkbox_to_sql_bool( db_escape_string($_POST["include_in_digest"])); + $cache_images = checkbox_to_sql_bool( + db_escape_string($_POST["cache_images"])); if (get_pref($link, 'ENABLE_FEED_CATS')) { if ($cat_id && $cat_id != 0) { @@ -371,6 +394,12 @@ $parent_qpart = 'parent_feed = NULL'; } + if (ENABLE_SIMPLEPIE && SIMPLEPIE_CACHE_IMAGES) { + $cache_images_qpart = "cache_images = $cache_images,"; + } else { + $cache_images_qpart = ""; + } + $result = db_query($link, "UPDATE ttrss_feeds SET $category_qpart $parent_qpart, title = '$feed_title', feed_url = '$feed_link', @@ -381,6 +410,7 @@ private = $private, rtl_content = $rtl_content, hidden = $hidden, + $cache_images_qpart include_in_digest = $include_in_digest WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]); diff --git a/tt-rss.css b/tt-rss.css index 5d7107087..a6b2d3b60 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -668,7 +668,7 @@ span.feed_error { color : red; } -span.insensitive, div.insensitive, li.insensitive { +span.insensitive, div.insensitive, li.insensitive, label.insensitive { color : gray; }