http://www.mediawiki.org/wiki/Special:Code/MediaWiki/90256
Revision: 90256 Author: bawolff Date: 2011-06-17 03:37:59 +0000 (Fri, 17 Jun 2011) Log Message: ----------- (follow-up r86567) per CR rename the class JpegOrTiffHandler to ExifBitmapHandler. Modified Paths: -------------- trunk/phase3/RELEASE-NOTES-1.19 trunk/phase3/includes/AutoLoader.php trunk/phase3/includes/media/Jpeg.php trunk/phase3/includes/media/Tiff.php Added Paths: ----------- trunk/phase3/includes/media/ExifBitmap.php Removed Paths: ------------- trunk/phase3/includes/media/JpegOrTiff.php Modified: trunk/phase3/RELEASE-NOTES-1.19 =================================================================== --- trunk/phase3/RELEASE-NOTES-1.19 2011-06-17 02:52:41 UTC (rev 90255) +++ trunk/phase3/RELEASE-NOTES-1.19 2011-06-17 03:37:59 UTC (rev 90256) @@ -95,7 +95,8 @@ 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. Modified: trunk/phase3/includes/AutoLoader.php =================================================================== --- trunk/phase3/includes/AutoLoader.php 2011-06-17 02:52:41 UTC (rev 90255) +++ trunk/phase3/includes/AutoLoader.php 2011-06-17 03:37:59 UTC (rev 90256) @@ -528,7 +528,7 @@ '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', Copied: trunk/phase3/includes/media/ExifBitmap.php (from rev 89893, trunk/phase3/includes/media/JpegOrTiff.php) =================================================================== --- trunk/phase3/includes/media/ExifBitmap.php (rev 0) +++ trunk/phase3/includes/media/ExifBitmap.php 2011-06-17 03:37:59 UTC (rev 90256) @@ -0,0 +1,127 @@ +<?php +/** + * @file + * @ingroup Media + */ + +/** + * Stuff specific to JPEG and (built-in) TIFF handler. + * All metadata related, since both JPEG and TIFF support Exif. + * + * @ingroup Media + */ +class ExifBitmapHandler extends BitmapHandler { + + const BROKEN_FILE = '-1'; // error extracting metadata + const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata. + + function convertMetadataVersion( $metadata, $version = 1 ) { + // basically flattens arrays. + $version = explode(';', $version, 2); + $version = intval($version[0]); + if ( $version < 1 || $version >= 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'; + } +} + Modified: trunk/phase3/includes/media/Jpeg.php =================================================================== --- trunk/phase3/includes/media/Jpeg.php 2011-06-17 02:52:41 UTC (rev 90255) +++ trunk/phase3/includes/media/Jpeg.php 2011-06-17 03:37:59 UTC (rev 90256) @@ -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 @@ // 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 @@ * 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; } } Deleted: trunk/phase3/includes/media/JpegOrTiff.php =================================================================== --- trunk/phase3/includes/media/JpegOrTiff.php 2011-06-17 02:52:41 UTC (rev 90255) +++ trunk/phase3/includes/media/JpegOrTiff.php 2011-06-17 03:37:59 UTC (rev 90256) @@ -1,127 +0,0 @@ -<?php -/** - * @file - * @ingroup Media - */ - -/** - * Stuff specific to JPEG and (built-in) TIFF handler. - * All metadata related, since both JPEG and TIFF support Exif. - * - * @ingroup Media - */ -class JpegOrTiffHandler extends BitmapHandler { - - const BROKEN_FILE = '-1'; // error extracting metadata - const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata. - - function convertMetadataVersion( $metadata, $version = 1 ) { - // basically flattens arrays. - $version = explode(';', $version, 2); - $version = intval($version[0]); - if ( $version < 1 || $version >= 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'; - } -} - Modified: trunk/phase3/includes/media/Tiff.php =================================================================== --- trunk/phase3/includes/media/Tiff.php 2011-06-17 02:52:41 UTC (rev 90255) +++ trunk/phase3/includes/media/Tiff.php 2011-06-17 03:37:59 UTC (rev 90256) @@ -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 @@ $data['MEDIAWIKI_EXIF_VERSION'] = Exif::version(); return serialize( $data ); } else { - return JpegOrTiffHandler::BROKEN_FILE; + return ExifBitmapHandler::BROKEN_FILE; } } else { return ''; _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs