Merge "EditPage: Allow the 'save' button's label to be 'publish' for public wikis"
[lhc/web/wiklou.git] / includes / media / MediaHandler.php
index bad1468..70a43f2 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  * @ingroup Media
  */
+use MediaWiki\MediaWikiServices;
 
 /**
  * Base media handler class
@@ -36,46 +37,22 @@ abstract class MediaHandler {
         */
        const MAX_ERR_LOG_SIZE = 65535;
 
-       /** @var MediaHandler[] Instance cache with array of MediaHandler */
-       protected static $handlers = array();
-
        /**
         * Get a MediaHandler for a given MIME type from the instance cache
         *
         * @param string $type
-        * @return MediaHandler
+        * @return MediaHandler|bool
         */
        static function getHandler( $type ) {
-               global $wgMediaHandlers;
-               if ( !isset( $wgMediaHandlers[$type] ) ) {
-                       wfDebug( __METHOD__ . ": no handler found for $type.\n" );
-
-                       return false;
-               }
-               $class = $wgMediaHandlers[$type];
-               if ( !isset( self::$handlers[$class] ) ) {
-                       self::$handlers[$class] = new $class;
-                       if ( !self::$handlers[$class]->isEnabled() ) {
-                               wfDebug( __METHOD__ . ": $class is not enabled\n" );
-                               self::$handlers[$class] = false;
-                       }
-               }
-
-               return self::$handlers[$class];
-       }
-
-       /**
-        * Resets all static caches
-        */
-       public static function resetCache() {
-               self::$handlers = array();
+               return MediaWikiServices::getInstance()
+                       ->getMediaHandlerFactory()->getHandler( $type );
        }
 
        /**
         * Get an associative array mapping magic word IDs to parameter names.
         * Will be used by the parser to identify parameters.
         */
-       abstract function getParamMap();
+       abstract public function getParamMap();
 
        /**
         * Validate a thumbnail parameter at parse time.
@@ -85,7 +62,7 @@ abstract class MediaHandler {
         * @param string $name
         * @param mixed $value
         */
-       abstract function validateParam( $name, $value );
+       abstract public function validateParam( $name, $value );
 
        /**
         * Merge a parameter array into a string appropriate for inclusion in filenames
@@ -93,7 +70,7 @@ abstract class MediaHandler {
         * @param array $params Array of parameters that have been through normaliseParams.
         * @return string
         */
-       abstract function makeParamString( $params );
+       abstract public function makeParamString( $params );
 
        /**
         * Parse a param string made with makeParamString back into an array
@@ -101,7 +78,7 @@ abstract class MediaHandler {
         * @param string $str The parameter string without file name (e.g. 122px)
         * @return array|bool Array of parameters or false on failure.
         */
-       abstract function parseParamString( $str );
+       abstract public function parseParamString( $str );
 
        /**
         * Changes the parameter array as necessary, ready for transformation.
@@ -161,8 +138,8 @@ abstract class MediaHandler {
         * @return string Version string
         */
        static function getMetadataVersion() {
-               $version = array( '2' ); // core metadata version
-               Hooks::run( 'GetMetadataVersion', array( &$version ) );
+               $version = [ '2' ]; // core metadata version
+               Hooks::run( 'GetMetadataVersion', [ &$version ] );
 
                return implode( ';', $version );
        }
@@ -317,13 +294,13 @@ abstract class MediaHandler {
                        // recognize the MIME type
                        $extensions = $magic->getExtensionsForType( $mime );
                        if ( $extensions ) {
-                               return array( strtok( $extensions, ' ' ), $mime );
+                               return [ strtok( $extensions, ' ' ), $mime ];
                        }
                }
 
                // The extension is correct (true) or the MIME type is unknown to
                // MediaWiki (null)
-               return array( $ext, $mime );
+               return [ $ext, $mime ];
        }
 
        /**
@@ -333,7 +310,7 @@ abstract class MediaHandler {
         * @return array
         */
        public function getStreamHeaders( $metadata ) {
-               return array();
+               return [];
        }
 
        /**
@@ -342,7 +319,7 @@ abstract class MediaHandler {
         * @param File $file
         * @return bool
         */
-       function canRender( $file ) {
+       public function canRender( $file ) {
                return true;
        }
 
@@ -353,7 +330,7 @@ abstract class MediaHandler {
         * @param File $file
         * @return bool
         */
-       function mustRender( $file ) {
+       public function mustRender( $file ) {
                return false;
        }
 
@@ -363,7 +340,7 @@ abstract class MediaHandler {
         * @param File $file
         * @return bool
         */
-       function isMultiPage( $file ) {
+       public function isMultiPage( $file ) {
                return false;
        }
 
@@ -437,10 +414,10 @@ abstract class MediaHandler {
        function getPageDimensions( File $image, $page ) {
                $gis = $this->getImageSize( $image, $image->getLocalRefPath() );
                if ( $gis ) {
-                       return array(
+                       return [
                                'width' => $gis[0],
                                'height' => $gis[1]
-                       );
+                       ];
                } else {
                        return false;
                }
@@ -525,10 +502,10 @@ abstract class MediaHandler {
         * @return array Array for use displaying metadata.
         */
        function formatMetadataHelper( $metadataArray, $context = false ) {
-               $result = array(
-                       'visible' => array(),
-                       'collapsed' => array()
-               );
+               $result = [
+                       'visible' => [],
+                       'collapsed' => []
+               ];
 
                $formatted = FormatMetadata::getFormattedData( $metadataArray, $context );
                // Sort fields into visible and collapsed
@@ -592,11 +569,11 @@ abstract class MediaHandler {
                        wfDebug( __METHOD__ . ' Unknown metadata name: ' . $id . "\n" );
                        $name = wfEscapeWikiText( $id );
                }
-               $array[$visibility][] = array(
+               $array[$visibility][] = [
                        'id' => "$type-$id",
                        'name' => $name,
                        'value' => $value
-               );
+               ];
        }
 
        /**
@@ -800,7 +777,7 @@ abstract class MediaHandler {
         * @since 1.23
         */
        public function getAvailableLanguages( File $file ) {
-               return array();
+               return [];
        }
 
        /**