From 0a811cbd0d373f7a24d110ffc837d27f3112193a Mon Sep 17 00:00:00 2001 From: rhertogh Date: Thu, 18 May 2023 23:28:48 +0200 Subject: [PATCH] Fix #19837: Fixed processing of numeric file extensions in `yii\build\controllers\MimeTypeController::generateMimeTypesFile()` Fixed processing of nummeric file extensions in `\yii\build\controllers\MimeTypeController::generateMimeTypesFile()` and added common image file types (https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#common_image_file_types) --- build/controllers/MimeTypeController.php | 9 +++++++-- framework/CHANGELOG.md | 1 + framework/helpers/mimeTypes.php | 9 +++++++-- tests/framework/helpers/MimeTest.php | 9 +++++++-- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/build/controllers/MimeTypeController.php b/build/controllers/MimeTypeController.php index 29d8e59e3ca..ad72e960889 100644 --- a/build/controllers/MimeTypeController.php +++ b/build/controllers/MimeTypeController.php @@ -49,7 +49,12 @@ class MimeTypeController extends Controller * @var array MIME types to add to the ones parsed from Apache files */ private $additionalMimeTypes = [ + 'apng' => 'image/apng', + 'avif' => 'image/avif', + 'jfif' => 'image/jpeg', 'mjs' => 'text/javascript', + 'pjp' => 'image/jpeg', + 'pjpeg' => 'image/jpeg', ]; /** @@ -97,8 +102,8 @@ private function generateMimeTypesFile($outFile, $content) } } } - $mimeMap = array_merge($mimeMap, $this->additionalMimeTypes); - ksort($mimeMap); + $mimeMap = array_replace($mimeMap, $this->additionalMimeTypes); + ksort($mimeMap, SORT_STRING); $array = VarDumper::export($mimeMap); $content = << 'application/vnd.lotus-1-2-3', '3dml' => 'text/vnd.in3d.3dml', '3ds' => 'image/x-3ds', '3g2' => 'video/3gpp2', @@ -37,6 +38,7 @@ 'ait' => 'application/vnd.dvb.ait', 'ami' => 'application/vnd.amiga.ami', 'apk' => 'application/vnd.android.package-archive', + 'apng' => 'image/apng', 'appcache' => 'text/cache-manifest', 'application' => 'application/x-ms-application', 'apr' => 'application/vnd.lotus-approach', @@ -53,6 +55,7 @@ 'atx' => 'application/vnd.antix.game-component', 'au' => 'audio/basic', 'avi' => 'video/x-msvideo', + 'avif' => 'image/avif', 'aw' => 'application/applixware', 'azf' => 'application/vnd.airzip.filesecure.azf', 'azs' => 'application/vnd.airzip.filesecure.azs', @@ -318,12 +321,11 @@ 'htke' => 'application/vnd.kenameaapp', 'htm' => 'text/html', 'html' => 'text/html', + 'hvd' => 'application/vnd.yamaha.hv-dic', 'hvp' => 'application/vnd.yamaha.hv-voice', 'hvs' => 'application/vnd.yamaha.hv-script', 'i2g' => 'application/vnd.intergeo', 'icc' => 'application/vnd.iccprofile', - 0 => 'application/vnd.lotus-1-2-3', - 'hvd' => 'application/vnd.yamaha.hv-dic', 'ice' => 'x-conference/x-cooltalk', 'icm' => 'application/vnd.iccprofile', 'ico' => 'image/x-icon', @@ -356,6 +358,7 @@ 'jam' => 'application/vnd.jam', 'jar' => 'application/java-archive', 'java' => 'text/x-java-source', + 'jfif' => 'image/jpeg', 'jisp' => 'application/vnd.jisp', 'jlt' => 'application/vnd.hp-jlyt', 'jnlp' => 'application/x-java-jnlp-file', @@ -598,6 +601,8 @@ 'pgn' => 'application/x-chess-pgn', 'pgp' => 'application/pgp-encrypted', 'pic' => 'image/x-pict', + 'pjp' => 'image/jpeg', + 'pjpeg' => 'image/jpeg', 'pkg' => 'application/octet-stream', 'pki' => 'application/pkixcmp', 'pkipath' => 'application/pkix-pkipath', diff --git a/tests/framework/helpers/MimeTest.php b/tests/framework/helpers/MimeTest.php index 70c5a362175..aa533fb188d 100644 --- a/tests/framework/helpers/MimeTest.php +++ b/tests/framework/helpers/MimeTest.php @@ -39,6 +39,7 @@ public function testMimeAliases() public function testMimeTypes() { $coreMimeTypes = [ + 123 => 'application/vnd.lotus-1-2-3', '3dml' => 'text/vnd.in3d.3dml', '3ds' => 'image/x-3ds', '3g2' => 'video/3gpp2', @@ -67,6 +68,7 @@ public function testMimeTypes() 'ait' => 'application/vnd.dvb.ait', 'ami' => 'application/vnd.amiga.ami', 'apk' => 'application/vnd.android.package-archive', + 'apng' => 'image/apng', 'appcache' => 'text/cache-manifest', 'application' => 'application/x-ms-application', 'apr' => 'application/vnd.lotus-approach', @@ -83,6 +85,7 @@ public function testMimeTypes() 'atx' => 'application/vnd.antix.game-component', 'au' => 'audio/basic', 'avi' => 'video/x-msvideo', + 'avif' => 'image/avif', 'aw' => 'application/applixware', 'azf' => 'application/vnd.airzip.filesecure.azf', 'azs' => 'application/vnd.airzip.filesecure.azs', @@ -348,12 +351,11 @@ public function testMimeTypes() 'htke' => 'application/vnd.kenameaapp', 'htm' => 'text/html', 'html' => 'text/html', + 'hvd' => 'application/vnd.yamaha.hv-dic', 'hvp' => 'application/vnd.yamaha.hv-voice', 'hvs' => 'application/vnd.yamaha.hv-script', 'i2g' => 'application/vnd.intergeo', 'icc' => 'application/vnd.iccprofile', - 0 => 'application/vnd.lotus-1-2-3', - 'hvd' => 'application/vnd.yamaha.hv-dic', 'ice' => 'x-conference/x-cooltalk', 'icm' => 'application/vnd.iccprofile', 'ico' => 'image/x-icon', @@ -386,6 +388,7 @@ public function testMimeTypes() 'jam' => 'application/vnd.jam', 'jar' => 'application/java-archive', 'java' => 'text/x-java-source', + 'jfif' => 'image/jpeg', 'jisp' => 'application/vnd.jisp', 'jlt' => 'application/vnd.hp-jlyt', 'jnlp' => 'application/x-java-jnlp-file', @@ -628,6 +631,8 @@ public function testMimeTypes() 'pgn' => 'application/x-chess-pgn', 'pgp' => 'application/pgp-encrypted', 'pic' => 'image/x-pict', + 'pjp' => 'image/jpeg', + 'pjpeg' => 'image/jpeg', 'pkg' => 'application/octet-stream', 'pki' => 'application/pkixcmp', 'pkipath' => 'application/pkix-pkipath',