IMP_Contents improvements.
authorMichael M Slusarz <slusarz@curecanti.org>
Fri, 14 Nov 2008 23:24:25 +0000 (16:24 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Sun, 16 Nov 2008 17:56:21 +0000 (10:56 -0700)
Allow MIME Part to be specified to render().
Make sure message is built before calling render().
Catch if embedded part replaces base message.
getMessageIndex() -> getIndex().
getMessageMailbox() -> getMailbox().

imp/lib/Contents.php
imp/lib/Mime/Viewer/html.php
imp/lib/UI/Compose.php

index a9f9c42..52e81ee 100644 (file)
@@ -122,7 +122,7 @@ class IMP_Contents
      *
      * @return integer  The message index.
      */
-    public function getMessageIndex()
+    public function getIndex()
     {
         return $this->_index;
     }
@@ -132,7 +132,7 @@ class IMP_Contents
      *
      * @return string  The message mailbox.
      */
-    public function getMessageMailbox()
+    public function getMailbox()
     {
         return $this->_mailbox;
     }
@@ -288,6 +288,7 @@ class IMP_Contents
      * @param integer $mode    One of the RENDER_ constants.
      * @param array $options   Additional options:
      * <pre>
+     * 'mime_part' - (Horde_Mime_Part) The MIME part to render.
      * 'params' - (array) Additional params to set.
      * 'type' - (string) Use this MIME type instead of the MIME type
      *          identified in the MIME part.
@@ -299,7 +300,11 @@ class IMP_Contents
      */
     public function renderMIMEPart($mime_id, $mode, $options = array())
     {
-        $mime_part = $this->getMIMEPart($mime_id);
+        $this->_buildMessage();
+
+        $mime_part = empty($options['mime_part'])
+            ? $this->getMIMEPart($mime_id)
+            : $options['mime_part'];
         $viewer = Horde_Mime_Viewer::factory($mime_part, empty($options['type']) ? null : $options['type']);
         $viewer->setParams(array('contents' => &$this));
         if (!empty($options['params'])) {
@@ -705,10 +710,15 @@ class IMP_Contents
             $mime_part = $this->getMIMEPart($id, array('nocontents' => true));
             $viewer = Horde_Mime_Viewer::factory($mime_part);
             if ($viewer->embeddedMimeParts()) {
-                $mime_part = $this->getMIMEPart($mime_id);
+                $mime_part = $this->getMIMEPart($id);
                 $viewer->setMIMEPart($mime_part);
+                $viewer->setParams(array('contents' => &$this));
                 $new_part = $viewer->getEmbeddedMimeParts();
                 if (!is_null($new_part)) {
+                    if (is_a($new_part, 'Horde_Mime_Message')) {
+                        $this->_message = $new_part;
+                        break;
+                    }
                     $this->_message->alterPart($id, $new_part);
                     $to_process = array_merge($to_process, array_slice($new_part->contentTypeMap(), 1));
                     if ($id == 0) {
index 655a811..b13fe38 100644 (file)
@@ -203,7 +203,7 @@ class IMP_Horde_Mime_Viewer_html extends Horde_Mime_Viewer_html
             if ($inline) {
                 $url = Util::removeParameter($url, array('actionID'));
             }
-            $url = Util::addParameter($url, 'index', $this->_params['contents']->getMessageIndex());
+            $url = Util::addParameter($url, 'index', $this->_params['contents']->getIndex());
 
             $view_img = Util::getFormData('view_html_images');
             $addr_check = ($GLOBALS['prefs']->getValue('html_image_addrbook') && $this->_inAddressBook());
index b4f92f7..c8fadfb 100644 (file)
@@ -59,7 +59,7 @@ class IMP_UI_Compose {
          * decoding stays as-is. */
         require_once IMP_BASE . '/lib/MIME/Headers.php';
         $imp_imap = &IMP_IMAP::singleton();
-        $imp_imap->changeMbox($contents->getMessageMailbox(), IMP_IMAP_AUTO);
+        $imp_imap->changeMbox($contents->getMailbox(), IMP_IMAP_AUTO);
 
         $headers = $contents->getHeaderOb();
         $headers->addResentHeaders($from_addr, $recip['header']['to']);