diff options
| -rw-r--r-- | classes/TidypicsImage.php | 3 | ||||
| -rw-r--r-- | lib/exif.php | 39 | ||||
| -rw-r--r-- | pages/photos/image/view.php | 2 | ||||
| -rw-r--r-- | start.php | 1 | ||||
| -rw-r--r-- | views/default/photos/sidebar.php | 12 | ||||
| -rw-r--r-- | views/default/photos/sidebar/exif.php | 20 | ||||
| -rw-r--r-- | views/default/tidypics/exif.php | 14 | 
7 files changed, 56 insertions, 35 deletions
| diff --git a/classes/TidypicsImage.php b/classes/TidypicsImage.php index 26a3483a9..9081bc1fe 100644 --- a/classes/TidypicsImage.php +++ b/classes/TidypicsImage.php @@ -38,6 +38,7 @@ class TidypicsImage extends ElggFile {  			$this->simpletype = "image";  			$this->saveImageFile($data);  			$this->saveThumbnails(); +			$this->extractExifData();  		}  		return true; @@ -326,7 +327,7 @@ class TidypicsImage extends ElggFile {  	 * @warning image file must be saved first  	 */  	public function extractExifData() { -		include_once dirname(dirname(__FILE__)) . "/lib/exif.php"; +		elgg_load_library('tidypics:exif');  		td_get_exif($this);  	} diff --git a/lib/exif.php b/lib/exif.php index 43a640336..8ca0dde0c 100644 --- a/lib/exif.php +++ b/lib/exif.php @@ -8,47 +8,48 @@  /**   * Pull EXIF data from image file   *  - * @param TidypicsImage $file + * @param TidypicsImage $image   */ -function td_get_exif($file) { +function td_get_exif($image) {  	// catch for those who don't have exif module loaded  	if (!is_callable('exif_read_data')) {  		return;  	} -	$mime = $file->mimetype; +	$mime = $image->mimetype;  	if ($mime != 'image/jpeg' && $mime != 'image/pjpeg') {  		return;  	} -	$filename = $file->getFilenameOnFilestore(); -	$exif = exif_read_data($filename); -	create_metadata($file->getGUID(), "tp_exif", serialize($exif), "text", $file->getOwnerGUID(), ACCESS_PUBLIC); +	$filename = $image->getFilenameOnFilestore(); +	$exif = exif_read_data($filename, 'IFD0,EXIF', true); +	if (is_array($exif)) { +		$data = array_merge($exif['IFD0'], $exif['EXIF']); +		foreach ($data as $key => $value) { +			if (is_string($value)) { +				// there are sometimes unicode characters that cause problems with serialize +				$data[$key] = preg_replace( '/[^[:print:]]/', '', $value); +			} +		} +		$image->tp_exif = serialize($data); +	}  }  /**   * Grab array of EXIF data for display   *  - * @param int $file_guid GUID of TidypicsImage + * @param TidypicsImage $image   * @return array|false   */ -function tp_exif_formatted($file_guid) { - -	$metadata_exif = get_metadata_byname($file_guid, "tp_exif"); -	if (!$metadata_exif) {  -		// //try to load it from the file if its not in the database -		$file = new ElggFile($file_guid); -		td_get_exif($file); -		unset($file); -		$metadata_exif = get_metadata_byname($file_guid, "tp_exif"); -	} +function tp_exif_formatted($image) { -	if (!$metadata_exif) { +	$exif = $image->tp_exif; +	if (!$exif) {  		return false;  	} -	$exif = unserialize($metadata_exif["value"]); +	$exif = unserialize($exif);  	$model = $exif['Model'];  	if (!$model) { diff --git a/pages/photos/image/view.php b/pages/photos/image/view.php index 1d359b6c7..fc4a01320 100644 --- a/pages/photos/image/view.php +++ b/pages/photos/image/view.php @@ -57,7 +57,7 @@ $body = elgg_view_layout('content', array(  	'filter' => false,  	'content' => $content,  	'title' => $photo->getTitle(), -	'sidebar' => elgg_view('tidypics/sidebar', array( +	'sidebar' => elgg_view('photos/sidebar', array(  		'page' => 'view',  		'image' => $photo,  	)), @@ -17,6 +17,7 @@ function tidypics_init() {  	elgg_register_library('tidypics:core', "$base_dir/tidypics.php");  	elgg_register_library('tidypics:upload', "$base_dir/upload.php");  	elgg_register_library('tidypics:resize', "$base_dir/resize.php"); +	elgg_register_library('tidypics:exif', "$base_dir/exif.php");  	elgg_load_library('tidypics:core');  	// Set up site menu diff --git a/views/default/photos/sidebar.php b/views/default/photos/sidebar.php new file mode 100644 index 000000000..4c0feb72c --- /dev/null +++ b/views/default/photos/sidebar.php @@ -0,0 +1,12 @@ +<?php +/** + * Sidebar view + */ + +$page = elgg_extract('page', $vars); +$image = elgg_extract('image', $vars); +if ($image && $page == 'view') { +	if (elgg_get_plugin_setting('exif', 'tidypics')) { +		echo elgg_view('photos/sidebar/exif', $vars); +	} +} diff --git a/views/default/photos/sidebar/exif.php b/views/default/photos/sidebar/exif.php new file mode 100644 index 000000000..1d4444b53 --- /dev/null +++ b/views/default/photos/sidebar/exif.php @@ -0,0 +1,20 @@ +<?php +/** + * EXIF sidebar module + */ + +$image = $vars['image']; + +elgg_load_library('tidypics:exif'); + +$exif = tp_exif_formatted($image); +if ($exif) { +	$title = "EXIF"; +	$body = '<table class="elgg-table elgg-table-alt">'; +	foreach ($exif as $key => $value) { +		$body .= "<tr><td>$key</td><td>$value</td></tr>"; +	} +	$body .= '</table>'; + +	echo elgg_view_module('aside', $title, $body); +} diff --git a/views/default/tidypics/exif.php b/views/default/tidypics/exif.php deleted file mode 100644 index f21e2eff7..000000000 --- a/views/default/tidypics/exif.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -$guid = $vars['guid']; - -$exif = tp_exif_formatted($guid); -if ($exif) { -	echo '<div id="tidypics_exif">'; -	foreach ($exif as $name => $value) { -		echo $name . ': ' . $value . '<br />'; -	} -	echo '</div>'; -} - -?>
\ No newline at end of file | 
