X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fmedia%2FExifBitmap.php;h=d3fa36dddc26dd3232f8c4d52f946e13c3fce36b;hb=adab1f5111c9173e5835f1fd970944219452e48e;hp=98c423fd57164134b8b5cf696dd504a4068daf0a;hpb=117424d9e57256ffb1c27f17ba6eb004d3944ce1;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/media/ExifBitmap.php b/includes/media/ExifBitmap.php index 98c423fd57..d3fa36dddc 100644 --- a/includes/media/ExifBitmap.php +++ b/includes/media/ExifBitmap.php @@ -61,16 +61,18 @@ class ExifBitmapHandler extends BitmapHandler { . $metadata['Software'][0][1] . ')'; } + $formatter = new FormatMetadata; + // ContactInfo also has to be dealt with specially if ( isset( $metadata['Contact'] ) ) { $metadata['Contact'] = - FormatMetadata::collapseContactInfo( + $formatter->collapseContactInfo( $metadata['Contact'] ); } foreach ( $metadata as &$val ) { if ( is_array( $val ) ) { - $val = FormatMetadata::flattenArray( $val, 'ul', $avoidHtml ); + $val = $formatter->flattenArrayReal( $val, 'ul', $avoidHtml ); } } $metadata['MEDIAWIKI_EXIF_VERSION'] = 1; @@ -84,7 +86,7 @@ class ExifBitmapHandler extends BitmapHandler { return self::METADATA_GOOD; } if ( $metadata === self::OLD_BROKEN_FILE ) { - # Old special value indicating that there is no EXIF data in the file. + # Old special value indicating that there is no Exif data in the file. # or that there was an error well extracting the metadata. wfDebug( __METHOD__ . ": back-compat version\n" ); return self::METADATA_COMPATIBLE; @@ -117,25 +119,32 @@ class ExifBitmapHandler extends BitmapHandler { * @return array|bool */ function formatMetadata( $image ) { - $metadata = $image->getMetadata(); + $meta = $this->getCommonMetaArray( $image ); + if ( count( $meta ) === 0 ) { + return false; + } + + return $this->formatMetadataHelper( $meta ); + } + + public function getCommonMetaArray( File $file ) { + $metadata = $file->getMetadata(); if ( $metadata === self::OLD_BROKEN_FILE || $metadata === self::BROKEN_FILE || - $this->isMetadataValid( $image, $metadata ) === self::METADATA_BAD ) + $this->isMetadataValid( $file, $metadata ) === self::METADATA_BAD ) { // So we don't try and display metadata from PagedTiffHandler // for example when using InstantCommons. - return false; + return array(); } $exif = unserialize( $metadata ); if ( !$exif ) { - return false; + return array(); } unset( $exif['MEDIAWIKI_EXIF_VERSION'] ); - if ( count( $exif ) == 0 ) { - return false; - } - return $this->formatMetadataHelper( $exif ); + + return $exif; } function getMetadataType( $image ) {