MFB: Show photos inline if possible.
authorJan Schneider <jan@horde.org>
Sun, 7 Jun 2009 10:48:39 +0000 (12:48 +0200)
committerJan Schneider <jan@horde.org>
Sun, 7 Jun 2009 10:48:53 +0000 (12:48 +0200)
framework/Mime/lib/Horde/Mime/Viewer/Vcard.php

index e7a7c3b..70fe970 100644 (file)
@@ -124,13 +124,20 @@ class Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Driver
 
             $photos = $vc->getAllAttributes('PHOTO');
             foreach ($photos as $photo) {
-                if (!isset($photo['params']['VALUE']) ||
-                    String::upper($photo['params']['VALUE']) != 'URI') {
-                    continue;
+                if (isset($photo['params']['VALUE']) &&
+                    String::upper($photo['params']['VALUE']) == 'URI') {
+                    $html .= $this->_row(_("Photo"),
+                                         '<img src="' . htmlspecialchars($photo['value']) . '" />',
+                                         false);
+                } elseif (isset($photo['params']['ENCODING']) &&
+                          String::upper($photo['params']['ENCODING']) == 'B' &&
+                          isset($photo['params']['TYPE']) &&
+                          ($GLOBALS['browser']->hasFeature('datauri') === true ||
+                           $GLOBALS['browser']->hasFeature('datauri') >= strlen($photo['value']))) {
+                    $html .= $this->_row(_("Photo"),
+                                         '<img src="data:' . htmlspecialchars($photo['params']['TYPE'] . ';base64,' . $photo['value']) . '" />',
+                                         false);
                 }
-                $html .= $this->_row(_("Photo"),
-                                     '<img src="' . htmlspecialchars($photo['value']) . '" />',
-                                     false);
             }
 
             $labels = $vc->getAllAttributes('LABEL');