- Support UID EXPUNGE: remove only moved/deleted messages
| | |
| | | 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 |
| | |
| | | // 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); |
| | | } |
| | |
| | | // 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]); |
| | | } |
| | |
| | | * 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) |
| | | { |
| | |
| | | - use PREG instead of EREG |
| | | - removed caching functions |
| | | - handling connection startup response |
| | | - added UID EXPUNGE support |
| | | |
| | | ********************************************************/ |
| | | |
| | |
| | | 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] == '*') { |
| | |
| | | } |
| | | |
| | | 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); |
| | | } |