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 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'program/include') 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; } -- cgit v1.2.3