<?php
/**
+ * Exif metadata reader
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
$this->makeFlatExifTags();
$this->debugFile( $this->basename, __FUNCTION__, true );
- wfSuppressWarnings();
- $data = exif_read_data( $this->file );
- wfRestoreWarnings();
+ if( function_exists( 'exif_read_data' ) ) {
+ wfSuppressWarnings();
+ $data = exif_read_data( $this->file );
+ wfRestoreWarnings();
+ } else {
+ throw new MWException( "Internal error: exif_read_data not present. \$wgShowEXIF may be incorrectly set or not checked by an extension." );
+ }
/**
* exif_read_data() will return false on invalid input, such as
* when somebody uploads a file called something.jpeg
* @param $fname String:
* @param $action Mixed: , default NULL.
*/
- function debug( $in, $fname, $action = NULL ) {
+ function debug( $in, $fname, $action = null ) {
if ( !$this->log ) {
return;
}
* @param $exif Array: the Exif data to format ( as returned by
* Exif::getFilteredData() )
*/
- function FormatExif( $exif ) {
+ function __construct( $exif ) {
$this->mExif = $exif;
}
$this->formatNum( $val ) );
break;
+ // Do not transform fields with pure text.
+ // For some languages the formatNum() conversion results to wrong output like
+ // foo,bar@example,com or foo٫bar@example٫com
+ case 'ImageDescription':
+ case 'Artist':
+ case 'Copyright':
+ $tags[$tag] = htmlspecialchars( $val );
+ break;
default:
$tags[$tag] = $this->formatNum( $val );
break;
return $a;
}
}
-
-/**
- * MW 1.6 compatibility
- */
-define( 'MW_EXIF_BYTE', Exif::BYTE );
-define( 'MW_EXIF_ASCII', Exif::ASCII );
-define( 'MW_EXIF_SHORT', Exif::SHORT );
-define( 'MW_EXIF_LONG', Exif::LONG );
-define( 'MW_EXIF_RATIONAL', Exif::RATIONAL );
-define( 'MW_EXIF_UNDEFINED', Exif::UNDEFINED );
-define( 'MW_EXIF_SLONG', Exif::SLONG );
-define( 'MW_EXIF_SRATIONAL', Exif::SRATIONAL );