horde/Mime_Viewer cleanups.
authorMichael M Slusarz <slusarz@curecanti.org>
Mon, 26 Jul 2010 21:06:48 +0000 (15:06 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Mon, 26 Jul 2010 23:33:43 +0000 (17:33 -0600)
Horde_Mime_Viewer_Driver -> Horde_Mime_Viewer_Base to be more consistent
with other packages.

Add some helper functions to reduce duplicate code.

55 files changed:
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Audio.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Base.php [new file with mode: 0644]
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Css.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Deb.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Default.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Driver.php [deleted file]
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Enriched.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Exception.php [new file with mode: 0644]
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Html.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Images.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Msexcel.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Mspowerpoint.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Msword.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Ooo.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Pdf.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Php.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Plain.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Rar.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Report.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Rfc822.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Richtext.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Rpm.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Rtf.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Security.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Simple.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Smil.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Source.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Srchighlite.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Tgz.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Tnef.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Vcard.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Wordperfect.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Zip.php
framework/Mime_Viewer/package.xml
gollem/lib/Mime/Viewer/Images.php
imp/lib/Contents.php
imp/lib/Mime/Viewer/Alternative.php
imp/lib/Mime/Viewer/Appledouble.php
imp/lib/Mime/Viewer/Enriched.php
imp/lib/Mime/Viewer/Html.php
imp/lib/Mime/Viewer/Images.php
imp/lib/Mime/Viewer/Itip.php
imp/lib/Mime/Viewer/Mdn.php
imp/lib/Mime/Viewer/Partial.php
imp/lib/Mime/Viewer/Pdf.php
imp/lib/Mime/Viewer/Pgp.php
imp/lib/Mime/Viewer/Plain.php
imp/lib/Mime/Viewer/Related.php
imp/lib/Mime/Viewer/Rfc822.php
imp/lib/Mime/Viewer/Smime.php
imp/lib/Mime/Viewer/Status.php
imp/lib/Mime/Viewer/Tnef.php
imp/lib/Mime/Viewer/Vcard.php
imp/lib/Mime/Viewer/Zip.php
whups/lib/Mime/Viewer/Zip.php

index 5d9da64..4a658e5 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Audio extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Audio extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -30,16 +30,10 @@ class Horde_Mime_Viewer_Audio extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_mimepart->getContents(),
-                'status' => array(),
-                'type' => $this->_mimepart->getType()
-            )
-        );
+        return $this->_renderReturn();
     }
 }
