From: Brian Wolff Date: Fri, 17 Jun 2011 03:37:59 +0000 (+0000) Subject: (follow-up r86567) per CR rename the class JpegOrTiffHandler to ExifBitmapHandler. X-Git-Tag: 1.31.0-rc.0~29481 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/pie.php?a=commitdiff_plain;h=35740d5b64eeeb02a37fa08aa367dad9baa2eae0;p=lhc%2Fweb%2Fwiklou.git (follow-up r86567) per CR rename the class JpegOrTiffHandler to ExifBitmapHandler. --- diff --git a/RELEASE-NOTES-1.19 b/RELEASE-NOTES-1.19 index 57640eb290..d1a49bc14b 100644 --- a/RELEASE-NOTES-1.19 +++ b/RELEASE-NOTES-1.19 @@ -95,7 +95,8 @@ production. as lastTabIndex(). * (bug 29332) Warn if user requests mediawiki-announce subscription but does not enter an e-mail address. -* (bug 25375) Add canonical namespaces to JavaScript "wgNamespaceIds" +* (bug 25375) Add canonical namespaces to JavaScript "wgNamespaceIds" +* The class JpegOrTiffHandler was renamed ExifBitmapHandler. === API changes in 1.19 === * BREAKING CHANGE: action=watch now requires POST and token. diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index ab53ab3d17..ab86371022 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -528,7 +528,7 @@ $wgAutoloadLocalClasses = array( 'IPTC' => 'includes/media/IPTC.php', 'JpegHandler' => 'includes/media/Jpeg.php', 'JpegMetadataExtractor' => 'includes/media/JpegMetadataExtractor.php', - 'JpegOrTiffHandler' => 'includes/media/JpegOrTiff.php', + 'ExifBitmapHandler' => 'includes/media/ExifBitmap.php', 'MediaHandler' => 'includes/media/Generic.php', 'MediaTransformError' => 'includes/media/MediaTransformOutput.php', 'MediaTransformOutput' => 'includes/media/MediaTransformOutput.php', diff --git a/includes/media/ExifBitmap.php b/includes/media/ExifBitmap.php new file mode 100644 index 0000000000..b63ef18136 --- /dev/null +++ b/includes/media/ExifBitmap.php @@ -0,0 +1,127 @@ += 2 ) { + return $metadata; + } + + $avoidHtml = true; + + if ( !is_array( $metadata ) ) { + $metadata = unserialize( $metadata ); + } + if ( !isset( $metadata['MEDIAWIKI_EXIF_VERSION'] ) || $metadata['MEDIAWIKI_EXIF_VERSION'] != 2 ) { + return $metadata; + } + + // Treat Software as a special case because in can contain + // an array of (SoftwareName, Version). + if (isset( $metadata['Software'] ) + && is_array( $metadata['Software'] ) + && is_array( $metadata['Software'][0]) + && isset( $metadata['Software'][0][0] ) + && isset( $metadata['Software'][0][1]) + ) { + $metadata['Software'] = $metadata['Software'][0][0] . ' (Version ' + . $metadata['Software'][0][1] . ')'; + } + + // ContactInfo also has to be dealt with specially + if ( isset( $metadata['Contact'] ) ) { + $metadata['Contact'] = + FormatMetadata::collapseContactInfo( + $metadata['Contact'] ); + } + + foreach ( $metadata as &$val ) { + if ( is_array( $val ) ) { + $val = FormatMetadata::flattenArray( $val, 'ul', $avoidHtml ); + } + } + $metadata['MEDIAWIKI_EXIF_VERSION'] = 1; + return $metadata; + } + + function isMetadataValid( $image, $metadata ) { + global $wgShowEXIF; + if ( !$wgShowEXIF ) { + # Metadata disabled and so an empty field is expected + return self::METADATA_GOOD; + } + if ( $metadata === self::OLD_BROKEN_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; + } + if ( $metadata === self::BROKEN_FILE ) { + return self::METADATA_GOOD; + } + wfSuppressWarnings(); + $exif = unserialize( $metadata ); + wfRestoreWarnings(); + if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) || + $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version() ) + { + if ( isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) && + $exif['MEDIAWIKI_EXIF_VERSION'] == 1 ) + { + //back-compatible but old + wfDebug( __METHOD__.": back-compat version\n" ); + return self::METADATA_COMPATIBLE; + } + # Wrong (non-compatible) version + wfDebug( __METHOD__.": wrong version\n" ); + return self::METADATA_BAD; + } + return self::METADATA_GOOD; + } + + /** + * @param $image File + * @return array|bool + */ + function formatMetadata( $image ) { + $metadata = $image->getMetadata(); + if ( !$metadata || + $this->isMetadataValid( $image, $metadata ) === self::METADATA_BAD ) + { + // So we don't try and display metadata from PagedTiffHandler + // for example when using InstantCommons. + return false; + } + + $exif = unserialize( $metadata ); + if ( !$exif ) { + return false; + } + unset( $exif['MEDIAWIKI_EXIF_VERSION'] ); + if ( count( $exif ) == 0 ) { + return false; + } + return $this->formatMetadataHelper( $exif ); + } + + function getMetadataType( $image ) { + return 'exif'; + } +} + diff --git a/includes/media/Jpeg.php b/includes/media/Jpeg.php index d8f713db11..7033409b0d 100644 --- a/includes/media/Jpeg.php +++ b/includes/media/Jpeg.php @@ -8,11 +8,12 @@ * JPEG specific handler. * Inherits most stuff from BitmapHandler, just here to do the metadata handler differently. * - * Metadata stuff common to Jpeg and built-in Tiff (not PagedTiffHandler) is in JpegOrTiffHandler. + * Metadata stuff common to Jpeg and built-in Tiff (not PagedTiffHandler) is + * in ExifBitmapHandler. * * @ingroup Media */ -class JpegHandler extends JpegOrTiffHandler { +class JpegHandler extends ExifBitmapHandler { function getMetadata ( $image, $filename ) { try { @@ -28,7 +29,7 @@ class JpegHandler extends JpegOrTiffHandler { // BitmapMetadataHandler throws an exception in certain exceptional cases like if file does not exist. wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" ); - /* This used to use 0 (JpegOrTiffHandler::OLD_BROKEN_FILE) for the cases + /* This used to use 0 (ExifBitmapHandler::OLD_BROKEN_FILE) for the cases * * No metadata in the file * * Something is broken in the file. * However, if the metadata support gets expanded then you can't tell if the 0 is from @@ -37,7 +38,7 @@ class JpegHandler extends JpegOrTiffHandler { * Thus switch to using -1 to denote only a broken file, and use an array with only * MEDIAWIKI_EXIF_VERSION to denote no props. */ - return JpegOrTiffHandler::BROKEN_FILE; + return ExifBitmapHandler::BROKEN_FILE; } } diff --git a/includes/media/JpegOrTiff.php b/includes/media/JpegOrTiff.php deleted file mode 100644 index d48350053b..0000000000 --- a/includes/media/JpegOrTiff.php +++ /dev/null @@ -1,127 +0,0 @@ -= 2 ) { - return $metadata; - } - - $avoidHtml = true; - - if ( !is_array( $metadata ) ) { - $metadata = unserialize( $metadata ); - } - if ( !isset( $metadata['MEDIAWIKI_EXIF_VERSION'] ) || $metadata['MEDIAWIKI_EXIF_VERSION'] != 2 ) { - return $metadata; - } - - // Treat Software as a special case because in can contain - // an array of (SoftwareName, Version). - if (isset( $metadata['Software'] ) - && is_array( $metadata['Software'] ) - && is_array( $metadata['Software'][0]) - && isset( $metadata['Software'][0][0] ) - && isset( $metadata['Software'][0][1]) - ) { - $metadata['Software'] = $metadata['Software'][0][0] . ' (Version ' - . $metadata['Software'][0][1] . ')'; - } - - // ContactInfo also has to be dealt with specially - if ( isset( $metadata['Contact'] ) ) { - $metadata['Contact'] = - FormatMetadata::collapseContactInfo( - $metadata['Contact'] ); - } - - foreach ( $metadata as &$val ) { - if ( is_array( $val ) ) { - $val = FormatMetadata::flattenArray( $val, 'ul', $avoidHtml ); - } - } - $metadata['MEDIAWIKI_EXIF_VERSION'] = 1; - return $metadata; - } - - function isMetadataValid( $image, $metadata ) { - global $wgShowEXIF; - if ( !$wgShowEXIF ) { - # Metadata disabled and so an empty field is expected - return self::METADATA_GOOD; - } - if ( $metadata === self::OLD_BROKEN_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; - } - if ( $metadata === self::BROKEN_FILE ) { - return self::METADATA_GOOD; - } - wfSuppressWarnings(); - $exif = unserialize( $metadata ); - wfRestoreWarnings(); - if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) || - $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version() ) - { - if ( isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) && - $exif['MEDIAWIKI_EXIF_VERSION'] == 1 ) - { - //back-compatible but old - wfDebug( __METHOD__.": back-compat version\n" ); - return self::METADATA_COMPATIBLE; - } - # Wrong (non-compatible) version - wfDebug( __METHOD__.": wrong version\n" ); - return self::METADATA_BAD; - } - return self::METADATA_GOOD; - } - - /** - * @param $image File - * @return array|bool - */ - function formatMetadata( $image ) { - $metadata = $image->getMetadata(); - if ( !$metadata || - $this->isMetadataValid( $image, $metadata ) === self::METADATA_BAD ) - { - // So we don't try and display metadata from PagedTiffHandler - // for example when using InstantCommons. - return false; - } - - $exif = unserialize( $metadata ); - if ( !$exif ) { - return false; - } - unset( $exif['MEDIAWIKI_EXIF_VERSION'] ); - if ( count( $exif ) == 0 ) { - return false; - } - return $this->formatMetadataHelper( $exif ); - } - - function getMetadataType( $image ) { - return 'exif'; - } -} - diff --git a/includes/media/Tiff.php b/includes/media/Tiff.php index 64710ce3d1..2674267424 100644 --- a/includes/media/Tiff.php +++ b/includes/media/Tiff.php @@ -11,7 +11,7 @@ * * @ingroup Media */ -class TiffHandler extends JpegOrTiffHandler { +class TiffHandler extends ExifBitmapHandler { /** * Conversion to PNG for inline display can be disabled here... @@ -63,7 +63,7 @@ class TiffHandler extends JpegOrTiffHandler { $data['MEDIAWIKI_EXIF_VERSION'] = Exif::version(); return serialize( $data ); } else { - return JpegOrTiffHandler::BROKEN_FILE; + return ExifBitmapHandler::BROKEN_FILE; } } else { return '';