diff options
Diffstat (limited to 'includes/media/GIF.php')
-rw-r--r-- | includes/media/GIF.php | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/includes/media/GIF.php b/includes/media/GIF.php index 608fb257..5992be11 100644 --- a/includes/media/GIF.php +++ b/includes/media/GIF.php @@ -27,7 +27,6 @@ * @ingroup Media */ class GIFHandler extends BitmapHandler { - const BROKEN_FILE = '0'; // value to store in img_metadata if error extracting metadata. function getMetadata( $image, $filename ) { @@ -36,6 +35,7 @@ class GIFHandler extends BitmapHandler { } catch ( Exception $e ) { // Broken file? wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" ); + return self::BROKEN_FILE; } @@ -43,35 +43,49 @@ class GIFHandler extends BitmapHandler { } /** - * @param $image File + * @param File $image * @return array|bool */ function formatMetadata( $image ) { + $meta = $this->getCommonMetaArray( $image ); + if ( count( $meta ) === 0 ) { + return false; + } + + return $this->formatMetadataHelper( $meta ); + } + + /** + * Return the standard metadata elements for #filemetadata parser func. + * @param File $image + * @return array|bool + */ + public function getCommonMetaArray( File $image ) { $meta = $image->getMetadata(); if ( !$meta ) { - return false; + return array(); } $meta = unserialize( $meta ); - if ( !isset( $meta['metadata'] ) || count( $meta['metadata'] ) <= 1 ) { - return false; + if ( !isset( $meta['metadata'] ) ) { + return array(); } + unset( $meta['metadata']['_MW_GIF_VERSION'] ); - if ( isset( $meta['metadata']['_MW_GIF_VERSION'] ) ) { - unset( $meta['metadata']['_MW_GIF_VERSION'] ); - } - return $this->formatMetadataHelper( $meta['metadata'] ); + return $meta['metadata']; } /** - * @param $image File - * @todo unittests + * @todo Add unit tests + * + * @param File $image * @return bool */ function getImageArea( $image ) { $ser = $image->getMetadata(); if ( $ser ) { $metadata = unserialize( $ser ); + return $image->getWidth() * $image->getHeight() * $metadata['frameCount']; } else { return $image->getWidth() * $image->getHeight(); @@ -79,7 +93,7 @@ class GIFHandler extends BitmapHandler { } /** - * @param $image File + * @param File $image * @return bool */ function isAnimatedImage( $image ) { @@ -90,6 +104,7 @@ class GIFHandler extends BitmapHandler { return true; } } + return false; } @@ -101,6 +116,7 @@ class GIFHandler extends BitmapHandler { function canAnimateThumbnail( $file ) { global $wgMaxAnimatedGifArea; $answer = $this->getImageArea( $file ) <= $wgMaxAnimatedGifArea; + return $answer; } @@ -120,19 +136,23 @@ class GIFHandler extends BitmapHandler { if ( !$data || !is_array( $data ) ) { wfDebug( __METHOD__ . " invalid GIF metadata\n" ); + return self::METADATA_BAD; } if ( !isset( $data['metadata']['_MW_GIF_VERSION'] ) - || $data['metadata']['_MW_GIF_VERSION'] != GIFMetadataExtractor::VERSION ) { + || $data['metadata']['_MW_GIF_VERSION'] != GIFMetadataExtractor::VERSION + ) { wfDebug( __METHOD__ . " old but compatible GIF metadata\n" ); + return self::METADATA_COMPATIBLE; } + return self::METADATA_GOOD; } /** - * @param $image File + * @param File $image * @return string */ function getLongDesc( $image ) { |