diff --git a/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Base.php b/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Base.php
new file mode 100644 (file)
index 0000000..6b540c5
--- /dev/null
@@ -0,0 +1,394 @@
+<?php
+/**
+ * The Horde_Mime_Viewer_Base:: class provides the API for specific viewer
+ * drivers to extend.
+ *
+ * Copyright 2008-2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @author   Michael Slusarz <slusarz@horde.org>
+ * @category Horde
+ * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @package  Mime_Viewer
+ */
+class Horde_Mime_Viewer_Base
+{
+    /**
+     * Viewer configuration.
+     *
+     * @var array
+     */
+    protected $_conf = array();
+
+    /**
+     * The Horde_Mime_Part object to render.
+     *
+     * @var Horde_Mime_Part
+     */
+    protected $_mimepart = null;
+
+    /**
+     * Viewer parameters.
+     *
+     * @var array
+     */
+    protected $_params = array();
+
+    /**
+     * This driver's display capabilities.
+     *
+     * @var array
+     */
+    protected $_capability = array(
+        'full' => false,
+        'info' => false,
+        'inline' => false,
+        'raw' => false
+    );
+
+    /**
+     * Metadata for the current viewer/data.
+     *
+     * @var array
+     */
+    protected $_metadata = array(
+        // Is the part *data* compressed (not the rendered data)?
+        'compressed' => false,
+        // Does this part contain emebedded MIME data?
+        'embedded' => false,
+        // Force inline display of this part?
+        'forceinline' => false
+    );
+
+    /**
+     * Constructor.
+     *
+     * @param Horde_Mime_Part $mime_part  The object with the data to be
+     *                                    rendered.
+     * @param array $conf                 Configuration specific to the
+     *                                    driver.
+     */
+    public function __construct(Horde_Mime_Part $mime_part,
+                                array $conf = array())
+    {
+        $this->_mimepart = $mime_part;
+        $this->_conf = $conf;
+    }
+
+    /**
+     * Sets the Horde_Mime_Part object for the class.
+     *
+     * @param Horde_Mime_Part $mime_part  The object with the data to be
+     *                                    rendered.
+     */
+    public function setMimePart(Horde_Mime_Part $mime_part)
+    {
+        $this->_mimepart = $mime_part;
+    }
+
+    /**
+     * Set parameters for use with this object.
+     *
+     * @param array $params  An array of params to add to the internal
+     *                       params list.
+     */
+    public function setParams(array $params = array())
+    {
+        $this->_params = array_merge($this->_params, $params);
+    }
+
+    /**
+     * Return the rendered version of the Horde_Mime_Part object.
+     *
+     * @param string $mode  The mode:
+     * <pre>
+     * 'full' - A full representation of the MIME part, for use in a view
+     *          where the output to the browser can be set to the value
+     *          returned in 'type'. This mode should only return a single
+     *          MIME ID entry for viewing and should not return any status
+     *          information.
+     * 'inline' - A representation of the MIME part that can be viewed inline
+     *            on a text/html page that may contain other HTML elements.
+     * 'info' - A representation of the MIME part that can be viewed inline
+     *          on an text/html page that may contain other HTML elements.
+     *          This view is not a full view, but rather a condensed view of
+     *          the contents of the MIME part. This view is intended to be
+     *          displayed to the user with the intention that this MIME part's
+     *          subparts may also independently be viewed inline.
+     * 'raw' - The raw data of the MIME part, generally useful for downloading
+     *         a part. This view exists in case this raw data needs to be
+     *         altered in any way.
+     * </pre>
+     *
+     * @return array  An array. The keys are the MIME parts that were handled
+     *                by the driver. The values are either null (which
+     *                indicates the driver is recommending that this
+     *                particular MIME ID should not be displayed) or an array
+     *                with the following keys:
+     * <pre>
+     * 'data' - (string) The rendered data.
+     * 'status' - (array) An array of status information to be displayed to
+     *            the user.  Consists of arrays with the following keys:
+     *            'class' - (string) The class to use for display.
+     *            'img' - (string) An image to display.
+     *            'text' - (array) The text to display.
+     * 'type' - (string) The MIME type of the rendered data.
+     * </pre>
+     */
+    public function render($mode)
+    {
+        switch ($mode) {
+        case 'full':
+            try {
+                return $this->_render();
+            } catch (Horde_Exception $e) {
+                $error = $e;
+            }
+            break;
+
+        case 'inline':
+            try {
+                return $this->_renderInline();
+            } catch (Horde_Exception $e) {
+                $error = $e;
+            }
+
+        case 'info':
+            try {
+                return $this->_renderInfo();
+            } catch (Horde_Exception $e) {
+                $error = $e;
+            }
+
+        case 'raw':
+            try {
+                return $this->_renderRaw();
+            } catch (Horde_Exception $e) {
+                $error = $e;
+            }
+        }
+
+        // TODO: Error handling
+    }
+
+    /**
+     * Return the full rendered version of the Horde_Mime_Part object.
+     *
+     * @return array  See render().
+     * @throws Horde_Exception
+     */
+    protected function _render()
+    {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->render('full')
+            : array();
+    }
+
+    /**
+     * Return the rendered inline version of the Horde_Mime_Part object.
+     *
+     * @return array  See render().
+     * @throws Horde_Exception
+     */
+    protected function _renderInline()
+    {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->render('inline')
+            : array();
+    }
+
+    /**
+     * Return the rendered information about the Horde_Mime_Part object.
+     *
+     * @return array  See render().
+     * @throws Horde_Exception
+     */
+    protected function _renderInfo()
+    {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->render('info')
+            : array();
+    }
+
+    /**
+     * Return the rendered information about the Horde_Mime_Part object.
+     *
+     * @return array  See render().
+     * @throws Horde_Exception
+     */
+    protected function _renderRaw()
+    {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->render('raw')
+            : array();
+    }
+
+    /**
+     * Can this driver render the the data?
+     *
+     * @param string $mode  The mode.  Either 'full', 'inline', 'info', or
+     *                      'raw'.
+     *
+     * @return boolean  True if the driver can render the data for the given
+     *                  view.
+     */
+    public function canRender($mode)
+    {
+        $viewer = $this->_getViewer();
+        if ($viewer) {
+            return $viewer->canRender($mode);
+        }
+
+        switch ($mode) {
+        case 'full':
+        case 'info':
+        case 'raw':
+            return $this->_capability[$mode];
+
+        case 'inline':
+            return $this->getConfigParam('inline') &&
+                ($this->_metadata['forceinline'] ||
+                 ($this->_capability['inline'] &&
+                  ($this->_mimepart->getDisposition() != 'attachment')));
+
+        default:
+            return 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()
+            : $this->_metadata['embedded'];
+    }
+
+    /**
+     * If this MIME part can contain embedded MIME part(s), and those part(s)
+     * exist, return a representation of that data.
+     *
+     * @return mixed  A Horde_Mime_Part object representing the embedded data.
+     *                Returns null if no embedded MIME part(s) exist.
+     */
+    public function getEmbeddedMimeParts()
+    {
+        $viewer = $this->_getViewer();
+        return $viewer
+            ? $viewer->getEmbeddedMimeParts()
+            : $this->_getEmbeddedMimeParts();
+    }
+
+    /**
+     * If this MIME part can contain embedded MIME part(s), and those part(s)
+     * exist, return a representation of that data.
+     *
+     * @return mixed  A Horde_Mime_Part object representing the embedded data.
+     *                Returns null if no embedded MIME part(s) exist.
+     */
+    protected function _getEmbeddedMimeParts()
+    {
+        return null;
+    }
+
+    /**
+     * Return a configuration parameter for the current viewer.
+     *
+     * @param string $param  The parameter name.
+     *
+     * @return mixed  The value of the parameter; returns null if the
+     *                parameter doesn't exist.
+     */
+    public function getConfigParam($param)
+    {
+        return isset($this->_conf[$param]) ? $this->_conf[$param] : null;
+    }
+
+    /**
+     * Returns the driver name for the current object.
+     *
+     * @return string  The driver name.
+     */
+    public function getDriver()
+    {
+        return $this->_conf['_driver'];
+    }
+
+    /**
+     * Returns metadata information on the viewer/data.
+     *
+     * @param string $data  The metadata key.
+     *
+     * @return mixed  The requested information, or null if the key doesn't
+     *                exist.
+     */
+    public function getMetadata($data)
+    {
+        return isset($this->_metadata[$data])
+            ? $this->_metadata[$data]
+            : null;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * Internal helper function to create render data array for a MIME Part
+     * object that only has a single part.
+     *
+     * @param string $data  The rendered data.
+     * @param string $type  The rendered type.
+     *
+     * @return array  See render().
+     */
+    protected function _renderReturn($data = null, $type = null)
+    {
+        return array(
+            $this->_mimepart->getMimeId() => array(
+                'data' => (is_null($data) ? $this->_mimepart->getContents() : $data),
+                'status' => array(),
+                'type' => (is_null($type) ? $this->_mimepart->getType() : $type)
+            )
+        );
+    }
+
+    /**
+     * Internal helper function to add base HTML tags to a render() return
+     * array that contains a single MIME part.
+     *
+     * @param array $data  See render().
+     *
+     * @return array  See render().
+     */
+    protected function _renderFullReturn($data)
+    {
+        if (!empty($data)) {
+            reset($data);
+            $data[key($data)]['data'] = '<html><body>' .
+                $data[key($data)]['data'] .
+                '</body></html>';
+        }
+
+        return $data;
+    }
+
+}
index d9e1a0b..87754c7 100644 (file)
@@ -66,7 +66,7 @@ class Horde_Mime_Viewer_Css extends Horde_Mime_Viewer_Source
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -86,19 +86,17 @@ class Horde_Mime_Viewer_Css extends Horde_Mime_Viewer_Source
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
         $css = preg_replace_callback('!(}|\*/).*?({|/\*)!s', array($this, '_handles'), htmlspecialchars($this->_mimepart->getContents(), ENT_NOQUOTES));
         $css = preg_replace_callback('!{[^}]*}!s', array($this, '_attributes'), $css);
         $css = preg_replace_callback('!/\*.*?\*/!s', array($this, '_comments'), $css);
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_lineNumber(trim($css)),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+
+        return $this->_renderReturn(
+            $this->_lineNumber(trim($css)),
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
@@ -127,4 +125,5 @@ class Horde_Mime_Viewer_Css extends Horde_Mime_Viewer_Source
     {
         return preg_replace(array_keys($this->_handlesPatterns), array_values($this->_handlesPatterns), $matches[0]);
     }
+
 }
index 193163a..00b2b1c 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Deb extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Deb extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -41,22 +41,17 @@ class Horde_Mime_Viewer_Deb extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        $ret = $this->_renderInfo();
-        if (!empty($ret)) {
-            reset($ret);
-            $ret[key($ret)]['data'] = '<html><body>' . $ret[key($ret)]['data'] . '</body></html>';
-        }
-        return $ret;
+        return $this->_renderFullReturn($this->_renderInfo());
     }
 
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
@@ -66,22 +61,21 @@ class Horde_Mime_Viewer_Deb extends Horde_Mime_Viewer_Driver
             return array();
         }
 
-        $tmp_deb = Horde::getTempFile('horde_deb');
+        $data = '';
 
+        $tmpin = Horde::getTempFile('horde_deb');
         file_put_contents($tmp_deb, $this->_mimepart->getContents());
 
