From 38dbd8022b63adfd4ff4e5eb3eb5706d8bc9def2 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 19 Jan 2015 10:08:42 -0500
Subject: [PATCH] Fix bug where Reply-To address was ignored on reply to messages sent by self (#1490233)

---
 program/steps/mail/compose.inc |   48 ++++++++++++++++++++++++++++++++++--------------
 1 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 92296e5..1731a48 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -322,13 +322,18 @@
                 $fvalue = $mailfollowup;
             else if ($mailreplyto)
                 $fvalue = $mailreplyto;
-            else if (!empty($MESSAGE->headers->replyto))
-                $fvalue = $MESSAGE->headers->replyto;
+            else if (!empty($MESSAGE->headers->replyto)) {
+                $fvalue  = $MESSAGE->headers->replyto;
+                $replyto = true;
+            }
             else if (!empty($MESSAGE->headers->from))
                 $fvalue = $MESSAGE->headers->from;
 
             // Reply to message sent by yourself (#1487074, #1489230)
-            if (!empty($ident) && in_array($ident['ident'], array($fvalue, $MESSAGE->headers->from))) {
+            // Reply-To address need to be unset (#1490233)
+            if (!empty($ident) && empty($replyto)
+                && in_array($ident['ident'], array($fvalue, $MESSAGE->headers->from))
+            ) {
                 $fvalue = $MESSAGE->headers->to;
             }
         }
@@ -419,7 +424,8 @@
     'filedroparea'          => 'compose_file_drop_area',
     'priorityselector'      => 'rcmail_priority_selector',
     'editorselector'        => 'rcmail_editor_selector',
-    'receiptcheckbox'       => 'rcmail_receipt_checkbox',
+    'receiptcheckbox'       => 'rcmail_mdn_checkbox', // deprecated
+    'mdncheckbox'           => 'rcmail_mdn_checkbox',
     'dsncheckbox'           => 'rcmail_dsn_checkbox',
     'storetarget'           => 'rcmail_store_target_selection',
     'addressbooks'          => 'rcmail_addressbook_list',
@@ -780,12 +786,13 @@
     unset($plugin);
 
     // add blocked.gif attachment (#1486516)
-    if ($isHtml && preg_match('#<img src="\./program/resources/blocked\.gif"#', $body)) {
-        if ($attachment = rcmail_save_image('program/resources/blocked.gif', 'image/gif')) {
+    if ($isHtml && preg_match('#<img src="program/resources/blocked\.gif"#', $body)) {
+        $content = $RCMAIL->get_resource_content('blocked.gif');
+        if ($content && ($attachment = rcmail_save_image('blocked.gif', 'image/gif', $content))) {
             $COMPOSE['attachments'][$attachment['id']] = $attachment;
             $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
                 $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
-            $body = preg_replace('#\./program/resources/blocked\.gif#', $url, $body);
+            $body = preg_replace('#program/resources/blocked\.gif#', $url, $body);
         }
     }
 
@@ -1399,18 +1406,31 @@
     return false;
 }
 
-function rcmail_save_image($path, $mimetype='')
+function rcmail_save_image($path, $mimetype = '', $data = null)
 {
     global $COMPOSE;
 
     // handle attachments in memory
-    $data = file_get_contents($path);
+    if (empty($data)) {
+        $data    = file_get_contents($path);
+        $is_file = true;
+    }
+
     $name = rcmail_basename($path);
+
+    if (empty($mimetype)) {
+        if ($is_file) {
+            $mimetype = rcube_mime::file_content_type($path, $name);
+        }
+        else {
+            $mimetype = rcube_mime::file_content_type($data, $name, 'application/octet-stream', true);
+        }
+    }
 
     $attachment = array(
         'group'    => $COMPOSE['id'],
         'name'     => $name,
-        'mimetype' => $mimetype ? $mimetype : rcube_mime::file_content_type($path, $name),
+        'mimetype' => $mimetype,
         'data'     => $data,
         'size'     => strlen($data),
     );
@@ -1642,7 +1662,7 @@
 }
 
 
-function rcmail_receipt_checkbox($attrib)
+function rcmail_mdn_checkbox($attrib)
 {
     global $RCMAIL, $MESSAGE, $compose_mode;
 
@@ -1652,13 +1672,13 @@
     if (!isset($attrib['id']))
         $attrib['id'] = 'receipt';
 
-    $attrib['name']  = '_receipt';
+    $attrib['name']  = '_mdn';
     $attrib['value'] = '1';
 
     $checkbox = new html_checkbox($attrib);
 
-    if (isset($_POST['_receipt']))
-        $mdn_default = $_POST['_receipt'];
+    if (isset($_POST['_mdn']))
+        $mdn_default = $_POST['_mdn'];
     else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT)))
         $mdn_default = (bool) $MESSAGE->headers->mdn_to;
     else

--
Gitblit v1.9.1