]> git.wh0rd.org Git - tt-rss.git/commitdiff
add patch by gmargo to improve favicon detection by content
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Thu, 29 Mar 2012 08:18:50 +0000 (12:18 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Thu, 29 Mar 2012 08:18:50 +0000 (12:18 +0400)
include/functions.php

index c19915bb7bfccd2b786630d1d00f92b55b49566e..6bc3ca4f9a5ea08a0910d13348497f7a513cb486 100644 (file)
                        $favicon_url = get_favicon_url($site_url);
 
                        if ($favicon_url) {
-                               $contents = fetch_file_contents($favicon_url, "image");
+                               // Limiting to "image" type misses those served with text/plain
+                               $contents = fetch_file_contents($favicon_url); // , "image");
+
+                               if ($contents) {
+                                       // Crude image type matching.
+                                       // Patterns gleaned from the file(1) source code.
+                                       if (preg_match('/^\x00\x00\x01\x00/', $contents)) {
+                                               // 0       string  \000\000\001\000        MS Windows icon resource
+                                               //error_log("check_feed_favicon: favicon_url=$favicon_url isa MS Windows icon resource");
+                                       }
+                                       elseif (preg_match('/^GIF8/', $contents)) {
+                                               // 0       string          GIF8            GIF image data
+                                               //error_log("check_feed_favicon: favicon_url=$favicon_url isa GIF image");
+                                       }
+                                       elseif (preg_match('/^\x89PNG\x0d\x0a\x1a\x0a/', $contents)) {
+                                               // 0       string          \x89PNG\x0d\x0a\x1a\x0a         PNG image data
+                                               //error_log("check_feed_favicon: favicon_url=$favicon_url isa PNG image");
+                                       }
+                                       elseif (preg_match('/^\xff\xd8/', $contents)) {
+                                               // 0       beshort         0xffd8          JPEG image data
+                                               //error_log("check_feed_favicon: favicon_url=$favicon_url isa JPG image");
+                                       }
+                                       else {
+                                               //error_log("check_feed_favicon: favicon_url=$favicon_url isa UNKNOWN type");
+                                               $contents = "";
+                                       }
+                               }
 
                                if ($contents) {
                                        $fp = @fopen($icon_file, "w");