-        $fh = popen($this->_conf['location'] . " -f $tmp_deb 2>&1", 'r');
-        while (($rc = fgets($fh, 8192))) {
+        $fh = popen($this->_conf['location'] . " -f $tmpin 2>&1", 'r');
+        while ($rc = fgets($fh, 8192)) {
             $data .= $rc;
         }
         pclose($fh);
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => '<pre>' . htmlspecialchars($data) . '</pre>',
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            '<pre>' . htmlspecialchars($data) . '</pre>',
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index 6c2c01d..321ade0 100644 (file)
@@ -14,6 +14,6 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Default extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Default extends Horde_Mime_Viewer_Base
 {
 }
diff --git a/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Driver.php b/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Driver.php
deleted file mode 100644 (file)
index 6b2c17a..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-<?php
-/**
- * The Horde_Mime_Viewer_Driver:: class provides the API for specific viewer
- * drivers to extend.
- *
- * Copyright 2008-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author   Michael Slusarz <slusarz@horde.org>
- * @category Horde
- * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
- * @package  Mime_Viewer
- */
-class Horde_Mime_Viewer_Driver
-{
-    /**
-     * Viewer configuration.
-     *
-     * @var array
-     */
-    protected $_conf = array();
-
-    /**
-     * The Horde_Mime_Part object to render.
-     *
-     * @var Horde_Mime_Part
-     */
-    protected $_mimepart = null;
-
-    /**
-     * Viewer parameters.
-     *
-     * @var array
-     */
-    protected $_params = array();
-
-    /**
-     * This driver's display capabilities.
-     *
-     * @var array
-     */
-    protected $_capability = array(
-        'full' => false,
-        'info' => false,
-        'inline' => false,
-        'raw' => false
-    );
-
-    /**
-     * Metadata for the current viewer/data.
-     *
-     * @var array
-     */
-    protected $_metadata = array(
-        // Is the part *data* compressed (not the rendered data)?
-        'compressed' => false,
-        // Does this part contain emebedded MIME data?
-        'embedded' => false,
-        // Force inline display of this part?
-        'forceinline' => false
-    );
-
-    /**
-     * Constructor.
-     *
-     * @param Horde_Mime_Part $mime_part  Reference to an object with the
-     *                                    information to be rendered.
-     * @param array $conf                 Configuration specific to the
-     *                                    driver.
-     */
-    public function __construct($mime_part, $conf = array())
-    {
-        $this->_mimepart = $mime_part;
-        $this->_conf = $conf;
-    }
-
-    /**
-     * Sets the Horde_Mime_Part object for the class.
-     *
-     * @param Horde_Mime_Part $mime_part  The object with the information to
-     *                                    be rendered.
-     */
-    public function setMIMEPart($mime_part)
-    {
-        $this->_mimepart = $mime_part;
-    }
-
-    /**
-     * Set parameters for use with this object.
-     *
-     * @param array $params  An array of params to add to the internal
-     *                       params list.
-     */
-    public function setParams($params = array())
-    {
-        $this->_params = array_merge($this->_params, $params);
-    }
-
-    /**
-     * Return the rendered version of the Horde_Mime_Part object.
-     *
-     * @param string $mode  The mode:
-     * <pre>
-     * 'full' - A full representation of the MIME part, for use in a view
-     *          where the output to the browser can be set to the value
-     *          returned in 'type'. This mode should only return a single
-     *          MIME ID entry for viewing and should not return any status
-     *          information.
-     * 'inline' - A representation of the MIME part that can be viewed inline
-     *            on a text/html page that may contain other HTML elements.
-     * 'info' - A representation of the MIME part that can be viewed inline
-     *          on an text/html page that may contain other HTML elements.
-     *          This view is not a full view, but rather a condensed view of
-     *          the contents of the MIME part. This view is intended to be
-     *          displayed to the user with the intention that this MIME part's
-     *          subparts may also independently be viewed inline.
-     * 'raw' - The raw data of the MIME part, generally useful for downloading
-     *         a part. This view exists in case this raw data needs to be
-     *         altered in any way.
-     * </pre>
-     *
-     * @return array  An array. The keys are the MIME parts that were handled
-     *                by the driver. The values are either null (which
-     *                indicates the driver is recommending that this
-     *                particular MIME ID should not be displayed) or an array
-     *                with the following keys:
-     * <pre>
-     * 'data' - (string) The rendered data.
-     * 'status' - (array) An array of status information to be displayed to
-     *            the user.  Consists of arrays with the following keys:
-     *            'class' - (string) The class to use for display.
-     *            'img' - (string) An image to display.
-     *            'text' - (array) The text to display.
-     * 'type' - (string) The MIME type of the rendered data.
-     * </pre>
-     */
-    public function render($mode)
-    {
-        switch ($mode) {
-        case 'full':
-            try {
-                return $this->_render();
-            } catch (Horde_Exception $e) {
-                $error = $e;
-            }
-            break;
-
-        case 'inline':
-            try {
-                return $this->_renderInline();
-            } catch (Horde_Exception $e) {
-                $error = $e;
-            }
-
-        case 'info':
-            try {
-                return $this->_renderInfo();
-            } catch (Horde_Exception $e) {
-                $error = $e;
-            }
-
-        case 'raw':
-            try {
-                return $this->_renderRaw();
-            } catch (Horde_Exception $e) {
-                $error = $e;
-            }
-        }
-
-        // TODO: Error handling
-    }
-
-    /**
-     * Return the full rendered version of the Horde_Mime_Part object.
-     *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
-     * @throws Horde_Exception
-     */
-    protected function _render()
-    {
-        $viewer = $this->_getViewer();
-        return $viewer
-            ? $viewer->render('full')
-            : array();
-    }
-
-    /**
-     * Return the rendered inline version of the Horde_Mime_Part object.
-     *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
-     * @throws Horde_Exception
-     */
-    protected function _renderInline()
-    {
-        $viewer = $this->_getViewer();
-        return $viewer
-            ? $viewer->render('inline')
-            : array();
-    }
-
-    /**
-     * Return the rendered information about the Horde_Mime_Part object.
-     *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
-     * @throws Horde_Exception
-     */
-    protected function _renderInfo()
-    {
-        $viewer = $this->_getViewer();
-        return $viewer
-            ? $viewer->render('info')
-            : array();
-    }
-
-    /**
-     * Return the rendered information about the Horde_Mime_Part object.
-     *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
-     * @throws Horde_Exception
-     */
-    protected function _renderRaw()
-    {
-        $viewer = $this->_getViewer();
-        return $viewer
-            ? $viewer->render('raw')
-            : array();
-    }
-
-    /**
-     * Can this driver render the the data?
-     *
-     * @param string $mode  The mode.  Either 'full', 'inline', 'info', or
-     *                      'raw'.
-     *
-     * @return boolean  True if the driver can render the data for the given
-     *                  view.
-     */
-    public function canRender($mode)
-    {
-        $viewer = $this->_getViewer();
-        if ($viewer) {
-            return $viewer->canRender($mode);
-        }
-
-        switch ($mode) {
-        case 'full':
-        case 'info':
-        case 'raw':
-            return $this->_capability[$mode];
-
-        case 'inline':
-            return $this->getConfigParam('inline') &&
-                ($this->_metadata['forceinline'] ||
-                 ($this->_capability['inline'] &&
-                  ($this->_mimepart->getDisposition() != 'attachment')));
-
-        default:
-            return 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()
-            : $this->_metadata['embedded'];
-    }
-
-    /**
-     * If this MIME part can contain embedded MIME part(s), and those part(s)
-     * exist, return a representation of that data.
-     *
-     * @return mixed  A Horde_Mime_Part object representing the embedded data.
-     *                Returns null if no embedded MIME part(s) exist.
-     */
-    public function getEmbeddedMimeParts()
-    {
-        $viewer = $this->_getViewer();
-        return $viewer
-            ? $viewer->getEmbeddedMimeParts()
-            : $this->_getEmbeddedMimeParts();
-    }
-
-    /**
-     * If this MIME part can contain embedded MIME part(s), and those part(s)
-     * exist, return a representation of that data.
-     *
-     * @return mixed  A Horde_Mime_Part object representing the embedded data.
-     *                Returns null if no embedded MIME part(s) exist.
-     */
-    protected function _getEmbeddedMimeParts()
-    {
-        return null;
-    }
-
-    /**
-     * Return a configuration parameter for the current viewer.
-     *
-     * @param string $param  The parameter name.
-     *
-     * @return mixed  The value of the parameter; returns null if the
-     *                parameter doesn't exist.
-     */
-    public function getConfigParam($param)
-    {
-        return isset($this->_conf[$param]) ? $this->_conf[$param] : null;
-    }
-
-    /**
-     * Returns the driver name for the current object.
-     *
-     * @return string  The driver name.
-     */
-    public function getDriver()
-    {
-        return $this->_conf['_driver'];
-    }
-
-    /**
-     * Returns metadata information on the viewer/data.
-     *
-     * @param string $data  The metadata key.
-     *
-     * @return mixed  The requested information, or null if the key doesn't
-     *                exist.
-     */
-    public function getMetadata($data)
-    {
-        return isset($this->_metadata[$data])
-            ? $this->_metadata[$data]
-            : null;
-    }
-
-    /**
-     * 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 f0375e5..e6f137f 100644 (file)
@@ -25,7 +25,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Enriched extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Enriched extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -42,32 +42,26 @@ class Horde_Mime_Viewer_Enriched extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => '<html><body>' . $this->_toHTML(false) . '</body></html>',
-                'status' => array(),
-                'type' => 'text/html; charset=' . $this->_mimepart->getCharset()
-            )
+        return $this->_renderReturn(
+            '<html><body>' . $this->_toHTML(false) . '</body></html>',
+            'text/html; charset=' . $this->_mimepart->getCharset()
         );
     }
 
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => Horde_String::convertCharset($this->_toHTML(true), $this->_mimepart->getCharset()),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            Horde_String::convertCharset($this->_toHTML(true), $this->_mimepart->getCharset()),
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
@@ -199,4 +193,5 @@ class Horde_Mime_Viewer_Enriched extends Horde_Mime_Viewer_Driver
         }
         return '<span style="color: #' . $colors[1] . $colors[2] . $colors[3] . '">' . $colors[4] . '</span>';
     }
+
 }
diff --git a/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Exception.php b/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Exception.php
new file mode 100644 (file)
index 0000000..cb2bbb1
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Exception handler for the horde/Mime_Viewer package.
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @author   Michael Slusarz <slusarz@horde.org>
+ * @category Horde
+ * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @package  Mime_Viewer
+ */
+class Horde_Mime_Viewer_Exception extends Horde_Exception_Prior
+{
+}
index 88bd2a4..5cbc16b 100644 (file)
@@ -15,7 +15,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -53,25 +53,22 @@ class Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
         $html = $this->_cleanHTML($this->_mimepart->getContents(), array('inline' => false));
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $html['html'],
-                'status' => array(),
-                'type' => $this->_mimepart->getType(true)
-            )
+        return $this->_renderReturn(
+            $html['html'],
+            $this->_mimepart->getType(true)
         );
     }
 
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
index 154ffb7..6f67663 100644 (file)
@@ -12,7 +12,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -45,17 +45,11 @@ class Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_mimepart->getContents(),
-                'status' => array(),
-                'type' => $this->_getType()
-            )
-        );
+        return $this->_renderReturn(null, $this->_getType());
     }
 
     /**
@@ -81,4 +75,5 @@ class Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Driver
             return $type;
         }
     }
+
 }
index 5257f14..4e7e81e 100644 (file)
@@ -9,11 +9,12 @@
  * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
  *
  * @author   Anil Madhavapeddy <anil@recoil.org>
+ * @author   Michael Slusarz <slusarz@horde.org>
  * @category Horde
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Msexcel extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Msexcel extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -30,7 +31,7 @@ class Horde_Mime_Viewer_Msexcel extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -40,20 +41,18 @@ class Horde_Mime_Viewer_Msexcel extends Horde_Mime_Viewer_Driver
             return array();
         }
 
-        $tmp_xls = Horde::getTempFile('horde_msexcel');
+        $tmp_in = Horde::getTempFile('horde_msexcel');
         $tmp_out = Horde::getTempFile('horde_msexcel');
 
         file_put_contents($tmp_xls, $this->_mimepart->getContents());
-        $args = ' -E Gnumeric_Excel:excel_dsf -T Gnumeric_html:html40 ' . $tmp_xls . ' ' . $tmp_out;
+        $args = ' -E Gnumeric_Excel:excel_dsf -T Gnumeric_html:html40 ' . $tmp_in . ' ' . $tmp_out;
 
         exec($this->_conf['location'] . $args);
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => file_get_contents($tmp_out),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_returnRender(
+            file_get_contents($tmp_out),
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index 7d1e381..aa185ab 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Mspowerpoint extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Mspowerpoint extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -30,7 +30,7 @@ class Horde_Mime_Viewer_Mspowerpoint extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -41,8 +41,8 @@ class Horde_Mime_Viewer_Mspowerpoint extends Horde_Mime_Viewer_Driver
         }
 
         $data = '';
-        $tmp_ppt = Horde::getTempFile('horde_mspowerpoint');
 
+        $tmp_ppt = Horde::getTempFile('horde_mspowerpoint');
         file_put_contents($tmp_ppt, $this->_mimepart->getContents());
 
         $fh = popen($this->_conf['location'] . " $tmp_ppt 2>&1", 'r');
@@ -51,12 +51,10 @@ class Horde_Mime_Viewer_Mspowerpoint extends Horde_Mime_Viewer_Driver
         }
         pclose($fh);
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $data,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_returnRender(
+            $data,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index 1c67f2f..c28287d 100644 (file)
@@ -9,11 +9,12 @@
  * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
  *
  * @author   Anil Madhavapeddy <anil@recoil.org>
+ * @author   Michael Slusarz <slusarz@curecanti.org>
  * @category Horde
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Msword extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Msword extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -30,7 +31,7 @@ class Horde_Mime_Viewer_Msword extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -40,12 +41,11 @@ class Horde_Mime_Viewer_Msword extends Horde_Mime_Viewer_Driver
             return array();
         }
 
-        $tmp_word = Horde::getTempFile('msword');
-        $tmp_output = Horde::getTempFile('msword');
-        $tmp_file = str_replace(Horde::getTempDir() . '/', '', $tmp_output);
+        $tmp_in = Horde::getTempFile('msword');
+        $tmp_out = Horde::getTempFile('msword');
 
-        file_put_contents($tmp_word, $this->_mimepart->getContents());
-        $args = ' --to=html --to-name=' . $tmp_output . ' ' . $tmp_word;
+        file_put_contents($tmp_in, $this->_mimepart->getContents());
+        $args = ' --to=html --to-name=' . $tmp_out . ' ' . $tmp_in;
 
         exec($this->_conf['location'] . $args);
 
@@ -57,12 +57,10 @@ class Horde_Mime_Viewer_Msword extends Horde_Mime_Viewer_Driver
             $type = 'text/plain';
         }
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $data,
-                'status' => array(),
-                'type' => $type . '; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            $data,
+            $type . '; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index 9f780ac..ea7a42c 100644 (file)
@@ -14,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Ooo extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Ooo extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -44,7 +44,7 @@ class Horde_Mime_Viewer_Ooo extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _render()
index 8ce2e9d..c31b1c4 100644 (file)
@@ -14,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Pdf extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Pdf extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -31,16 +31,11 @@ class Horde_Mime_Viewer_Pdf extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_mimepart->getContents(),
-                'status' => array(),
-                'type' => 'application/pdf'
-            )
-        );
+        return $this->_renderReturn(null, 'application/pdf');
     }
+
 }
index d1738f9..636bf2d 100644 (file)
@@ -30,45 +30,30 @@ class Horde_Mime_Viewer_Php extends Horde_Mime_Viewer_Source
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        $ret = $this->_renderInline();
-
-        // Need Horde headers for CSS tags.
-        reset($ret);
-        Horde::startBuffer();
-        require $GLOBALS['registry']->get('templates', 'horde') . '/common-header.inc';
-        echo $ret[key($ret)]['data'];
-        require $GLOBALS['registry']->get('templates', 'horde') . '/common-footer.inc';
-        $ret[key($ret)]['data'] = Horde::endBuffer();
-
-        return $ret;
+        return $this->_renderFullReturn($this->_renderInline());
     }
 
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
         $code = $this->_mimepart->getContents();
-        if (strpos($code, '<?php') === false) {
-            $text = str_replace('&lt;?php&nbsp;', '', highlight_string('<?php ' . $code, true));
-        } else {
-            $text = highlight_string($code, true);
-        }
-        $text = trim(str_replace(array("\n", '<br />'), array('', "\n"), $text));
-        $text = $this->_lineNumber($text);
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $text,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        $text = (strpos($code, '<?php') === false)
+            ? str_replace('&lt;?php&nbsp;', '', highlight_string('<?php ' . $code, true))
+            : highlight_string($code, true);
+
+        return $this->_renderReturn(
+            $this->_lineNumber(trim(str_replace(array("\n", '<br />'), array('', "\n"), $text))),
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index bbe89c9..9d25aa2 100644 (file)
@@ -14,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -31,7 +31,7 @@ class Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -43,22 +43,21 @@ class Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Driver
             $text = $this->_formatFlowed($text, $this->_mimepart->getContentTypeParameter('delsp'));
         }
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => '<html><body><tt>' . Horde_Text_Filter::filter($text, 'text2html', array(
-                    'charset' => $charset,
-                    'parselevel' => Horde_Text_Filter_Text2html::MICRO_LINKURL
-                )) . '</tt></body></html>',
-                'status' => array(),
-                'type' => 'text/html; charset=' . $charset
-            )
+        $text = '<html><body><tt>' . Horde_Text_Filter::filter($text, 'text2html', array(
+            'charset' => $charset,
+            'parselevel' => Horde_Text_Filter_Text2html::MICRO_LINKURL
+        )) . '</tt></body></html>';
+
+        return $this->_renderReturn(
+            $text,
+            'text/html; charset=' . $charset
         );
     }
 
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -69,12 +68,9 @@ class Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Driver
             ? $this->_formatFlowed($text, $this->_mimepart->getContentTypeParameter('delsp'))
             : $text;
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $data,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            $data,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
@@ -93,6 +89,8 @@ class Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Driver
         if (!is_null($delsp)) {
             $flowed->setDelSp($delsp);
         }
+
         return $flowed->toFixed();
     }
+
 }
index 720cc82..2ef0d23 100644 (file)
@@ -14,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Rar extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Rar extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -42,22 +42,17 @@ class Horde_Mime_Viewer_Rar extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        $ret = $this->_renderInfo();
-        if (!empty($ret)) {
-            reset($ret);
-            $ret[key($ret)]['data'] = '<html><body>' . $ret[key($ret)]['data'] . '</body></html>';
-        }
-        return $ret;
+        return $this->_renderFullReturn($this->_renderInfo());
     }
 
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _renderInfo()
@@ -109,12 +104,9 @@ class Horde_Mime_Viewer_Rar extends Horde_Mime_Viewer_Driver
             ) . "\n";
         }
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => nl2br($text . str_repeat('-', 106) . "\n</pre></td></tr></table>"),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $charset
-            )
+        return $this->_renderReturn(
+            nl2br($text . str_repeat('-', 106) . "\n</pre></td></tr></table>"),
+            'text/html; charset=' . $charset
         );
     }
 
index 1deeb5c..6581675 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Report extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Report extends Horde_Mime_Viewer_Base
 {
     /**
      * Return the underlying MIME Viewer for this part.
@@ -40,4 +40,5 @@ class Horde_Mime_Viewer_Report extends Horde_Mime_Viewer_Driver
 
         return $viewer;
     }
+
 }
index a2876ed..1d53c39 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Rfc822 extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Rfc822 extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -30,23 +30,20 @@ class Horde_Mime_Viewer_Rfc822 extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_mimepart->getContents(),
-                'status' => array(),
-                'type' => 'text/plain; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            null,
+            'text/plain; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
@@ -83,12 +80,10 @@ class Horde_Mime_Viewer_Rfc822 extends Horde_Mime_Viewer_Driver
             }
         }
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => empty($header_output) ? '' : ('<div class="fixed mimeHeaders">' . Horde_Text_Filter::filter(implode("<br />\n", $header_output), 'emails') . '</div>'),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            (empty($header_output) ? '' : ('<div class="fixed mimeHeaders">' . Horde_Text_Filter::filter(implode("<br />\n", $header_output), 'emails') . '</div>')),
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index f60ec2b..628649c 100644 (file)
@@ -34,7 +34,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Richtext extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Richtext extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -51,32 +51,27 @@ class Horde_Mime_Viewer_Richtext extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_toHTML(),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $this->_mimepart->getCharset()
-            )
-        );
+        return $this->_renderFullReturn($this->_renderReturn(
+            $this->_toHTML(),
+            'text/html; charset=' . $this->_mimepart->getCharset()
+
+        ));
     }
 
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => Horde_String::convertCharset($this->_toHTML(), $this->_mimepart->getCharset()),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            Horde_String::convertCharset($this->_toHTML(), $this->_mimepart->getCharset()),
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
@@ -150,4 +145,5 @@ class Horde_Mime_Viewer_Richtext extends Horde_Mime_Viewer_Driver
 
         return '<p style="font-size:100%;font-family:Lucida Console,Courier,Courier New;">' . nl2br($text) . '</p>';
     }
+
 }
index f1ddb13..7ef69fe 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Rpm extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Rpm extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -41,22 +41,17 @@ class Horde_Mime_Viewer_Rpm extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        $ret = $this->_renderInfo();
-        if (!empty($ret)) {
-            reset($ret);
-            $ret[key($ret)]['data'] = '<html><body>' . $ret[key($ret)]['data'] . '</body></html>';
-        }
-        return $ret;
+        return $this->_renderFullReturn($this->_renderInfo());
     }
 
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
@@ -67,8 +62,8 @@ class Horde_Mime_Viewer_Rpm extends Horde_Mime_Viewer_Driver
         }
 
         $data = '';
-        $tmp_rpm = Horde::getTempFile('horde_rpm');
 
+        $tmp_rpm = Horde::getTempFile('horde_rpm');
         file_put_contents($tmp_rpm, $this->_mimepart->getContents());
 
         $fh = popen($this->_conf['location'] . " -qip $tmp_rpm 2>&1", 'r');
@@ -77,12 +72,9 @@ class Horde_Mime_Viewer_Rpm extends Horde_Mime_Viewer_Driver
         }
         pclose($fh);
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => '<pre>' . htmlentities($data) . '</pre>',
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_returnRender(
+            '<pre>' . htmlspecialchars($data) . '</pre>',
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
index c89bfde..89ae1a6 100644 (file)
@@ -15,7 +15,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Rtf extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Rtf extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -32,7 +32,7 @@ class Horde_Mime_Viewer_Rtf extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -49,18 +49,14 @@ class Horde_Mime_Viewer_Rtf extends Horde_Mime_Viewer_Driver
 
         exec($this->_conf['location'] . " $tmp_rtf > $tmp_output");
 
-        if (file_exists($tmp_output)) {
-            $data = file_get_contents($tmp_output);
-        } else {
-            $data = _("Unable to translate this RTF document");
-        }
+        $data = file_exists($tmp_output)
+            ? file_get_contents($tmp_output)
+            : _("Unable to translate this RTF document");
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $data,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            $data,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index 107d2ac..8e3d03e 100644 (file)
@@ -14,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Security extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Security extends Horde_Mime_Viewer_Base
 {
     /**
      * Return the underlying MIME Viewer for this part.
@@ -31,6 +31,8 @@ class Horde_Mime_Viewer_Security extends Horde_Mime_Viewer_Driver
         if ($viewer) {
             $viewer->setParams($this->_params);
         }
+
         return $viewer;
     }
+
 }
index fbd06f5..bfd7e9a 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Simple extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Simple extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -30,16 +30,14 @@ class Horde_Mime_Viewer_Simple extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_mimepart->getContents(),
-                'status' => array(),
-                'type' => 'text/plain; charset=' . $this->_mimepart->getCharset()
-            )
+        return $this->_renderReturn(
+            null,
+            'text/plain; charset=' . $this->_mimepart->getCharset()
         );
     }
+
 }
index c20d7ba..a5c2f0c 100644 (file)
@@ -12,7 +12,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Smil extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Smil extends Horde_Mime_Viewer_Base
 {
     /**
      * Handle for the XML parser object.
@@ -54,7 +54,7 @@ class Horde_Mime_Viewer_Smil extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -68,12 +68,9 @@ class Horde_Mime_Viewer_Smil extends Horde_Mime_Viewer_Driver
         xml_parse($this->_parser, $this->_mimepart->getContents(), true);
         xml_parser_free($this->_parser);
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $this->_content,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            $this->_content,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
@@ -118,4 +115,5 @@ class Horde_Mime_Viewer_Smil extends Horde_Mime_Viewer_Driver
             $this->_content .= ' ' . htmlspecialchars($data);
         }
     }
+
 }
index ad0e183..7976e53 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Source extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Source extends Horde_Mime_Viewer_Base
 {
     /**
      * Add line numbers to a block of code.
index 0fcabaf..9a0cc63 100644 (file)
@@ -17,7 +17,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Srchighlite extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Srchighlite extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -34,24 +34,17 @@ class Horde_Mime_Viewer_Srchighlite extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
-        $ret = $this->_renderInline();
-
-        reset($ret);
-        $ret[key($ret)]['data'] = '<html><body>' .
-            $ret[key($ret)]['data'] .
-            '</body></html>';
-
-        return $ret;
+        return $this->_renderFullReturn($this->_renderInline());
     }
 
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -63,7 +56,7 @@ class Horde_Mime_Viewer_Srchighlite extends Horde_Mime_Viewer_Driver
 
         /* Create temporary files for Webcpp. */
         $tmpin  = Horde::getTempFile('SrcIn');
