From 48958e0512b382b972d71de84b165e304cb3d075 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Fri, 15 May 2009 09:34:04 -0400 Subject: [PATCH] - Fix Answered/Forwarded flag setting for messages from subfolders --- CHANGELOG | 1 + program/include/rcube_imap.php | 21 ++++++++++++--------- program/steps/mail/compose.inc | 8 ++++++-- program/steps/mail/sendmail.inc | 4 ++-- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2189aa6..c29db70 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== +- Fix Answered/Forwarded flag setting for messages in subfolders - Fix autocomplete problem with capital letters (#1485792) - Support UUencode content encoding (#1485839) - Minimize chance of race condition in session handling (#1485659, #1484678) diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 6d44efb..67be403 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -1518,25 +1518,28 @@ * * @param mixed Message UIDs as array or as comma-separated string * @param string Flag to set: SEEN, UNDELETED, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT + * @param string Folder name * @return boolean True on success, False on failure */ - function set_flag($uids, $flag) + function set_flag($uids, $flag, $mbox_name=NULL) { + $mailbox = $mbox_name ? $this->_mod_mailbox($mbox_name) : $this->mailbox; + $flag = strtoupper($flag); if (!is_array($uids)) $uids = explode(',',$uids); if ($flag=='UNDELETED') - $result = iil_C_Undelete($this->conn, $this->mailbox, join(',', $uids)); + $result = iil_C_Undelete($this->conn, $mailbox, join(',', $uids)); else if ($flag=='UNSEEN') - $result = iil_C_Unseen($this->conn, $this->mailbox, join(',', $uids)); + $result = iil_C_Unseen($this->conn, $mailbox, join(',', $uids)); else if ($flag=='UNFLAGGED') - $result = iil_C_UnFlag($this->conn, $this->mailbox, join(',', $uids), 'FLAGGED'); + $result = iil_C_UnFlag($this->conn, $mailbox, join(',', $uids), 'FLAGGED'); else - $result = iil_C_Flag($this->conn, $this->mailbox, join(',', $uids), $flag); + $result = iil_C_Flag($this->conn, $mailbox, join(',', $uids), $flag); // reload message headers if cached - $cache_key = $this->mailbox.'.msg'; + $cache_key = $mailbox.'.msg'; if ($this->caching_enabled) { foreach ($uids as $uid) @@ -1553,11 +1556,11 @@ // clear message count cache if ($result && $flag=='SEEN') - $this->_set_messagecount($this->mailbox, 'UNSEEN', $count*(-1)); + $this->_set_messagecount($mailbox, 'UNSEEN', $count*(-1)); else if ($result && $flag=='UNSEEN') - $this->_set_messagecount($this->mailbox, 'UNSEEN', $count); + $this->_set_messagecount($mailbox, 'UNSEEN', $count); else if ($result && $flag=='DELETED') - $this->_set_messagecount($this->mailbox, 'ALL', $count*(-1)); + $this->_set_messagecount($mailbox, 'ALL', $count*(-1)); return $result; } diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index b31d737..2cd6030 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -35,7 +35,11 @@ if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_value('_id', RCUBE_INPUT_GET)) { rcmail_compose_cleanup(); - $_SESSION['compose'] = array('id' => uniqid(rand()), 'param' => array_map('strip_tags', $_GET)); + $_SESSION['compose'] = array( + 'id' => uniqid(rand()), + 'param' => array_map('strip_tags', $_GET), + 'mailbox' => $IMAP->get_mailbox_name() + ); // process values like "mailto:foo@bar.com?subject=new+message&cc=another" if ($_SESSION['compose']['param']['_to']) { @@ -847,7 +851,7 @@ if (empty($attrib['name'])) $attrib['name'] = 'editorSelect'; - $attrib['onchange'] = "return rcmail_toggle_editor(this.value=='html', '".$attrib['editorid']."', '_is_html')"; + $attrib['onchange'] = "return rcmail_toggle_editor(this.value=='html', '".$attrib['editorid']."', '_is_html')"; $select = new html_select($attrib); diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index 7423226..4ebf489 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -432,9 +432,9 @@ // set replied/forwarded flag if ($_SESSION['compose']['reply_uid']) - $IMAP->set_flag($_SESSION['compose']['reply_uid'], 'ANSWERED'); + $IMAP->set_flag($_SESSION['compose']['reply_uid'], 'ANSWERED', $_SESSION['compose']['mailbox']); else if ($_SESSION['compose']['forward_uid']) - $IMAP->set_flag($_SESSION['compose']['forward_uid'], 'FORWARDED'); + $IMAP->set_flag($_SESSION['compose']['forward_uid'], 'FORWARDED', $_SESSION['compose']['mailbox']); } // End of SMTP Delivery Block -- Gitblit v1.9.1