logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

SF.net SVN: squirrelmail: [12749] branches/SM-1_4-STABLE/squirrelmail: msg#00038

Subject: SF.net SVN: squirrelmail: [12749] branches/SM-1_4-STABLE/squirrelmail
Revision: 12749
          
http://squirrelmail.svn.sourceforge.net/squirrelmail/?rev=12749&view=rev
Author:   jangliss
Date:     2007-10-30 20:38:19 -0700 (Tue, 30 Oct 2007)

Log Message:
-----------
Paul resolved issue with In-Reply-To and References headers not being
retained on reply (#1810659).  Minor adjustment to patch to fix an
undefined var issue.

Additional fix for missing variable in Message class.

Modified Paths:
--------------
    branches/SM-1_4-STABLE/squirrelmail/ChangeLog
    branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php
    branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php
    branches/SM-1_4-STABLE/squirrelmail/src/compose.php

Modified: branches/SM-1_4-STABLE/squirrelmail/ChangeLog
===================================================================
--- branches/SM-1_4-STABLE/squirrelmail/ChangeLog       2007-10-31 00:28:26 UTC 
(rev 12748)
+++ branches/SM-1_4-STABLE/squirrelmail/ChangeLog       2007-10-31 03:38:19 UTC 
(rev 12749)
@@ -16,6 +16,8 @@
     "not defined" error on session timeouts.
   - Fixed outgoing messages to allow addresses such as "0@..." or "000@...",
     etc. (#1818398).
+  - Fixed issue with in-reply-to and reference headers not being retained on
+    reply (#1810659).
   
 
 Version 1.4.11 - 29 September 2007

Modified: branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php
===================================================================
--- branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php 
2007-10-31 00:28:26 UTC (rev 12748)
+++ branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php 
2007-10-31 03:38:19 UTC (rev 12749)
@@ -31,12 +31,21 @@
     /**
      * function mail - send the message parts to the SMTP stream
      *
-     * @param Message  $message  Message class to send
-     * @param resource $stream   file handle to the SMTP stream
+     * @param Message  $message      Message object to send
+     * @param resource $stream       Handle to the SMTP stream
+     * @param string   $reply_id     Identifies message being replied to
+     *                               (OPTIONAL; caller should ONLY specify
+     *                               a value for this when the message
+     *                               being sent is a reply)
+     * @param string   $reply_ent_id Identifies message being replied to
+     *                               in the case it was an embedded/attached
+     *                               message inside another (OPTIONAL; caller
+     *                               should ONLY specify a value for this 
+     *                               when the message being sent is a reply)
      *
      * @return integer $raw_length
      */
-    function mail($message, $stream=false) {
+    function mail($message, $stream=false, $reply_id=0, $reply_ent_id=0) {
         $rfc822_header = $message->rfc822_header;
         if (count($message->entities)) {
             $boundary = $this->mimeBoundary();
@@ -45,6 +54,37 @@
             $boundary='';
         }
         $raw_length = 0;
+
+
+        // calculate reply header if needed
+        //
+        if ($reply_id) {
+            global $imapConnection, $username, $key, $imapServerAddress, 
+                   $imapPort, $mailbox;
+            if (!$imapConnection)
+                $imapConnection = sqimap_login($username, $key, 
+                                               $imapServerAddress, $imapPort, 
0);
+
+            sqimap_mailbox_select($imapConnection, $mailbox);
+            $reply_message = sqimap_get_message($imapConnection, $reply_id, 
$mailbox);
+
+            if ($reply_ent_id) {
+                /* redefine the messsage in case of message/rfc822 */
+                $reply_message = $message->getEntity($reply_ent_id);
+                /* message is an entity which contains the envelope and 
type0=message
+                 * and type1=rfc822. The actual entities are childs from
+                 * $reply_message->entities[0]. That's where the encoding and 
is located
+                 */
+
+                $orig_header = $reply_message->rfc822_header; /* here is the 
envelope located */
+
+            } else {
+                $orig_header = $reply_message->rfc822_header;
+            }
+            $message->reply_rfc822_header = $orig_header;            
+        }
+
+
         $reply_rfc822_header = (isset($message->reply_rfc822_header)
                              ? $message->reply_rfc822_header : '');
         $header = $this->prepareRFC822_Header($rfc822_header, 
$reply_rfc822_header, $raw_length);

Modified: branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php
===================================================================
--- branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php    
2007-10-31 00:28:26 UTC (rev 12748)
+++ branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php    
2007-10-31 03:38:19 UTC (rev 12749)
@@ -31,6 +31,11 @@
      */
     var $rfc822_header = '';
     /**
+     * Headers from original email in reply
+     * @var string 
+     */
+    var $reply_rfc822_header = '';
+    /**
      * MessageHeader object
      * @var object
      */

Modified: branches/SM-1_4-STABLE/squirrelmail/src/compose.php
===================================================================
--- branches/SM-1_4-STABLE/squirrelmail/src/compose.php 2007-10-31 00:28:26 UTC 
(rev 12748)
+++ branches/SM-1_4-STABLE/squirrelmail/src/compose.php 2007-10-31 03:38:19 UTC 
(rev 12749)
@@ -1531,6 +1531,14 @@
 
     $rfc822_header->content_type = $content_type;
     $composeMessage->rfc822_header = $rfc822_header;
+    if ($action == 'reply' || $action == 'reply_all') {
+        global $passed_id, $passed_ent_id;
+        $reply_id = $passed_id;
+        $reply_ent_id = $passed_ent_id;
+    } else {
+        $reply_id = '';
+        $reply_ent_id = '';
+    }
 
     /* Here you can modify the message structure just before we hand
        it over to deliver */
@@ -1575,9 +1583,9 @@
         if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) {
             require_once(SM_PATH . 'class/deliver/Deliver_IMAP.class.php');
             $imap_deliver = new Deliver_IMAP();
-            $length = $imap_deliver->mail($composeMessage);
+            $length = $imap_deliver->mail($composeMessage, 0, $reply_id, 
$reply_ent_id);
             sqimap_append ($imap_stream, $draft_folder, $length);
-            $imap_deliver->mail($composeMessage, $imap_stream);
+            $imap_deliver->mail($composeMessage, $imap_stream, $reply_id, 
$reply_ent_id);
             sqimap_append_done ($imap_stream, $draft_folder);
             sqimap_logout($imap_stream);
             unset ($imap_deliver);
@@ -1592,7 +1600,7 @@
     }
     $succes = false;
     if ($stream) {
-        $length = $deliver->mail($composeMessage, $stream);
+        $length = $deliver->mail($composeMessage, $stream, $reply_id, 
$reply_ent_id);
         $succes = $deliver->finalizeStream($stream);
     }
     if (!$succes) {
@@ -1630,7 +1638,7 @@
             sqimap_append ($imap_stream, $sent_folder, $length);
             require_once(SM_PATH . 'class/deliver/Deliver_IMAP.class.php');
             $imap_deliver = new Deliver_IMAP();
-            $imap_deliver->mail($composeMessage, $imap_stream);
+            $imap_deliver->mail($composeMessage, $imap_stream, $reply_id, 
$reply_ent_id);
             sqimap_append_done ($imap_stream, $sent_folder);
             unset ($imap_deliver);
         }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/


<Prev in Thread] Current Thread [Next in Thread>