-        $tmpout = Horde::getTempFile('SrcOut', false);
+        $tmpout = Horde::getTempFile('SrcOut');
 
         /* Write the contents of our buffer to the temporary input file. */
         file_put_contents($tmpin, $this->_mimepart->getContents());
@@ -76,12 +69,9 @@ class Horde_Mime_Viewer_Srchighlite extends Horde_Mime_Viewer_Driver
         $results = file_get_contents($tmpout);
         unlink($tmpout);
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $results,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            $results,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
index e341a2b..cfa3b0f 100644 (file)
@@ -3,6 +3,8 @@
  * The Horde_Mime_Viewer_Tgz class renders out plain or gzipped tarballs in
  * HTML.
  *
+ * Copyright 1999-2010 The Horde Project (http://www.horde.org/)
+ *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
  *
@@ -12,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Tgz extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Tgz extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -54,24 +56,18 @@ class Horde_Mime_Viewer_Tgz extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _render()
     {
-        $ret = $this->_renderInfo();
-        if (!empty($ret)) {
-            reset($ret);
-            $ret[key($ret)]['data'] = '<html><body>' . $ret[key($ret)]['data'] .
- '</body></html>';
-        }
-        return $ret;
+        return $this->_renderFullReturn($this->_renderInfo());
     }
 
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _renderInfo()
@@ -129,12 +125,9 @@ class Horde_Mime_Viewer_Tgz extends Horde_Mime_Viewer_Driver
             ) . "\n";
         }
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => nl2br($text . str_repeat('-', 106) . "\n</pre></td></tr></table>"),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $charset
-            )
+        return $this->_renderReturn(
+            nl2br($text . str_repeat('-', 106) . "\n</pre></td></tr></table>"),
+            'text/html; charset=' . $charset
         );
     }
 
