]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
added exif back
authorCash Costello <cash.costello@gmail.com>
Sat, 14 Jul 2012 18:42:37 +0000 (14:42 -0400)
committerCash Costello <cash.costello@gmail.com>
Sat, 14 Jul 2012 18:42:37 +0000 (14:42 -0400)
classes/TidypicsImage.php
lib/exif.php
pages/photos/image/view.php
start.php
views/default/photos/sidebar.php [new file with mode: 0644]
views/default/photos/sidebar/exif.php [new file with mode: 0644]
views/default/tidypics/exif.php [deleted file]

index 26a3483a9c00d689297e08c4d855b9de194480ba..9081bc1fe29537d33cffb204ee48b8e71dbd35f8 100644 (file)
@@ -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);
        }
        
index 43a6403362e301774291b0cce308723b05d3d10b..8ca0dde0c39cc26ce81e283d0b30e98c7b33abb6 100644 (file)
@@ -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) {
index 1d359b6c7986b7af98ee9817a335ecee20538560..fc4a01320c270fdf3b53632cd484b3e206465548 100644 (file)
@@ -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,
        )),
index 9295dc7eb7f3cd32ad217023cd659617d73a9832..1e851b8f3ec61c4d57f2b23d017de0dd0c59ce0e 100644 (file)
--- a/start.php
+++ b/start.php
@@ -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 (file)
index 0000000..4c0feb7
--- /dev/null
@@ -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 (file)
index 0000000..1d4444b
--- /dev/null
@@ -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 (file)
index f21e2ef..0000000
+++ /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