Jelajahi Sumber

Remove dependency to exif extension (#6624)

* Remove dependency to exit extension
fix https://github.com/FreshRSS/FreshRSS/issues/6573

* Fix return
Alexandre Alapetite 1 tahun lalu
induk
melakukan
783fe19baa
3 mengubah file dengan 18 tambahan dan 10 penghapusan
  1. 13 0
      lib/favicons.php
  2. 4 1
      p/api/fever.php
  3. 1 9
      p/f.php

+ 13 - 0
lib/favicons.php

@@ -132,3 +132,16 @@ function download_favicon(string $url, string $dest): bool {
 	return ($favicon != '' && file_put_contents($dest, $favicon) > 0) ||
 		@copy(DEFAULT_FAVICON, $dest);
 }
+
+function contentType(string $ico): string {
+	$ico_content_type = 'image/x-icon';
+	if (function_exists('mime_content_type')) {
+		$ico_content_type = mime_content_type($ico) ?: $ico_content_type;
+	}
+	switch ($ico_content_type) {
+		case 'image/svg':
+			$ico_content_type = 'image/svg+xml';
+			break;
+	}
+	return $ico_content_type;
+}

+ 4 - 1
p/api/fever.php

@@ -351,6 +351,9 @@ final class FeverAPI
 		if (!FreshRSS_Context::hasSystemConf()) {
 			return [];
 		}
+
+		require_once(LIB_PATH . '/favicons.php');
+
 		$favicons = [];
 		$salt = FreshRSS_Context::systemConf()->salt;
 		$myFeeds = $this->feedDAO->listFeeds();
@@ -365,7 +368,7 @@ final class FeverAPI
 
 			$favicons[] = [
 				'id' => $feed->id(),
-				'data' => image_type_to_mime_type(exif_imagetype($filename) ?: 0) . ';base64,' . base64_encode(file_get_contents($filename) ?: '')
+				'data' => contentType($filename) . ';base64,' . base64_encode(file_get_contents($filename) ?: '')
 			];
 		}
 

+ 1 - 9
p/f.php

@@ -49,15 +49,7 @@ if ($ico_mtime == false || $ico_mtime < $txt_mtime || ($ico_mtime < time() - (mt
 }
 
 if (!httpConditional($ico_mtime, mt_rand(14, 21) * 86400, 2)) {
-	$ico_content_type = 'image/x-icon';
-	if (function_exists('mime_content_type')) {
-		$ico_content_type = mime_content_type($ico);
-	}
-	switch ($ico_content_type) {
-		case 'image/svg':
-			$ico_content_type = 'image/svg+xml';
-			break;
-	}
+	$ico_content_type = contentType($ico);
 	header('Content-Type: ' . $ico_content_type);
 	header('Content-Disposition: inline; filename="' . $id . '.ico"');
 	readfile($ico);