Fix broken MDN functionality
[squirrelmail.git] / src / read_body.php
index 17e19fb3a5c383e3ce9be0ab14e73c766c85cf06..a63ffb497709821cdee631040a48034655f1846a 100644 (file)
@@ -128,8 +128,9 @@ function ServerMDNSupport($aFlags) {
 }
 
 function SendMDN ( $mailbox, $passed_id, $message, $imapConnection) {
-    global $squirrelmail_language, $default_charset,
-           $languages, $useSendmail, $domain, $sent_folder;
+    global $squirrelmail_language, $default_charset, $default_move_to_sent,
+           $languages, $useSendmail, $domain, $sent_folder, $username,
+           $data_dir;
 
     sqgetGlobalVar('SERVER_NAME', $SERVER_NAME, SQ_SERVER);
 
@@ -262,7 +263,7 @@ function SendMDN ( $mailbox, $passed_id, $message, $imapConnection) {
     }
     $success = false;
     if ($stream) {
-        $length  = $deliver->mail($composeMessage, $stream);
+        $deliver->mail($composeMessage, $stream);
         $success = $deliver->finalizeStream($stream);
     }
     if (!$success) {
@@ -276,12 +277,37 @@ function SendMDN ( $mailbox, $passed_id, $message, $imapConnection) {
         plain_error_message($msg);
     } else {
         unset ($deliver);
-        if (sqimap_mailbox_exists ($imapConnection, $sent_folder)) {
-            $sid = sqimap_append ($imapConnection, $sent_folder, $length);
+
+        // move to sent folder
+        //
+        $move_to_sent = getPref($data_dir,$username,'move_to_sent');
+        if (isset($default_move_to_sent) && ($default_move_to_sent != 0)) {
+            $svr_allow_sent = true;
+        } else {
+            $svr_allow_sent = false;
+        }
+
+        if (isset($sent_folder) && (($sent_folder != '') || ($sent_folder != 'none'))
+                && sqimap_mailbox_exists( $imapConnection, $sent_folder)) {
+            $fld_sent = true;
+        } else {
+            $fld_sent = false;
+        }
+
+        if ((isset($move_to_sent) && ($move_to_sent != 0)) || (!isset($move_to_sent))) {
+            $lcl_allow_sent = true;
+        } else {
+            $lcl_allow_sent = false;
+        }
+
+        if (($fld_sent && $svr_allow_sent && !$lcl_allow_sent) || ($fld_sent && $lcl_allow_sent)) {
+            $save_reply_with_orig=getPref($data_dir,$username,'save_reply_with_orig');
+            if ($save_reply_with_orig) {
+                $sent_folder = $mailbox;
+            }
             require_once(SM_PATH . 'class/deliver/Deliver_IMAP.class.php');
             $imap_deliver = new Deliver_IMAP();
-            $imap_deliver->mail($composeMessage, $imapConnection);
-            sqimap_append_done ($imapConnection, $sent_folder);
+            $imap_deliver->mail($composeMessage, $imapConnection, 0, 0, $sent_folder);
             unset ($imap_deliver);
         }
     }
@@ -431,7 +457,7 @@ function formatEnvheader($aMailbox, $passed_id, $passed_ent_id, $message,
 /**
  * Format message toolbar
  *
- * @param string $mailbox Name of current mailbox
+ * @param array $aMailbox Current mailbox information array
  * @param int $passed_id UID of current message
  * @param int $passed_ent_id Id of entity within message
  * @param object $message Current message object
@@ -531,11 +557,11 @@ function formatMenubar($aMailbox, $passed_id, $passed_ent_id, $message, $removed
         }
     }
 
-    // Start with Search Results or Message List link.
-    $list_xtra = "?where=read_body.php&what=$what&mailbox=" . $urlMailbox.
-                 "&startMessage=$startMessage";
-    $msg_list_href = $base_uri .'src/right_main.php'. $list_xtra;
-    $search_href = $where=='search.php' ? $base_uri .'src/search.php?'.$list_xtra : '';
+    $msg_list_href = get_message_list_uri($aMailbox['NAME'], $startMessage, $what);
+    if ($where == 'search.php')
+        $search_href = str_replace('read_body.php', 'search.php', $msg_list_href);
+    else
+        $search_href = '';
 
     $comp_uri = $base_uri.'src/compose.php' .
                 '?passed_id=' . $passed_id .
@@ -947,8 +973,11 @@ $mailbox_cache[$iAccount.'_'.$aMailbox['NAME']] = $aMailbox;
 sqsession_register($mailbox_cache,'mailbox_cache');
 $_SESSION['mailbox_cache'] = $mailbox_cache;
 
+// message list URI is used in page header when on read_body
+$oTemplate->assign('message_list_href', get_message_list_uri($aMailbox['NAME'], $startMessage, $what));
+
 displayPageHeader($color, $mailbox,'','');
-formatMenuBar($aMailbox, $passed_id, $passed_ent_id, $message,false);
+formatMenubar($aMailbox, $passed_id, $passed_ent_id, $message,false);
 formatEnvheader($aMailbox, $passed_id, $passed_ent_id, $message, $color, $FirstTimeSee);
 
 $oTemplate->assign('message_body', $messagebody);
@@ -977,7 +1006,7 @@ if ($attachment_common_show_images && is_array($attachment_common_show_images_li
     $oTemplate->display('read_display_images_inline.tpl');
 }
 
-formatMenuBar($aMailbox, $passed_id, $passed_ent_id, $message, false, FALSE);
+formatMenubar($aMailbox, $passed_id, $passed_ent_id, $message, false, FALSE);
 
 do_hook('read_body_bottom', $null);
 sqimap_logout($imapConnection);