From 8234b4c6bc3c9cd9cb639039d3080131098dd966 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Tue, 26 May 2009 04:50:10 -0400 Subject: [PATCH] - Support UID EXPUNGE: remove only moved/deleted messages --- program/include/rcube_imap.php | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index ca3551c..2a9a32c 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -1629,7 +1629,7 @@ // 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 @@ // 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 @@ * 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) { -- Gitblit v1.9.1