index dc22d09..46c2cd5 100644 (file)
@@ -14,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Tnef extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Tnef extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -42,23 +42,18 @@ class Horde_Mime_Viewer_Tnef extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _render()
     {
-        $ret = $this->_renderInfo();
-        if (!empty($ret)) {
-            reset($ret);
-            $ret[key($ret)]['data'] = '<html><body>' . $ret[key($ret)]['data'] . '</body></html>';
-        }
-        return $ret;
+        return $this->_renderFullReturn($this->_renderInfo());
     }
 
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _renderInfo()
@@ -77,12 +72,9 @@ class Horde_Mime_Viewer_Tnef extends Horde_Mime_Viewer_Driver
         }
         $data .= '</table>';
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $data,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            $data,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
index db78704..4394cb0 100644 (file)
@@ -12,7 +12,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -36,7 +36,7 @@ class Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -57,7 +57,7 @@ class Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -399,12 +399,9 @@ class Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Driver
         Horde::startBuffer();
         $notification->notify(array('listeners' => 'status'));
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => Horde::endBuffer() . $html,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            Horde::endBuffer() . $html,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
 
@@ -421,4 +418,5 @@ class Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Driver
             '</td><td class="item" valign="top">' . nl2br($value) .
             "</td></tr>\n";
     }
