mirror of
https://github.com/yiisoft/yii2.git
synced 2026-03-06 15:28:58 +01:00
Fixes #15322: Fixed PHP 7.2 compatibility of FileHelper::getExtensionsByMimeType()
This commit is contained in:
committed by
GitHub
parent
23630abe6d
commit
1e00a050d7
@@ -34,6 +34,12 @@ class BaseFileHelper
|
||||
*/
|
||||
public static $mimeMagicFile = '@yii/helpers/mimeTypes.php';
|
||||
|
||||
/**
|
||||
* @var string the path (or alias) of a PHP file containing MIME aliases.
|
||||
* @since 2.0.14
|
||||
*/
|
||||
public static $mimeAliasesFile = '@yii/helpers/mimeAliases.php';
|
||||
|
||||
|
||||
/**
|
||||
* Normalizes a file/directory path.
|
||||
@@ -189,6 +195,11 @@ class BaseFileHelper
|
||||
*/
|
||||
public static function getExtensionsByMimeType($mimeType, $magicFile = null)
|
||||
{
|
||||
$aliases = static::loadMimeAliases(static::$mimeAliasesFile);
|
||||
if (isset($aliases[$mimeType])) {
|
||||
$mimeType = $aliases[$mimeType];
|
||||
}
|
||||
|
||||
$mimeTypes = static::loadMimeTypes($magicFile);
|
||||
return array_keys($mimeTypes, mb_strtolower($mimeType, 'UTF-8'), true);
|
||||
}
|
||||
@@ -214,6 +225,28 @@ class BaseFileHelper
|
||||
return self::$_mimeTypes[$magicFile];
|
||||
}
|
||||
|
||||
private static $_mimeAliases = [];
|
||||
|
||||
/**
|
||||
* Loads MIME aliases from the specified file.
|
||||
* @param string $aliasesFile the path (or alias) of the file that contains MIME type aliases.
|
||||
* If this is not set, the file specified by [[mimeAliasesFile]] will be used.
|
||||
* @return array the mapping from file extensions to MIME types
|
||||
* @since 2.0.14
|
||||
*/
|
||||
protected static function loadMimeAliases($aliasesFile)
|
||||
{
|
||||
if ($aliasesFile === null) {
|
||||
$aliasesFile = static::$mimeAliasesFile;
|
||||
}
|
||||
$aliasesFile = Yii::getAlias($aliasesFile);
|
||||
if (!isset(self::$_mimeAliases[$aliasesFile])) {
|
||||
self::$_mimeAliases[$aliasesFile] = require $aliasesFile;
|
||||
}
|
||||
|
||||
return self::$_mimeAliases[$aliasesFile];
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a whole directory as another one.
|
||||
* The files and sub-directories will also be copied over.
|
||||
|
||||
Reference in New Issue
Block a user