diff --git a/CHANGELOG.md b/CHANGELOG.md index 74da63aee..b4a6d1f01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,9 @@ ## mm/dd/2022 1. [](#new) - * Added support for generic `assets.link()` for external references. No pipeline support. - * Added support for `assets.addJsModule()` with full pipeline support. + * Added support for generic `assets.link()` for external references. No pipeline support + * Added support for `assets.addJsModule()` with full pipeline support + * Added `Utils::getExtensionsByMime()` method to get all the registered extensions for the specific mime type 2. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header * Improved `onPageFallBackUrl` event diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index ac0dd95d4..9d76e1dd6 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -831,6 +831,31 @@ abstract class Utils return $mimetypes; } + /** + * Return all extensions for given mimetype. The first extension is the default one. + * + * @param string $mime Mime type (eg 'image/jpeg') + * @return string[] List of extensions eg. ['jpg', 'jpe', 'jpeg'] + */ + public static function getExtensionsByMime($mime) + { + $mime = strtolower($mime); + + $media_types = (array)Grav::instance()['config']->get('media.types'); + + $list = []; + foreach ($media_types as $extension => $type) { + if ($extension === '' || $extension === 'defaults') { + continue; + } + + if (isset($type['mime']) && $type['mime'] === $mime) { + $list[] = $extension; + } + } + + return $list; + } /** * Return the mimetype based on filename extension