]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - includes/media/Generic.php
MediaWiki 1.16.0
[autoinstallsdev/mediawiki.git] / includes / media / Generic.php
index c7ab7d81dbce9291e5fd6927eaee6e4fe0093b58..8a4d7054ec71510a3611bfb4dbf756a3527356ca 100644 (file)
@@ -1,13 +1,14 @@
 <?php
-
 /**
  * Media-handling base classes and generic functionality
+ * @file
+ * @ingroup Media
  */
 
 /**
  * Base media handler class
  *
- * @addtogroup Media
+ * @ingroup Media
  */
 abstract class MediaHandler {
        const TRANSFORM_LATER = 1;
@@ -43,7 +44,7 @@ abstract class MediaHandler {
        abstract function getParamMap();
 
        /*
-        * Validate a thumbnail parameter at parse time. 
+        * Validate a thumbnail parameter at parse time.
         * Return true to accept the parameter, and false to reject it.
         * If you return false, the parser will do something quiet and forgiving.
         */
@@ -60,28 +61,28 @@ abstract class MediaHandler {
        abstract function parseParamString( $str );
 
        /**
-        * Changes the parameter array as necessary, ready for transformation. 
+        * Changes the parameter array as necessary, ready for transformation.
         * Should be idempotent.
         * Returns false if the parameters are unacceptable and the transform should fail
         */
        abstract function normaliseParams( $image, &$params );
 
        /**
-        * Get an image size array like that returned by getimagesize(), or false if it 
+        * Get an image size array like that returned by getimagesize(), or false if it
         * can't be determined.
         *
-        * @param Image $image The image object, or false if there isn't one
-        * @param string $fileName The filename
-        * @return array
+        * @param $image File: the image object, or false if there isn't one
+        * @param $fileName String: the filename
+        * @return Array
         */
        abstract function getImageSize( $image, $path );
 
        /**
         * Get handler-specific metadata which will be saved in the img_metadata field.
         *
-        * @param Image $image The image object, or false if there isn't one
-        * @param string $fileName The filename
-        * @return string
+        * @param $image File: the image object, or false if there isn't one
+        * @param $path String: the filename
+        * @return String
         */
        function getMetadata( $image, $path ) { return ''; }
 
@@ -96,28 +97,41 @@ abstract class MediaHandler {
         */
        function isMetadataValid( $image, $metadata ) { return true; }
 
+
+       /**
+        * Get a MediaTransformOutput object representing an alternate of the transformed
+        * output which will call an intermediary thumbnail assist script.
+        *
+        * Used when the repository has a thumbnailScriptUrl option configured.
+        *
+        * Return false to fall back to the regular getTransform().
+        */
+       function getScriptedTransform( $image, $script, $params ) {
+               return false;
+       }
+
        /**
-        * Get a MediaTransformOutput object representing the transformed output. Does not 
+        * Get a MediaTransformOutput object representing the transformed output. Does not
         * actually do the transform.
         *
-        * @param Image $image The image object
-        * @param string $dstPath Filesystem destination path
-        * @param string $dstUrl Destination URL to use in output HTML
-        * @param array $params Arbitrary set of parameters validated by $this->validateParam()
+        * @param $image File: the image object
+        * @param $dstPath String: filesystem destination path
+        * @param $dstUrl String: Destination URL to use in output HTML
+        * @param $params Array: Arbitrary set of parameters validated by $this->validateParam()
         */
        function getTransform( $image, $dstPath, $dstUrl, $params ) {
                return $this->doTransform( $image, $dstPath, $dstUrl, $params, self::TRANSFORM_LATER );
        }
 
        /**
-        * Get a MediaTransformOutput object representing the transformed output. Does the 
+        * Get a MediaTransformOutput object representing the transformed output. Does the
         * transform unless $flags contains self::TRANSFORM_LATER.
         *
-        * @param Image $image The image object
-        * @param string $dstPath Filesystem destination path
-        * @param string $dstUrl Destination URL to use in output HTML
-        * @param array $params Arbitrary set of parameters validated by $this->validateParam()
-        * @param integer $flags A bitfield, may contain self::TRANSFORM_LATER
+        * @param $image File: the image object
+        * @param $dstPath String: filesystem destination path
+        * @param $dstUrl String: destination URL to use in output HTML
+        * @param $params Array: arbitrary set of parameters validated by $this->validateParam()
+        * @param $flags Integer: a bitfield, may contain self::TRANSFORM_LATER
         */
        abstract function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 );
 
@@ -127,14 +141,14 @@ abstract class MediaHandler {
         */
        function getThumbType( $ext, $mime ) {
                return array( $ext, $mime );
-       }       
+       }
 
        /**
         * True if the handled types can be transformed
         */
        function canRender( $file ) { return true; }
        /**
-        * True if handled types cannot be displayed directly in a browser 
+        * True if handled types cannot be displayed directly in a browser
         * but can be rendered
         */
        function mustRender( $file ) { return false; }
@@ -153,7 +167,7 @@ abstract class MediaHandler {
 
        /**
         * Get an associative array of page dimensions
-        * Currently "width" and "height" are understood, but this might be 
+        * Currently "width" and "height" are understood, but this might be
         * expanded in the future.
         * Returns false if unknown or if the document is not multi-page.
         */
@@ -165,6 +179,14 @@ abstract class MediaHandler {
                );
        }
 
+       /**
+        * Generic getter for text layer.
+        * Currently overloaded by PDF and DjVu handlers
+        */
+       function getPageText( $image, $page ) {
+               return false;
+       }
+
        /**
         * Get an array structure that looks like this:
         *
@@ -178,7 +200,7 @@ abstract class MediaHandler {
         *       ...
         *    )
         * )
-        * The UI will format this into a table where the visible fields are always 
+        * The UI will format this into a table where the visible fields are always
         * visible, and the collapsed fields are optionally visible.
         *
         * The function should return false if there is no metadata to display.
@@ -186,17 +208,17 @@ abstract class MediaHandler {
 
        /**
         * FIXME: I don't really like this interface, it's not very flexible
-        * I think the media handler should generate HTML instead. It can do 
+        * I think the media handler should generate HTML instead. It can do
         * all the formatting according to some standard. That makes it possible
         * to do things like visual indication of grouped and chained streams
         * in ogg container files.
         */
-       function formatMetadata( $image, $metadata ) {
+       function formatMetadata( $image ) {
                return false;
        }
 
        /**
-        * @fixme document this!
+        * @todo Fixme: document this!
         * 'value' thingy goes into a wikitext table; it used to be escaped but
         * that was incompatible with previous practice of customized display
         * with wikitext formatting via messages such as 'exif-model-value'.
@@ -221,10 +243,27 @@ abstract class MediaHandler {
        function getLongDesc( $file ) {
                global $wgUser;
                $sk = $wgUser->getSkin();
-               return wfMsg( 'file-info', $sk->formatSize( $file->getSize() ), $file->getMimeType() );
+               return wfMsgExt( 'file-info', 'parseinline',
+                       $sk->formatSize( $file->getSize() ),
+                       $file->getMimeType() );
+       }
+       
+       static function getGeneralShortDesc( $file ) {
+               global $wgLang;
+               $nbytes = '(' . wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
+                       $wgLang->formatNum( $file->getSize() ) ) . ')';
+               return "$nbytes";
+       }
+
+       static function getGeneralLongDesc( $file ) {
+               global $wgUser;
+               $sk = $wgUser->getSkin();
+               return wfMsgExt( 'file-info', 'parseinline',
+                       $sk->formatSize( $file->getSize() ),
+                       $file->getMimeType() );
        }
 
-       function getDimensionsString() {
+       function getDimensionsString( $file ) {
                return '';
        }
 
@@ -259,7 +298,7 @@ abstract class MediaHandler {
 /**
  * Media handler abstract base class for images
  *
- * @addtogroup Media
+ * @ingroup Media
  */
 abstract class ImageHandler extends MediaHandler {
        function canRender( $file ) {
@@ -341,13 +380,13 @@ abstract class ImageHandler extends MediaHandler {
        function getTransform( $image, $dstPath, $dstUrl, $params ) {
                return $this->doTransform( $image, $dstPath, $dstUrl, $params, self::TRANSFORM_LATER );
        }
-       
+
        /**
         * Validate thumbnail parameters and fill in the correct height
         *
-        * @param integer &$width Specified width (input/output)
-        * @param integer &$height Height (output only)
-        * @return false to indicate that an error should be returned to the user. 
+        * @param $width Integer: specified width (input/output)
+        * @param $height Integer: height (output only)
+        * @return false to indicate that an error should be returned to the user.
         */
        function validateThumbParams( &$width, &$height, $srcWidth, $srcHeight, $mimeType ) {
                $width = intval( $width );
@@ -372,7 +411,10 @@ abstract class ImageHandler extends MediaHandler {
                }
                $url = $script . '&' . wfArrayToCGI( $this->getScriptParams( $params ) );
                $page = isset( $params['page'] ) ? $params['page'] : false;
-               return new ThumbnailImage( $image, $url, $params['width'], $params['height'], $page );
+
+               if( $image->mustRender() || $params['width'] < $image->getWidth() ) {
+                       return new ThumbnailImage( $image, $url, $params['width'], $params['height'], $page );
+               }
        }
 
        function getImageSize( $image, $path ) {
@@ -384,28 +426,33 @@ abstract class ImageHandler extends MediaHandler {
 
        function getShortDesc( $file ) {
                global $wgLang;
-               $nbytes = '(' . wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
-                       $wgLang->formatNum( $file->getSize() ) ) . ')';
-               $widthheight = wfMsgHtml( 'widthheight', $file->getWidth(), $file->getHeight() );
-               
+               $nbytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
+                       $wgLang->formatNum( $file->getSize() ) );
+               $widthheight = wfMsgHtml( 'widthheight', $wgLang->formatNum( $file->getWidth() ) ,$wgLang->formatNum( $file->getHeight() ) );
+
                return "$widthheight ($nbytes)";
        }
 
        function getLongDesc( $file ) {
                global $wgLang;
-               return wfMsgHtml('file-info-size', $file->getWidth(), $file->getHeight(), 
-                       $wgLang->formatSize( $file->getSize() ), $file->getMimeType() );
+               return wfMsgExt('file-info-size', 'parseinline',
+                       $wgLang->formatNum( $file->getWidth() ),
+                       $wgLang->formatNum( $file->getHeight() ),
+                       $wgLang->formatSize( $file->getSize() ),
+                       $file->getMimeType() );
        }
 
        function getDimensionsString( $file ) {
+               global $wgLang;
                $pages = $file->pageCount();
+               $width = $wgLang->formatNum( $file->getWidth() );
+               $height = $wgLang->formatNum( $file->getHeight() );
+               $pagesFmt = $wgLang->formatNum( $pages );
+
                if ( $pages > 1 ) {
-                       return wfMsg( 'widthheightpage', $file->getWidth(), $file->getHeight(), $pages );
+                       return wfMsgExt( 'widthheightpage', 'parsemag', $width, $height, $pagesFmt );
                } else {
-                       return wfMsg( 'widthheight', $file->getWidth(), $file->getHeight() );
+                       return wfMsg( 'widthheight', $width, $height );
                }
        }
 }
-
-
-