From b69b1c6c7de82c2b1c943d9f31b7e659ab4e1924 Mon Sep 17 00:00:00 2001 From: Silvio Date: Tue, 27 Apr 2010 18:29:29 -0300 Subject: Syncing to CVS head with proposed changes applied by the module maintainer --- exif.module | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'exif.module') diff --git a/exif.module b/exif.module index 324512c..734ee92 100755 --- a/exif.module +++ b/exif.module @@ -1,5 +1,5 @@ readExifTags($file, $ar_exif_fields)); $data2 = $exif->readIPTCTags($file, $ar_exif_fields); - $data3 = $exif->readXMPTags($file, $ar_exif_fields); - $data = array_merge($data1, $data2, $data3); + + if (class_exists('SXMPFiles')) { + $data3 = $exif->readXMPTags($file, $ar_exif_fields); + $data = array_merge($data1, $data2, $data3); + } + else { + $data = array_merge($data1, $data2); + } // Loop through every exif enabled field and set its value to the // corresponding exif value. If no exif value was found, set the field @@ -330,11 +336,25 @@ function _exif_reformat($data) { if (is_array($value)) { $value = array_change_key_case($value, CASE_LOWER); } - if ($key == 'gps_latitude') { - $value = _exif_DMS2D($value, $data['gps_gpslatituderef']); - } - elseif ($key == 'gps_longitude') { - $value = _exif_DMS2D($value, $data['gps_gpslongituderef']); + + // Check for individual keys + switch ($key) { + case 'gpslatitude': + $value = _exif_DMS2D($value, $data['gpslatituderef']); + break; + + case 'gpslongitude': + $value = _exif_DMS2D($value, $data['gpslongituderef']); + break; + + case 'gps_gpslatitude': + $value = _exif_DMS2D($value, $data['gps_gpslatituderef']); + break; + + case 'gps_gpslongitude': + $value = _exif_DMS2D($value, $data['gps_gpslongituderef']); + break; + } } return $data; @@ -345,13 +365,13 @@ function _exif_reformat($data) { */ function _exif_DMS2D($value, $ref) { $parts = split('/', $value[0]); - $dec = $parts[0] / $parts[1]; + $dec = (float) ((float) $parts[0] / (float) $parts[1]); $parts = split('/', $value[1]); - $dec += ($parts[0] / $parts[1]) / 60; + $dec += (float) (((float) $parts[0] / (float) $parts[1]) / 60); $parts = split('/', $value[2]); - $dec += ($parts[0] / $parts[1]) / 3600; + $dec += (float) (((float) $parts[0] / (float) $parts[1]) / 3600); if ($ref == 'S' || $ref == 'W') $dec *= -1; return $dec; -- cgit v1.2.3