+
 }
index b573cba..7e6522c 100644 (file)
@@ -15,7 +15,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Wordperfect extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Wordperfect extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -32,7 +32,7 @@ class Horde_Mime_Viewer_Wordperfect extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -49,18 +49,14 @@ class Horde_Mime_Viewer_Wordperfect extends Horde_Mime_Viewer_Driver
 
         exec($this->_conf['location'] . " $tmp_wpd > $tmp_output");
 
-        if (file_exists($tmp_output)) {
-            $data = file_get_contents($tmp_output);
-        } else {
-            $data = _("Unable to translate this WordPerfect document");
-        }
+        $data = file_exists($tmp_output)
+            ? file_get_contents($tmp_output)
+            : _("Unable to translate this WordPerfect document");
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => $data,
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            $data,
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index 41b7d1f..be2c0b7 100644 (file)
@@ -14,7 +14,7 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @package  Mime_Viewer
  */
-class Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Driver
+class Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -49,23 +49,18 @@ class Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _render()
     {
-        $ret = $this->_toHTML();
-        if (!empty($ret)) {
-            reset($ret);
-            $ret[key($ret)]['data'] = '<html><body>' . $ret[key($ret)]['data'] . '</body></html>';
-        }
-        return $ret;
+        return $this->_renderFullReturn($this->_toHTML());
     }
 
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _renderInfo()
@@ -76,7 +71,7 @@ class Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Driver
     /**
      * Converts the ZIP file to an HTML display.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _toHTML()
@@ -145,12 +140,10 @@ class Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Driver
                 "\n";
         }
 
-        return array(
-            $this->_mimepart->getMimeId() => array(
-                'data' => nl2br($text . str_repeat('-', 59 + $maxlen) . "\n</span></td></tr></table>"),
-                'status' => array(),
-                'type' => 'text/html; charset=' . $GLOBALS['registry']->getCharset()
-            )
+        return $this->_renderReturn(
+            nl2br($text . str_repeat('-', 59 + $maxlen) . "\n</span></td></tr></table>"),
+            'text/html; charset=' . $GLOBALS['registry']->getCharset()
         );
     }
+
 }
index c7906a3..757aef4 100644 (file)
@@ -46,10 +46,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
         <file name="table_rows.xsl" role="php" />
        </dir> <!-- /lib/Horde/Mime/Viewer/Ooo -->
        <file name="Audio.php" role="php" />
+       <file name="Base.php" role="php" />
        <file name="Css.php" role="php" />
        <file name="Deb.php" role="php" />
        <file name="Default.php" role="php" />
-       <file name="Driver.php" role="php" />
        <file name="Enriched.php" role="php" />
        <file name="Exception.php" role="php" />
        <file name="Html.php" role="php" />
@@ -155,10 +155,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <install name="lib/Horde/Mime/Viewer/Ooo/table_columns.xsl" as="Horde/Mime/Viewer/Ooo/table_columns.xsl" />
    <install name="lib/Horde/Mime/Viewer/Ooo/table_rows.xsl" as="Horde/Mime/Viewer/Ooo/table_rows.xsl" />
    <install name="lib/Horde/Mime/Viewer/Audio.php" as="Horde/Mime/Viewer/Audio.php" />
+   <install name="lib/Horde/Mime/Viewer/Base.php" as="Horde/Mime/Viewer/Base.php" />
    <install name="lib/Horde/Mime/Viewer/Css.php" as="Horde/Mime/Viewer/Css.php" />
    <install name="lib/Horde/Mime/Viewer/Deb.php" as="Horde/Mime/Viewer/Deb.php" />
    <install name="lib/Horde/Mime/Viewer/Default.php" as="Horde/Mime/Viewer/Default.php" />
-   <install name="lib/Horde/Mime/Viewer/Driver.php" as="Horde/Mime/Viewer/Driver.php" />
    <install name="lib/Horde/Mime/Viewer/Enriched.php" as="Horde/Mime/Viewer/Enriched.php" />
    <install name="lib/Horde/Mime/Viewer/Exception.php" as="Horde/Mime/Viewer/Exception.php" />
    <install name="lib/Horde/Mime/Viewer/Html.php" as="Horde/Mime/Viewer/Html.php" />
index 60fe103..711b186 100644 (file)
@@ -33,7 +33,7 @@ class Gollem_Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Images
      * TODO
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
index 0cb010c..7b8f5a6 100644 (file)
@@ -355,9 +355,9 @@ class IMP_Contents
      *          identified in the MIME part.
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render(). The following
+     * @return array  See Horde_Mime_Viewer_Base::render(). The following
      *                fields may also be present in addition to the fields
-     *                defined in Horde_Mime_Viewer_Driver:
+     *                defined in Horde_Mime_Viewer_Base:
      *                'attach' - (boolean) Force display of this part as an
      *                           attachment.
      *                'js' - (array) A list of javascript commands to run
index 2f9276b..b65797b 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Alternative extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Alternative extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -41,7 +41,7 @@ class IMP_Horde_Mime_Viewer_Alternative extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -51,7 +51,7 @@ class IMP_Horde_Mime_Viewer_Alternative extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -65,7 +65,7 @@ class IMP_Horde_Mime_Viewer_Alternative extends Horde_Mime_Viewer_Driver
      * @param boolean $prefer_plain  For MIMP, prefer text/plain part over
      *                               all others.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _IMPrender($inline, $prefer_plain = true)
     {
index 6d6e8b7..26221a0 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Appledouble extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Appledouble extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -41,7 +41,7 @@ class IMP_Horde_Mime_Viewer_Appledouble extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -51,7 +51,7 @@ class IMP_Horde_Mime_Viewer_Appledouble extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
@@ -63,7 +63,7 @@ class IMP_Horde_Mime_Viewer_Appledouble extends Horde_Mime_Viewer_Driver
      *
      * @param boolean $inline  True if viewing inline.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _IMPrender($inline)
     {
index e926ab1..a9d8e68 100644 (file)
@@ -18,7 +18,7 @@ class IMP_Horde_Mime_Viewer_Enriched extends Horde_Mime_Viewer_Enriched
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -33,7 +33,7 @@ class IMP_Horde_Mime_Viewer_Enriched extends Horde_Mime_Viewer_Enriched
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -78,4 +78,5 @@ class IMP_Horde_Mime_Viewer_Enriched extends Horde_Mime_Viewer_Enriched
         // Filter bad language.
         return IMP::filterText($text);
     }
+
 }
index 81a0763..aba2429 100644 (file)
@@ -39,7 +39,7 @@ class IMP_Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Html
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -51,7 +51,7 @@ class IMP_Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Html
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -96,7 +96,7 @@ class IMP_Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Html
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
index cc4e23e..8cf3d0d 100644 (file)
@@ -39,7 +39,7 @@ class IMP_Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Images
      *   'view_thumbnail' - TODO
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -78,7 +78,7 @@ class IMP_Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Images
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -131,7 +131,7 @@ class IMP_Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Images
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
index 51f21fc..5f63be0 100644 (file)
@@ -15,7 +15,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Itip extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Itip extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -43,7 +43,7 @@ class IMP_Horde_Mime_Viewer_Itip extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -69,7 +69,7 @@ class IMP_Horde_Mime_Viewer_Itip extends Horde_Mime_Viewer_Driver
      * 'itip_action' - (array) TODO
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline($full = false)
     {
index b8ea59a..873a19b 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Mdn extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Mdn extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -41,7 +41,7 @@ class IMP_Horde_Mime_Viewer_Mdn extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -57,7 +57,7 @@ class IMP_Horde_Mime_Viewer_Mdn extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
index 013eb6e..c0052ae 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Partial extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Partial extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -48,7 +48,7 @@ class IMP_Horde_Mime_Viewer_Partial extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
index b5653d2..751cf48 100644 (file)
@@ -35,7 +35,7 @@ class IMP_Horde_Mime_Viewer_Pdf extends Horde_Mime_Viewer_Pdf
      * 'pdf_view_thumbnail' - (boolean) Output the thumbnail info.
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -69,7 +69,7 @@ class IMP_Horde_Mime_Viewer_Pdf extends Horde_Mime_Viewer_Pdf
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
index 74e3d65..7d672b0 100644 (file)
@@ -22,7 +22,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Pgp extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Pgp extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -67,7 +67,7 @@ class IMP_Horde_Mime_Viewer_Pgp extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderRaw()
     {
@@ -95,7 +95,7 @@ class IMP_Horde_Mime_Viewer_Pgp extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -419,9 +419,9 @@ class IMP_Horde_Mime_Viewer_Pgp extends Horde_Mime_Viewer_Driver
     /**
      * Can this driver render the the data?
      *
-     * @param string $mode  See Horde_Mime_Viewer_Driver::canRender().
+     * @param string $mode  See parent::canRender().
      *
-     * @return boolean  See Horde_Mime_Viewer_Driver::canRender().
+     * @return boolean  See parent::canRender().
      */
     public function canRender($mode)
     {
index b8d1d05..9e45bac 100644 (file)
@@ -26,7 +26,7 @@ class IMP_Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Plain
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -39,7 +39,7 @@ class IMP_Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Plain
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -51,7 +51,7 @@ class IMP_Horde_Mime_Viewer_Plain extends Horde_Mime_Viewer_Plain
      *
      * @param boolean $inline  Viewing inline?
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _impRender($inline)
     {
index 4aa2ab9..523e26b 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Related extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Related extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -41,7 +41,7 @@ class IMP_Horde_Mime_Viewer_Related extends Horde_Mime_Viewer_Driver
     /**
      * Return the full rendered version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -51,7 +51,7 @@ class IMP_Horde_Mime_Viewer_Related extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
index 0c43834..5d46215 100644 (file)
@@ -18,7 +18,7 @@ class IMP_Horde_Mime_Viewer_Rfc822 extends Horde_Mime_Viewer_Rfc822
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
index 30272d2..92d3ca9 100644 (file)
@@ -24,7 +24,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Smime extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Smime extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -82,7 +82,7 @@ class IMP_Horde_Mime_Viewer_Smime extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
index 9483f5b..64279f3 100644 (file)
@@ -13,7 +13,7 @@
  * @license  http://www.fsf.org/copyleft/gpl.html GPL
  * @package  IMP
  */
-class IMP_Horde_Mime_Viewer_Status extends Horde_Mime_Viewer_Driver
+class IMP_Horde_Mime_Viewer_Status extends Horde_Mime_Viewer_Base
 {
     /**
      * This driver's display capabilities.
@@ -41,7 +41,7 @@ class IMP_Horde_Mime_Viewer_Status extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInline()
     {
@@ -57,7 +57,7 @@ class IMP_Horde_Mime_Viewer_Status extends Horde_Mime_Viewer_Driver
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {
index 1a49036..017bca1 100644 (file)
@@ -46,7 +46,7 @@ class IMP_Horde_Mime_Viewer_Tnef extends Horde_Mime_Viewer_Tnef
      * 'tnef_attachment' - (integer) The TNEF attachment to download.
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _render()
@@ -88,7 +88,7 @@ class IMP_Horde_Mime_Viewer_Tnef extends Horde_Mime_Viewer_Tnef
     /**
      * Return the rendered information about the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _renderInfo()
index 50c0ec4..e8cd4f2 100644 (file)
@@ -24,7 +24,7 @@ class IMP_Horde_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Vcard
      * 'p' - (integer) The index of image inside the component to display.
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _render()
index a6eabfa..f8ed424 100644 (file)
@@ -24,7 +24,7 @@ class IMP_Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Zip
      * 'zip_attachment' - (integer) The ZIP attachment to download.
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      * @throws Horde_Exception
      */
     protected function _render()
index fa6736d..b66e328 100644 (file)
@@ -23,7 +23,7 @@ class Whups_Horde_Mime_Viewer_zip extends Horde_Mime_Viewer_Zip
      * 'zip_attachment' - (integer) The ZIP attachment to download.
      * </pre>
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _render()
     {
@@ -60,7 +60,7 @@ class Whups_Horde_Mime_Viewer_zip extends Horde_Mime_Viewer_Zip
     /**
      * Return the rendered inline version of the Horde_Mime_Part object.
      *
-     * @return array  See Horde_Mime_Viewer_Driver::render().
+     * @return array  See parent::render().
      */
     protected function _renderInfo()
     {