Merge "Replace some usages of &$this in hook parameters"
[lhc/web/wiklou.git] / includes / media / GIF.php
index 94aca61..5f23855 100644 (file)
@@ -65,11 +65,11 @@ class GIFHandler extends BitmapHandler {
                $meta = $image->getMetadata();
 
                if ( !$meta ) {
-                       return array();
+                       return [];
                }
                $meta = unserialize( $meta );
                if ( !isset( $meta['metadata'] ) ) {
-                       return array();
+                       return [];
                }
                unset( $meta['metadata']['_MW_GIF_VERSION'] );
 
@@ -170,7 +170,7 @@ class GIFHandler extends BitmapHandler {
                }
 
                /* Preserve original image info string, but strip the last char ')' so we can add even more */
-               $info = array();
+               $info = [];
                $info[] = $original;
 
                if ( $metadata['looped'] ) {
@@ -187,4 +187,25 @@ class GIFHandler extends BitmapHandler {
 
                return $wgLang->commaList( $info );
        }
+
+       /**
+        * Return the duration of the GIF file.
+        *
+        * Shown in the &query=imageinfo&iiprop=size api query.
+        *
+        * @param File $file
+        * @return float The duration of the file.
+        */
+       public function getLength( $file ) {
+               $serMeta = $file->getMetadata();
+               MediaWiki\suppressWarnings();
+               $metadata = unserialize( $serMeta );
+               MediaWiki\restoreWarnings();
+
+               if ( !$metadata || !isset( $metadata['duration'] ) || !$metadata['duration'] ) {
+                       return 0.0;
+               } else {
+                       return (float)$metadata['duration'];
+               }
+       }
 }