From 66773789e392305bba4cdf7ed8e6ae3b8380de51 Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Thu, 27 Oct 2005 09:45:33 -0400 Subject: [PATCH] --- program/include/rcube_imap.inc | 31 +++++++++++++++++++++++-------- 1 files changed, 23 insertions(+), 8 deletions(-) diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index 83ee321..8253442 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -23,6 +23,7 @@ require_once('lib/imap.inc'); require_once('lib/mime.inc'); +require_once('lib/utf7.inc'); class rcube_imap @@ -432,7 +433,7 @@ } - // old function; replaced 2005/10/18 + // original function; replaced 2005/10/18 // private method for listing message header function _list_headers($mailbox='', $page=NULL, $sort_field='date', $sort_order='DESC') { @@ -477,7 +478,7 @@ // return complete list of messages if (strtolower($page)=='all') return $a_headers; - + $start_msg = ($this->list_page-1) * $this->page_size; return array_slice($a_headers, $start_msg, $this->page_size); } @@ -723,6 +724,19 @@ } + // clear all messages in a specific mailbox + function clear_mailbox($mbox) + { + $mailbox = $mbox ? $this->_mod_mailbox($mbox) : $this->mailbox; + $msg_count = $this->_messagecount($mailbox, 'ALL'); + + if ($msg_count>0) + return iil_C_ClearFolder($this->conn, $mailbox); + else + return 0; + } + + // send IMAP expunge command and clear cache function expunge($mbox='', $clear_cache=TRUE) { @@ -801,18 +815,19 @@ function create_mailbox($name, $subscribe=FALSE) { $result = FALSE; - $abs_name = $this->_mod_mailbox($name); + $name_enc = UTF7EncodeString($name); + $abs_name = $this->_mod_mailbox($name_enc); $a_mailbox_cache = $this->get_cache('mailboxes'); //if (strlen($this->root_ns)) // $abs_name = $this->root_ns.$abs_name; if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache))) - $result = iil_C_CreateFolder($this->conn, iil_utf7_encode($abs_name)); + $result = iil_C_CreateFolder($this->conn, $abs_name); // update mailboxlist cache if ($result && $subscribe) - $this->subscribe($name); + $this->subscribe($name_enc); return $result ? $name : FALSE; } @@ -1057,7 +1072,7 @@ // convert body chars according to the ctype_parameters function charset_decode($body, $ctype_param) { - if (is_array($ctype_param) && strlen($ctype_param['charset'])) + if (is_array($ctype_param) && !empty($ctype_param['charset'])) return decode_specialchars($body, $ctype_param['charset']); return $body; @@ -1071,10 +1086,10 @@ function _mod_mailbox($mbox, $mode='in') { - if (!empty($this->root_ns) && $this->root_ns == $mbox) + if ((!empty($this->root_ns) && $this->root_ns == $mbox) || ($mbox == 'INBOX' && $mode == 'in')) return $mbox; - if (!empty($this->root_dir) && $mode=='in') + if (!empty($this->root_dir) && $mode=='in') $mbox = $this->root_dir.$this->delimiter.$mbox; else if (strlen($this->root_dir) && $mode=='out') $mbox = substr($mbox, strlen($this->root_dir)+1); -- Gitblit v1.9.1