MimeMagic: Use Config instead of globals
Change-Id: I07d1420deddeb886c714d7e2c99f8b456573a07f
This commit is contained in:
parent
6241a74fc8
commit
fa17ea15b0
1 changed files with 39 additions and 25 deletions
|
|
@ -172,6 +172,9 @@ class MimeMagic {
|
|||
*/
|
||||
private $mExtraInfo = '';
|
||||
|
||||
/** @var Config */
|
||||
private $mConfig;
|
||||
|
||||
/** @var MimeMagic The singleton instance
|
||||
*/
|
||||
private static $instance = null;
|
||||
|
|
@ -179,30 +182,40 @@ class MimeMagic {
|
|||
/** Initializes the MimeMagic object. This is called by MimeMagic::singleton().
|
||||
*
|
||||
* This constructor parses the mime.types and mime.info files and build internal mappings.
|
||||
*
|
||||
* @todo Make this constructor private once everything uses the singleton instance
|
||||
* @param Config $config
|
||||
*/
|
||||
function __construct() {
|
||||
function __construct( Config $config = null ) {
|
||||
if ( !$config ) {
|
||||
wfDebug( __METHOD__ . ' called with no Config instance passed to it' );
|
||||
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
|
||||
}
|
||||
$this->mConfig = $config;
|
||||
|
||||
/**
|
||||
* --- load mime.types ---
|
||||
*/
|
||||
|
||||
global $wgMimeTypeFile, $IP;
|
||||
global $IP;
|
||||
|
||||
# Allow media handling extensions adding MIME-types and MIME-info
|
||||
wfRunHooks( 'MimeMagicInit', array( $this ) );
|
||||
|
||||
$types = MM_WELL_KNOWN_MIME_TYPES;
|
||||
|
||||
if ( $wgMimeTypeFile == 'includes/mime.types' ) {
|
||||
$wgMimeTypeFile = "$IP/$wgMimeTypeFile";
|
||||
$mimeTypeFile = $this->mConfig->get( 'MimeTypeFile' );
|
||||
if ( $mimeTypeFile == 'includes/mime.types' ) {
|
||||
$mimeTypeFile = "$IP/$mimeTypeFile";
|
||||
}
|
||||
|
||||
if ( $wgMimeTypeFile ) {
|
||||
if ( is_file( $wgMimeTypeFile ) and is_readable( $wgMimeTypeFile ) ) {
|
||||
wfDebug( __METHOD__ . ": loading mime types from $wgMimeTypeFile\n" );
|
||||
if ( $mimeTypeFile ) {
|
||||
if ( is_file( $mimeTypeFile ) and is_readable( $mimeTypeFile ) ) {
|
||||
wfDebug( __METHOD__ . ": loading mime types from $mimeTypeFile\n" );
|
||||
$types .= "\n";
|
||||
$types .= file_get_contents( $wgMimeTypeFile );
|
||||
$types .= file_get_contents( $mimeTypeFile );
|
||||
} else {
|
||||
wfDebug( __METHOD__ . ": can't load mime types from $wgMimeTypeFile\n" );
|
||||
wfDebug( __METHOD__ . ": can't load mime types from $mimeTypeFile\n" );
|
||||
}
|
||||
} else {
|
||||
wfDebug( __METHOD__ . ": no mime types file defined, using build-ins only.\n" );
|
||||
|
|
@ -266,20 +279,20 @@ class MimeMagic {
|
|||
* --- load mime.info ---
|
||||
*/
|
||||
|
||||
global $wgMimeInfoFile;
|
||||
if ( $wgMimeInfoFile == 'includes/mime.info' ) {
|
||||
$wgMimeInfoFile = "$IP/$wgMimeInfoFile";
|
||||
$mimeInfoFile = $this->mConfig->get( 'MimeInfoFile' );
|
||||
if ( $mimeInfoFile == 'includes/mime.info' ) {
|
||||
$mimeInfoFile = "$IP/$mimeInfoFile";
|
||||
}
|
||||
|
||||
$info = MM_WELL_KNOWN_MIME_INFO;
|
||||
|
||||
if ( $wgMimeInfoFile ) {
|
||||
if ( is_file( $wgMimeInfoFile ) and is_readable( $wgMimeInfoFile ) ) {
|
||||
wfDebug( __METHOD__ . ": loading mime info from $wgMimeInfoFile\n" );
|
||||
if ( $mimeInfoFile ) {
|
||||
if ( is_file( $mimeInfoFile ) and is_readable( $mimeInfoFile ) ) {
|
||||
wfDebug( __METHOD__ . ": loading mime info from $mimeInfoFile\n" );
|
||||
$info .= "\n";
|
||||
$info .= file_get_contents( $wgMimeInfoFile );
|
||||
$info .= file_get_contents( $mimeInfoFile );
|
||||
} else {
|
||||
wfDebug( __METHOD__ . ": can't load mime info from $wgMimeInfoFile\n" );
|
||||
wfDebug( __METHOD__ . ": can't load mime info from $mimeInfoFile\n" );
|
||||
}
|
||||
} else {
|
||||
wfDebug( __METHOD__ . ": no mime info file defined, using build-ins only.\n" );
|
||||
|
|
@ -352,7 +365,9 @@ class MimeMagic {
|
|||
*/
|
||||
public static function singleton() {
|
||||
if ( self::$instance === null ) {
|
||||
self::$instance = new MimeMagic;
|
||||
self::$instance = new MimeMagic(
|
||||
ConfigFactory::getDefaultInstance()->makeConfig( 'main' )
|
||||
);
|
||||
}
|
||||
return self::$instance;
|
||||
}
|
||||
|
|
@ -711,9 +726,9 @@ class MimeMagic {
|
|||
*/
|
||||
$xml = new XmlTypeCheck( $file );
|
||||
if ( $xml->wellFormed ) {
|
||||
global $wgXMLMimeTypes;
|
||||
if ( isset( $wgXMLMimeTypes[$xml->getRootElement()] ) ) {
|
||||
return $wgXMLMimeTypes[$xml->getRootElement()];
|
||||
$xmlMimeTypes = $this->mConfig->get( 'XMLMimeTypes' );
|
||||
if ( isset( $xmlMimeTypes[$xml->getRootElement()] ) ) {
|
||||
return $xmlMimeTypes[$xml->getRootElement()];
|
||||
} else {
|
||||
return 'application/xml';
|
||||
}
|
||||
|
|
@ -914,18 +929,17 @@ class MimeMagic {
|
|||
* @return string The MIME type of $file
|
||||
*/
|
||||
private function detectMimeType( $file, $ext = true ) {
|
||||
global $wgMimeDetectorCommand;
|
||||
|
||||
/** @todo Make $ext default to false. Or better, remove it. */
|
||||
if ( $ext ) {
|
||||
wfDebug( __METHOD__ . ": WARNING: use of the \$ext parameter is deprecated. "
|
||||
. "Use improveTypeFromExtension(\$mime, \$ext) instead.\n" );
|
||||
}
|
||||
|
||||
$mimeDetectorCommand = $this->mConfig->get( 'MimeDetectorCommand' );
|
||||
$m = null;
|
||||
if ( $wgMimeDetectorCommand ) {
|
||||
if ( $mimeDetectorCommand ) {
|
||||
$args = wfEscapeShellArg( $file );
|
||||
$m = wfShellExec( "$wgMimeDetectorCommand $args" );
|
||||
$m = wfShellExec( "$mimeDetectorCommand $args" );
|
||||
} elseif ( function_exists( "finfo_open" ) && function_exists( "finfo_file" ) ) {
|
||||
$mime_magic_resource = finfo_open( FILEINFO_MIME );
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue