diff options
| author | 2017-04-22 13:35:51 +0200 | |
|---|---|---|
| committer | 2017-04-22 13:35:51 +0200 | |
| commit | 9588112e504785f024b9efaab4f3a2cfb176f8ef (patch) | |
| tree | 6a0b0da9ebdb0bbfdf90bb747eae6bcdbecd1259 /lib | |
| parent | ca4138d0217f699050f80aa6bfb37e121ebec9a6 (diff) | |
Re-apply Favicon FreshRSS patches
Patches sent upstream https://github.com/ArthurHoaro/favicon/pull/5
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Favicon/DataAccess.php | 3 | ||||
| -rw-r--r-- | lib/Favicon/Favicon.php | 17 |
2 files changed, 14 insertions, 6 deletions
diff --git a/lib/Favicon/DataAccess.php b/lib/Favicon/DataAccess.php index 2bfdf640e..838df66c3 100644 --- a/lib/Favicon/DataAccess.php +++ b/lib/Favicon/DataAccess.php @@ -15,7 +15,8 @@ class DataAccess { public function retrieveHeader($url) { $this->set_context(); - return @get_headers($url, TRUE); + $headers = @get_headers($url, 1); + return is_array($headers) ? array_change_key_case($headers) : array(); } public function saveCache($file, $data) { diff --git a/lib/Favicon/Favicon.php b/lib/Favicon/Favicon.php index f39adc7d7..7e6c42d6e 100644 --- a/lib/Favicon/Favicon.php +++ b/lib/Favicon/Favicon.php @@ -97,6 +97,9 @@ class Favicon $loop = TRUE; while ($loop && $max_loop-- > 0) { $headers = $this->dataAccess->retrieveHeader($url); + if (empty($headers)) { + return false; + } $exploded = explode(' ', $headers[0]); if( !isset($exploded[1]) ) { @@ -107,7 +110,7 @@ class Favicon switch ($status) { case '301': case '302': - $url = $headers['Location']; + $url = isset($headers['location']) ? $headers['location'] : ''; break; default: $loop = FALSE; @@ -196,7 +199,7 @@ class Favicon // Sometimes people lie, so check the status. // And sometimes, it's not even an image. Sneaky bastards! // If cacheDir isn't writable, that's not our problem - if ($favicon && is_writable($this->cacheDir) && !$this->checkImageMType($favicon)) { + if ($favicon && is_writable($this->cacheDir) && extension_loaded('fileinfo') && !$this->checkImageMType($favicon)) { $favicon = false; } @@ -311,9 +314,13 @@ class Favicon private function checkImageMTypeContent($content) { if(empty($content)) return false; - $fInfo = finfo_open(FILEINFO_MIME_TYPE); - $isImage = strpos(finfo_buffer($fInfo, $content), 'image') !== false; - finfo_close($fInfo); + $isImage = true; + try { + $fInfo = finfo_open(FILEINFO_MIME_TYPE); + $isImage = strpos(finfo_buffer($fInfo, $content), 'image') !== false; + finfo_close($fInfo); + } catch (Exception $e) { + } return $isImage; } |
