- Support UID EXPUNGE: remove only moved/deleted messages

release-0.6
alecpl 15 years ago
parent d9f084ccdf
commit 8234b4c6bc

@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Support UID EXPUNGE: remove only moved/deleted messages
- Add drag cancelling with ESC key (#1484344)
- Support initial identity name from virtuser_query (#1484003)
- Added message menu, removed Print and Source buttons

@ -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)
{

@ -82,6 +82,7 @@
- use PREG instead of EREG
- removed caching functions
- handling connection startup response
- added UID EXPUNGE support
********************************************************/
@ -1863,11 +1864,13 @@ function iil_SortHeaders($a, $field, $flag) {
return $result;
}
function iil_C_Expunge(&$conn, $mailbox) {
function iil_C_Expunge(&$conn, $mailbox, $messages=NULL) {
if (iil_C_Select($conn, $mailbox)) {
$c = 0;
iil_PutLine($conn->fp, "exp1 EXPUNGE");
$command = $messages ? "UID EXPUNGE $messages" : "EXPUNGE";
iil_PutLine($conn->fp, "exp1 $command");
do {
$line=chop(iil_ReadLine($conn->fp, 100));
if ($line[0] == '*') {
@ -2030,12 +2033,13 @@ function iil_C_Search(&$conn, $folder, $criteria) {
}
function iil_C_Move(&$conn, $messages, $from, $to) {
$fp = $conn->fp;
if (!$from || !$to) {
return -1;
}
$r = iil_C_Copy($conn, $messages, $from,$to);
$r = iil_C_Copy($conn, $messages, $from, $to);
if ($r==0) {
return iil_C_Delete($conn, $from, $messages);
}

Loading…
Cancel
Save