summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--backend.php12
-rw-r--r--config.php-dist4
-rw-r--r--functions.php38
4 files changed, 54 insertions, 2 deletions
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 <[email protected]>
diff --git a/backend.php b/backend.php
index 6bc6ab9df..fc973edb8 100644
--- a/backend.php
+++ b/backend.php
@@ -52,7 +52,19 @@
print "<tr class=\"$class\" id=\"FEEDR-$feed_id\">";
+ $icon_file = ICONS_DIR . "/$feed_id.ico";
+
+ if (file_exists($icon_file) && filesize($icon_file) > 0) {
+ $feed_icon = "<img width=\"16\" height=\"16\"
+ src=\"" . ICONS_URL . "/$feed_id.ico\">";
+ } else {
+ $feed_icon = "&nbsp;";
+ }
+
$feed = "<a href=\"javascript:viewfeed($feed_id, 0);\">$feed</a>";
+ if (ENABLE_FEED_ICONS) {
+ print "<td>$feed_icon</td>";
+ }
print "<td id=\"FEEDN-$feed_id\">$feed</td>";
print "<td>";
print "<span id=\"FEEDU-$feed_id\">$unread</span>&nbsp;/&nbsp;";
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 @@
}
-
-
?>