From ae8d1658da0fe13b5598936c078cb0a9df30d7da Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Sun, 16 Nov 2008 16:55:04 -0700 Subject: [PATCH] Better defaults for Driver functions. Allows easier extending by sub-drivers. Convert security Viewer to new API. --- framework/Mime/lib/Horde/Mime/Viewer/Driver.php | 31 +++++++++- framework/Mime/lib/Horde/Mime/Viewer/report.php | 65 +------------------- framework/Mime/lib/Horde/Mime/Viewer/security.php | 72 +++-------------------- 3 files changed, 42 insertions(+), 126 deletions(-) diff --git a/framework/Mime/lib/Horde/Mime/Viewer/Driver.php b/framework/Mime/lib/Horde/Mime/Viewer/Driver.php index 37c7bf70b..cbaecb379 100644 --- a/framework/Mime/lib/Horde/Mime/Viewer/Driver.php +++ b/framework/Mime/lib/Horde/Mime/Viewer/Driver.php @@ -143,6 +143,10 @@ class Horde_Mime_Viewer_Driver */ protected function _render() { + $viewer = $this->_getViewer(); + return $viewer + ? $viewer->render('full') + : array(); } /** @@ -152,6 +156,10 @@ class Horde_Mime_Viewer_Driver */ protected function _renderInline() { + $viewer = $this->_getViewer(); + return $viewer + ? $viewer->render('inline') + : array(); } /** @@ -161,6 +169,10 @@ class Horde_Mime_Viewer_Driver */ protected function _renderInfo() { + $viewer = $this->_getViewer(); + return $viewer + ? $viewer->render('info') + : array(); } /** @@ -173,6 +185,11 @@ class Horde_Mime_Viewer_Driver */ public function canRender($mode) { + $viewer = $this->_getViewer(); + if ($viewer) { + return $viewer->canRender($mode); + } + switch ($mode) { case 'full': case 'info': @@ -194,7 +211,8 @@ class Horde_Mime_Viewer_Driver */ public function embeddedMimeParts() { - return $this->_capability['embedded']; + $viewer = $this->_getViewer(); + return ($viewer) ? $viewer->embeddedMimeParts() : $this->_capability['embedded']; } /** @@ -246,4 +264,15 @@ class Horde_Mime_Viewer_Driver { return $this->_conf['_driver']; } + + /** + * Return the underlying MIME Viewer for this part. + * + * @return mixed A Horde_Mime_Viewer object, or false if not found. + */ + protected function _getViewer() + { + return false; + } + } diff --git a/framework/Mime/lib/Horde/Mime/Viewer/report.php b/framework/Mime/lib/Horde/Mime/Viewer/report.php index 5c5df062d..6a0c5ab21 100644 --- a/framework/Mime/lib/Horde/Mime/Viewer/report.php +++ b/framework/Mime/lib/Horde/Mime/Viewer/report.php @@ -14,67 +14,6 @@ class Horde_Mime_Viewer_report extends Horde_Mime_Viewer_Driver { /** - * Can this driver render the the data? - * - * @param string $mode The mode. Either 'full', 'inline', or 'info'. - * - * @return boolean True if the driver can render the data for the given - * view. - */ - public function canRender($mode) - { - $viewer = $this->_getViewer(); - return $viewer ? $viewer->canRender($mode) : false; - } - - /** - * Does this MIME part possibly contain embedded MIME parts? - * - * @return boolean True if this driver supports parsing embedded MIME - * parts. - */ - public function embeddedMimeParts() - { - $viewer = $this->_getViewer(); - return $viewer ? $viewer->embeddedMimeParts() : false; - } - - /** - * Return the full rendered version of the Horde_Mime_Part object. - * - * @return array See Horde_Mime_Viewer_Driver::render(). - */ - protected function _render() - { - return $this->_toHTML(false); - } - - /** - * Return the rendered inline version of the Horde_Mime_Part object. - * - * @return array See Horde_Mime_Viewer_Driver::render(). - */ - protected function _renderInline() - { - return $this->_toHTML(true); - } - - /** - * Return an HTML rendered version of the part. - * - * @param boolean Viewing inline? - * - * @return array See Horde_Mime_Viewer_Driver::render(). - */ - protected function _toHTML($inline) - { - $viewer = $this->_getViewer(); - return $viewer - ? $viewer->render($inline ? 'inline' : 'full') - : array(); - } - - /** * Return the underlying MIME Viewer for this part. * * @return mixed A Horde_Mime_Viewer object, or false if not found. @@ -86,7 +25,9 @@ class Horde_Mime_Viewer_report extends Horde_Mime_Viewer_Driver } $viewer = Horde_Mime_Viewer::factory($this->_mimepart, 'message/' . String::lower($type)); - $viewer->setParams($this->_params); + if ($viewer) { + $viewer->setParams($this->_params); + } return $viewer; } } diff --git a/framework/Mime/lib/Horde/Mime/Viewer/security.php b/framework/Mime/lib/Horde/Mime/Viewer/security.php index c4b4f61f2..f5fd7f37e 100644 --- a/framework/Mime/lib/Horde/Mime/Viewer/security.php +++ b/framework/Mime/lib/Horde/Mime/Viewer/security.php @@ -15,74 +15,20 @@ class Horde_Mime_Viewer_security extends Horde_Mime_Viewer_Driver { /** - * Stores the Horde_Mime_Viewer of the specified security protocol. + * Return the underlying MIME Viewer for this part. * - * @var Horde_Mime_Viewer + * @return mixed A Horde_Mime_Viewer object, or false if not found. */ - protected $_viewer; - - /** - * The $mime_part class variable has the information to render - * out, encapsulated in a Horde_Mime_Part object. - * - * @param $params mixed The parameters (if any) to pass to the underlying - * Horde_Mime_Viewer. - * - * @return string Rendering of the content. - */ - public function render($params = array()) - { - /* Get the appropriate Horde_Mime_Viewer for the protocol specified. */ - if (!($this->_resolveViewer())) { - return; - } - - /* Render using the loaded Horde_Mime_Viewer object. */ - return $this->_viewer->render($params); - } - - /** - * Returns the content-type of the Viewer used to view the part. - * - * @return string A content-type string. - */ - public function getType() + protected function _getViewer() { - /* Get the appropriate Horde_Mime_Viewer for the protocol specified. */ - if (!($this->_resolveViewer())) { - return 'application/octet-stream'; - } else { - return $this->_viewer->getType(); + if (!($protocol = $this->_mimepart->getContentTypeParameter('protocol'))) { + return false; } - } - - /** - * Load a Horde_Mime_Viewer according to the protocol parameter stored - * in the Horde_Mime_Part to render. If unsuccessful, try to load a generic - * multipart Horde_Mime_Viewer. - * - * @return boolean True on success, false on failure. - */ - protected function _resolveViewer() - { - $viewer = null; - if (empty($this->_viewer)) { - $protocol = $this->mime_part->getContentTypeParameter('protocol'); - if (empty($protocol)) { - return false; - } - $viewer = Horde_Mime_Viewer::factory($this->mime_part, $protocol); - if (empty($viewer) || - (String::lower(get_class($viewer)) == 'mime_viewer_default')) { - $viewer = Horde_Mime_Viewer::factory($this->mime_part, $this->mime_part->getPrimaryType() . '/*'); - if (empty($viewer)) { - return false; - } - } - $this->_viewer = $viewer; + $viewer = Horde_Mime_Viewer::factory($this->_mimepart, $protocol); + if ($viewer) { + $viewer->setParams($this->_params); } - - return true; + return $viewer; } } -- 2.11.0