aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2017-04-22 13:35:51 +0200
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2017-04-22 13:35:51 +0200
commit9588112e504785f024b9efaab4f3a2cfb176f8ef (patch)
tree6a0b0da9ebdb0bbfdf90bb747eae6bcdbecd1259 /lib
parentca4138d0217f699050f80aa6bfb37e121ebec9a6 (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.php3
-rw-r--r--lib/Favicon/Favicon.php17
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;
}