Better defaults for Driver functions.
authorMichael M Slusarz <slusarz@curecanti.org>
Sun, 16 Nov 2008 23:55:04 +0000 (16:55 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Sun, 16 Nov 2008 23:55:04 +0000 (16:55 -0700)
Allows easier extending by sub-drivers.
Convert security Viewer to new API.

framework/Mime/lib/Horde/Mime/Viewer/Driver.php
framework/Mime/lib/Horde/Mime/Viewer/report.php
framework/Mime/lib/Horde/Mime/Viewer/security.php

index 37c7bf7..cbaecb3 100644 (file)
@@ -143,6 +143,10 @@ class Horde_Mime_Viewer_Driver
      */
     protected function _render()
     {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->render('full')
+            : array();
     }
 
     /**
@@ -152,6 +156,10 @@ class Horde_Mime_Viewer_Driver
      */
     protected function _renderInline()
     {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->render('inline')
+            : array();
     }
 
     /**
@@ -161,6 +169,10 @@ class Horde_Mime_Viewer_Driver
      */
     protected function _renderInfo()
     {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->render('info')
+            : array();
     }
 
     /**
@@ -173,6 +185,11 @@ class Horde_Mime_Viewer_Driver
      */
     public function canRender($mode)
     {
+        $viewer = $this->_getViewer();
+        if ($viewer) {
+            return $viewer->canRender($mode);
+        }
+
         switch ($mode) {
         case 'full':
         case 'info':
@@ -194,7 +211,8 @@ class Horde_Mime_Viewer_Driver
      */
     public function embeddedMimeParts()
     {
-        return $this->_capability['embedded'];
+        $viewer = $this->_getViewer();
+        return ($viewer) ? $viewer->embeddedMimeParts() : $this->_capability['embedded'];
     }
 
     /**
@@ -246,4 +264,15 @@ class Horde_Mime_Viewer_Driver
     {
         return $this->_conf['_driver'];
     }
+
+    /**
+     * Return the underlying MIME Viewer for this part.
+     *
+     * @return mixed  A Horde_Mime_Viewer object, or false if not found.
+     */
+    protected function _getViewer()
+    {
+        return false;
+    }
+
 }
index 5c5df06..6a0c5ab 100644 (file)
 class Horde_Mime_Viewer_report extends Horde_Mime_Viewer_Driver
 {
     /**
-     * Can this driver render the the data?
-     *
-     * @param string $mode  The mode.  Either 'full', 'inline', or 'info'.
-     *
-     * @return boolean  True if the driver can render the data for the given
-     *                  view.
-     */
-    public function canRender($mode)
-    {
-        $viewer = $this->_getViewer();
-        return $viewer ? $viewer->canRender($mode) : false;
-    }
-
-    /**
-     * Does this MIME part possibly contain embedded MIME parts?
-     *
-     * @return boolean  True if this driver supports parsing embedded MIME
-     *                  parts.
-     */
-    public function embeddedMimeParts()
-    {
-        $viewer = $this->_getViewer();
-        return $viewer ? $viewer->embeddedMimeParts() : false;
-    }
-
-    /**
-     * Return the full rendered version of the Horde_Mime_Part object.
-     *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
-     */
-    protected function _render()
-    {
-        return $this->_toHTML(false);
-    }
-
-    /**
-     * Return the rendered inline version of the Horde_Mime_Part object.
-     *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
-     */
-    protected function _renderInline()
-    {
-        return $this->_toHTML(true);
-    }
-
-    /**
-     * Return an HTML rendered version of the part.
-     *
-     * @param boolean  Viewing inline?
-     *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
-     */
-    protected function _toHTML($inline)
-    {
-        $viewer = $this->_getViewer();
-        return $viewer
-            ? $viewer->render($inline ? 'inline' : 'full')
-            : array();
-    }
-
-    /**
      * Return the underlying MIME Viewer for this part.
      *
      * @return mixed  A Horde_Mime_Viewer object, or false if not found.
@@ -86,7 +25,9 @@ class Horde_Mime_Viewer_report extends Horde_Mime_Viewer_Driver
         }
 
         $viewer = Horde_Mime_Viewer::factory($this->_mimepart, 'message/' . String::lower($type));
-        $viewer->setParams($this->_params);
+        if ($viewer) {
+            $viewer->setParams($this->_params);
+        }
         return $viewer;
     }
 }
index c4b4f61..f5fd7f3 100644 (file)
 class Horde_Mime_Viewer_security extends Horde_Mime_Viewer_Driver
 {
     /**
-     * Stores the Horde_Mime_Viewer of the specified security protocol.
+     * Return the underlying MIME Viewer for this part.
      *
-     * @var Horde_Mime_Viewer
+     * @return mixed  A Horde_Mime_Viewer object, or false if not found.
      */
-    protected $_viewer;
-
-    /**
-     * The $mime_part class variable has the information to render
-     * out, encapsulated in a Horde_Mime_Part object.
-     *
-     * @param $params mixed  The parameters (if any) to pass to the underlying
-     *                       Horde_Mime_Viewer.
-     *
-     * @return string  Rendering of the content.
-     */
-    public function render($params = array())
-    {
-        /* Get the appropriate Horde_Mime_Viewer for the protocol specified. */
-        if (!($this->_resolveViewer())) {
-            return;
-        }
-
-        /* Render using the loaded Horde_Mime_Viewer object. */
-        return $this->_viewer->render($params);
-    }
-
-    /**
-     * Returns the content-type of the Viewer used to view the part.
-     *
-     * @return string  A content-type string.
-     */
-    public function getType()
+    protected function _getViewer()
     {
-        /* Get the appropriate Horde_Mime_Viewer for the protocol specified. */
-        if (!($this->_resolveViewer())) {
-            return 'application/octet-stream';
-        } else {
-            return $this->_viewer->getType();
+        if (!($protocol = $this->_mimepart->getContentTypeParameter('protocol'))) {
+            return false;
         }
-    }
-
-    /**
-     * Load a Horde_Mime_Viewer according to the protocol parameter stored
-     * in the Horde_Mime_Part to render. If unsuccessful, try to load a generic
-     * multipart Horde_Mime_Viewer.
-     *
-     * @return boolean  True on success, false on failure.
-     */
-    protected function _resolveViewer()
-    {
-        $viewer = null;
 
-        if (empty($this->_viewer)) {
-            $protocol = $this->mime_part->getContentTypeParameter('protocol');
-            if (empty($protocol)) {
-                return false;
-            }
-            $viewer = Horde_Mime_Viewer::factory($this->mime_part, $protocol);
-            if (empty($viewer) ||
-                (String::lower(get_class($viewer)) == 'mime_viewer_default')) {
-                $viewer = Horde_Mime_Viewer::factory($this->mime_part, $this->mime_part->getPrimaryType() . '/*');
-                if (empty($viewer)) {
-                    return false;
-                }
-            }
-            $this->_viewer = $viewer;
+        $viewer = Horde_Mime_Viewer::factory($this->_mimepart, $protocol);
+        if ($viewer) {
+            $viewer->setParams($this->_params);
         }
-
-        return true;
+        return $viewer;
     }
 }