summaryrefslogtreecommitdiff
path: root/program/include
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2009-05-15 13:34:04 +0000
committeralecpl <alec@alec.pl>2009-05-15 13:34:04 +0000
commit48958e0512b382b972d71de84b165e304cb3d075 (patch)
treed3ba5ddf5c949c27d50215a518f990b92632bff9 /program/include
parentf879f4e2f8c81f67b0a0c471c94ebed686939c49 (diff)
- Fix Answered/Forwarded flag setting for messages from subfolders
Diffstat (limited to 'program/include')
-rw-r--r--program/include/rcube_imap.php21
1 files changed, 12 insertions, 9 deletions
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;
}