summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2009-05-26 08:50:10 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2009-05-26 08:50:10 +0000
commit031c08be6f8052a14bbe0b0b02410d15373995e1 (patch)
treecdd612146be5ee91856e835b15fac28c81c8bbbf /roundcubemail/program/include
parente3263dbb9753760de580cf69edb0478915425314 (diff)
- Support UID EXPUNGE: remove only moved/deleted messages
git-svn-id: https://svn.roundcube.net/trunk@2540 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include')
-rw-r--r--roundcubemail/program/include/rcube_imap.php17
1 files changed, 13 insertions, 4 deletions
diff --git a/roundcubemail/program/include/rcube_imap.php b/roundcubemail/program/include/rcube_imap.php
index ca3551cb2..2a9a32c6f 100644
--- a/roundcubemail/program/include/rcube_imap.php
+++ b/roundcubemail/program/include/rcube_imap.php
@@ -1629,7 +1629,7 @@ class rcube_imap
// but only when flag_for_deletion is set to false
if (!rcmail::get_instance()->config->get('flag_for_deletion', false))
{
- $this->_expunge($from_mbox, FALSE);
+ $this->_expunge($from_mbox, FALSE, $a_uids);
$this->_clear_messagecount($from_mbox);
$this->_clear_messagecount($to_mbox);
}
@@ -1688,7 +1688,7 @@ class rcube_imap
// really deleted from the mailbox
if ($deleted)
{
- $this->_expunge($mailbox, FALSE);
+ $this->_expunge($mailbox, FALSE, $a_uids);
$this->_clear_messagecount($mailbox);
unset($this->uid_id_map[$mailbox]);
}
@@ -1768,11 +1768,20 @@ class rcube_imap
* Send IMAP expunge command and clear cache
*
* @see rcube_imap::expunge()
+ * @param string Mailbox name
+ * @param boolean False if cache should not be cleared
+ * @param string List of UIDs to remove, separated by comma
+ * @return boolean True on success
* @access private
*/
- function _expunge($mailbox, $clear_cache=TRUE)
+ function _expunge($mailbox, $clear_cache=TRUE, $uids=NULL)
{
- $result = iil_C_Expunge($this->conn, $mailbox);
+ if ($uids && $this->get_capability('UIDPLUS'))
+ $a_uids = is_array($uids) ? join(',', $uids) : $uids;
+ else
+ $a_uids = NULL;
+
+ $result = iil_C_Expunge($this->conn, $mailbox, $a_uids);
if ($result>=0 && $clear_cache)
{