Allows easier extending by sub-drivers.
Convert security Viewer to new API.
*/
protected function _render()
{
+ $viewer = $this->_getViewer();
+ return $viewer
+ ? $viewer->render('full')
+ : array();
}
/**
*/
protected function _renderInline()
{
+ $viewer = $this->_getViewer();
+ return $viewer
+ ? $viewer->render('inline')
+ : array();
}
/**
*/
protected function _renderInfo()
{
+ $viewer = $this->_getViewer();
+ return $viewer
+ ? $viewer->render('info')
+ : array();
}
/**
*/
public function canRender($mode)
{
+ $viewer = $this->_getViewer();
+ if ($viewer) {
+ return $viewer->canRender($mode);
+ }
+
switch ($mode) {
case 'full':
case 'info':
*/
public function embeddedMimeParts()
{
- return $this->_capability['embedded'];
+ $viewer = $this->_getViewer();
+ return ($viewer) ? $viewer->embeddedMimeParts() : $this->_capability['embedded'];
}
/**
{
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;
+ }
+
}
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.
}
$viewer = Horde_Mime_Viewer::factory($this->_mimepart, 'message/' . String::lower($type));
- $viewer->setParams($this->_params);
+ if ($viewer) {
+ $viewer->setParams($this->_params);
+ }
return $viewer;
}
}
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;
}
}