to stop mostly irrelevent classes from getting it. Also remove a method that is an exact duplicate of a base class (not sure whats with that). This also coincidently fixes the issue with when a foreign file repo uses PagedTiffHandler and the local one does not, and the builtin Tiff handler tries to treat the metadata as if it was its own form.
45 lines
1.5 KiB
PHP
45 lines
1.5 KiB
PHP
<?php
|
|
/**
|
|
* @file
|
|
* @ingroup Media
|
|
*/
|
|
|
|
/**
|
|
* 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.
|
|
*
|
|
* @ingroup Media
|
|
*/
|
|
class JpegHandler extends JpegOrTiffHandler {
|
|
|
|
function getMetadata ( $image, $filename ) {
|
|
try {
|
|
$meta = BitmapMetadataHandler::Jpeg( $filename );
|
|
if ( !is_array( $meta ) ) {
|
|
// This should never happen, but doesn't hurt to be paranoid.
|
|
throw new MWException('Metadata array is not an array');
|
|
}
|
|
$meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
|
|
return serialize( $meta );
|
|
}
|
|
catch ( MWException $e ) {
|
|
// 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
|
|
* * 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
|
|
* a broken file, or just no props found. A broken file is likely to stay broken, but
|
|
* a file which had no props could have props once the metadata support is improved.
|
|
* 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;
|
|
}
|
|
}
|
|
|
|
}
|
|
|