From 48958e0512b382b972d71de84b165e304cb3d075 Mon Sep 17 00:00:00 2001 From: alecpl Date: Fri, 15 May 2009 13:34:04 +0000 Subject: - Fix Answered/Forwarded flag setting for messages from subfolders --- program/include/rcube_imap.php | 21 ++++++++++++--------- program/steps/mail/compose.inc | 8 ++++++-- program/steps/mail/sendmail.inc | 4 ++-- 3 files changed, 20 insertions(+), 13 deletions(-) (limited to 'program') diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 6d44efb4b..67be40346 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -1518,25 +1518,28 @@ class rcube_imap * * @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 @@ class rcube_imap // 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 b31d73775..2cd603005 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -35,7 +35,11 @@ $MESSAGE = NULL; 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 @@ function rcmail_editor_selector($attrib) 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 742322602..4ebf4893c 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -432,9 +432,9 @@ if (!$savedraft) // 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 -- cgit v1.2.3