Re-apply Favicon FreshRSS patches

Patches sent upstream https://github.com/ArthurHoaro/favicon/pull/5
This commit is contained in:
Alexandre Alapetite
2017-04-22 13:35:51 +02:00
parent ca4138d021
commit 9588112e50
2 changed files with 14 additions and 6 deletions

View File

@@ -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) {

View File

@@ -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;
}