X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fmedia%2FGIF.php;h=b998d185f9982125287ed6101c8768d86596615c;hb=895af6d03965c4c61498527fcd161eac07e8b269;hp=5992be11ede7e436db5e732f5290759999a5492e;hpb=c0cdf0e91186728c8e283bbcc977d6831f4b93d1;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/media/GIF.php b/includes/media/GIF.php index 5992be11ed..b998d185f9 100644 --- a/includes/media/GIF.php +++ b/includes/media/GIF.php @@ -44,15 +44,16 @@ class GIFHandler extends BitmapHandler { /** * @param File $image + * @param bool|IContextSource $context Context to use (optional) * @return array|bool */ - function formatMetadata( $image ) { + function formatMetadata( $image, $context = false ) { $meta = $this->getCommonMetaArray( $image ); if ( count( $meta ) === 0 ) { return false; } - return $this->formatMetadataHelper( $meta ); + return $this->formatMetadataHelper( $meta, $context ); } /** @@ -130,9 +131,9 @@ class GIFHandler extends BitmapHandler { return self::METADATA_GOOD; } - wfSuppressWarnings(); + MediaWiki\suppressWarnings(); $data = unserialize( $metadata ); - wfRestoreWarnings(); + MediaWiki\restoreWarnings(); if ( !$data || !is_array( $data ) ) { wfDebug( __METHOD__ . " invalid GIF metadata\n" ); @@ -160,9 +161,9 @@ class GIFHandler extends BitmapHandler { $original = parent::getLongDesc( $image ); - wfSuppressWarnings(); + MediaWiki\suppressWarnings(); $metadata = unserialize( $image->getMetadata() ); - wfRestoreWarnings(); + MediaWiki\restoreWarnings(); if ( !$metadata || $metadata['frameCount'] <= 1 ) { return $original; @@ -186,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']; + } + } }