summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-09-27 06:59:59 +0000
committeralecpl <alec@alec.pl>2011-09-27 06:59:59 +0000
commit90a6aff022c62e1cbcc5b7fc4baf7b982d7f2ffe (patch)
tree47e9e908c5b38b9613c6d0b857ec04639873a580
parent00d42426f2fcf7f3451d4f6745d7f9f79feaaeba (diff)
- Fix bug where when replying always the last identity is used (#1488101)
-rw-r--r--program/js/common.js4
-rw-r--r--program/steps/mail/compose.inc29
2 files changed, 21 insertions, 12 deletions
diff --git a/program/js/common.js b/program/js/common.js
index 0011feaa0..f69125bcc 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -617,10 +617,10 @@ function getCookie(name)
return null;
}
else {
- begin += 2;
+ begin += 2;
}
- var end = document.cookie.indexOf(";", begin);
+ var end = dc.indexOf(";", begin);
if (end == -1)
end = dc.length;
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index ade2738db..aac05be00 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -46,7 +46,7 @@ if (!is_array($_SESSION['compose']))
'param' => request2param(RCUBE_INPUT_GET),
'mailbox' => $IMAP->get_mailbox_name(),
);
-
+
// process values like "mailto:foo@bar.com?subject=new+message&cc=another"
if ($_SESSION['compose']['param']['to']) {
// #1486037: remove "mailto:" prefix
@@ -59,10 +59,10 @@ if (!is_array($_SESSION['compose']))
$_SESSION['compose']['param'][$f] = $val;
}
}
-
+
// select folder where to save the sent message
$_SESSION['compose']['param']['sent_mbox'] = $RCMAIL->config->get('sent_mbox');
-
+
// pipe compose parameters thru plugins
$plugin = $RCMAIL->plugins->exec_hook('message_compose', $_SESSION['compose']);
$_SESSION['compose']['param'] = array_merge($_SESSION['compose']['param'], $plugin['param']);
@@ -84,12 +84,12 @@ if (!is_array($_SESSION['compose']))
'path' => $attach,
);
}
-
+
// save attachment if valid
if (($attachment['data'] && $attachment['name']) || ($attachment['path'] && file_exists($attachment['path']))) {
$attachment = rcmail::get_instance()->plugins->exec_hook('attachment_save', $attachment);
}
-
+
if ($attachment['status'] && !$attachment['abort']) {
unset($attachment['data'], $attachment['status'], $attachment['abort']);
$_SESSION['compose']['attachments'][$attachment['id']] = $attachment;
@@ -242,21 +242,27 @@ else if (!empty($_SESSION['compose']['param']['from'])) {
$MESSAGE->compose['from'] = $_SESSION['compose']['param']['from'];
}
else if (count($MESSAGE->identities)) {
- // extract all recipients of the reply-message
$a_recipients = array();
+ $a_names = array();
+
+ // extract all recipients of the reply-message
if (is_object($MESSAGE->headers) && in_array($compose_mode, array(RCUBE_COMPOSE_REPLY, RCUBE_COMPOSE_FORWARD)))
{
$a_to = $IMAP->decode_address_list($MESSAGE->headers->to);
foreach ($a_to as $addr) {
- if (!empty($addr['mailto']))
+ if (!empty($addr['mailto'])) {
$a_recipients[] = strtolower($addr['mailto']);
+ $a_names[] = $addr['name'];
+ }
}
if (!empty($MESSAGE->headers->cc)) {
$a_cc = $IMAP->decode_address_list($MESSAGE->headers->cc);
foreach ($a_cc as $addr) {
- if (!empty($addr['mailto']))
+ if (!empty($addr['mailto'])) {
$a_recipients[] = strtolower($addr['mailto']);
+ $a_names[] = $addr['name'];
+ }
}
}
}
@@ -285,8 +291,11 @@ else if (count($MESSAGE->identities)) {
break;
}
// use replied message recipients
- else if (in_array($ident['email_ascii'], $a_recipients)) {
- $from_idx = $idx;
+ else if (($found = array_search($ident['email_ascii'], $a_recipients)) !== false) {
+ // match identity name, prefer default identity
+ if ($from_idx === null || ($a_names[$found] && $ident['name'] && $a_names[$found] == $ident['name'])) {
+ $from_idx = $idx;
+ }
}
}