* @ingroup Media
*/
class ExifBitmapHandler extends BitmapHandler {
-
const BROKEN_FILE = '-1'; // error extracting metadata
const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata.
}
}
$metadata['MEDIAWIKI_EXIF_VERSION'] = 1;
+
return $metadata;
}
+ /**
+ * @param $image
+ * @param array $metadata
+ * @return bool|int
+ */
function isMetadataValid( $image, $metadata ) {
global $wgShowEXIF;
if ( !$wgShowEXIF ) {
# 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 ) {
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 )
- {
+ 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
+ * @param File $image
* @return array|bool
*/
function formatMetadata( $image ) {
public function getCommonMetaArray( File $file ) {
$metadata = $file->getMetadata();
- if ( $metadata === self::OLD_BROKEN_FILE ||
- $metadata === self::BROKEN_FILE ||
- $this->isMetadataValid( $file, $metadata ) === self::METADATA_BAD )
- {
+ if ( $metadata === self::OLD_BROKEN_FILE
+ || $metadata === self::BROKEN_FILE
+ || $this->isMetadataValid( $file, $metadata ) === self::METADATA_BAD
+ ) {
// So we don't try and display metadata from PagedTiffHandler
// for example when using InstantCommons.
return array();
* @return array
*/
function getImageSize( $image, $path ) {
- global $wgEnableAutoRotation;
$gis = parent::getImageSize( $image, $path );
// Don't just call $image->getMetadata(); FSFile::getPropsFromPath() calls us with a bogus object.
// This may mean we read EXIF data twice on initial upload.
- if ( $wgEnableAutoRotation ) {
+ if ( BitmapHandler::autoRotateEnabled() ) {
$meta = $this->getMetadata( $image, $path );
$rotation = $this->getRotationForExif( $meta );
} else {
$gis[0] = $gis[1];
$gis[1] = $width;
}
+
return $gis;
}
* @return int 0, 90, 180 or 270
*/
public function getRotation( $file ) {
- global $wgEnableAutoRotation;
- if ( !$wgEnableAutoRotation ) {
+ if ( !BitmapHandler::autoRotateEnabled() ) {
return 0;
}
$data = $file->getMetadata();
+
return $this->getRotationForExif( $data );
}
*
* @param string $data
* @return int 0, 90, 180 or 270
- * @todo FIXME orientation can include flipping as well; see if this is an
- * issue!
+ * @todo FIXME: Orientation can include flipping as well; see if this is an issue!
*/
protected function getRotationForExif( $data ) {
if ( !$data ) {
return 0;
}
}
+
return 0;
}
}