diff --git a/README b/README index e2620e061..2bea749b5 100644 --- a/README +++ b/README @@ -17,4 +17,6 @@ Requirements: Don't forget to copy config.php-dist to config.php and edit it. +icons/ directory should be writable for your httpd user. + Send your questions, comments, patches to Andrew Dolgov diff --git a/backend.php b/backend.php index 6bc6ab9df..fc973edb8 100644 --- a/backend.php +++ b/backend.php @@ -52,7 +52,19 @@ print ""; + $icon_file = ICONS_DIR . "/$feed_id.ico"; + + if (file_exists($icon_file) && filesize($icon_file) > 0) { + $feed_icon = ""; + } else { + $feed_icon = " "; + } + $feed = "$feed"; + if (ENABLE_FEED_ICONS) { + print "$feed_icon"; + } print "$feed"; print ""; print "$unread / "; diff --git a/config.php-dist b/config.php-dist index c7b3a55bd..c237d41a9 100644 --- a/config.php-dist +++ b/config.php-dist @@ -5,5 +5,9 @@ define(HEADLINES_PER_PAGE, 15); define(MIN_UPDATE_TIME, 1800); define(WEB_DEMO_MODE, false); + define(ENABLE_FEED_ICONS, true); + define(ICONS_DIR, "icons"); + define(ICONS_URL, "icons"); + ?> diff --git a/functions.php b/functions.php index 578020f23..4dafe4578 100644 --- a/functions.php +++ b/functions.php @@ -27,6 +27,38 @@ } + function check_feed_favicon($feed_url, $feed) { + $feed_url = str_replace("http://", "", $feed_url); + $feed_url = preg_replace("/\/.*$/", "", $feed_url); + + $icon_url = "http://$feed_url/favicon.ico"; + $icon_file = ICONS_DIR . "/$feed.ico"; + + if (!file_exists($icon_file)) { + + error_reporting(0); + $r = fopen($icon_url, "r"); + error_reporting (E_ERROR | E_WARNING | E_PARSE); + + if ($r) { + $tmpfname = tempnam("/tmp", "ttrssicon"); + + $t = fopen($tmpfname, "w"); + + while (!feof($r)) { + $buf = fread($r, 16384); + fwrite($t, $buf); + } + + fclose($r); + fclose($t); + + rename($tmpfname, $icon_file); + + } + } + } + function update_rss_feed($link, $feed_url, $feed) { if (WEB_DEMO_MODE) return; @@ -39,6 +71,10 @@ if ($rss) { + if (ENABLE_FEED_ICONS) { + check_feed_favicon($feed_url, $feed); + } + $result = pg_query("SELECT title FROM ttrss_feeds WHERE id = '$feed'"); $registered_title = pg_fetch_result($result, 0, "title"); @@ -186,6 +222,4 @@ } - - ?>