diff options
author | svncommit <devs@roundcube.net> | 2006-06-27 21:56:44 +0000 |
---|---|---|
committer | svncommit <devs@roundcube.net> | 2006-06-27 21:56:44 +0000 |
commit | c8c1e0ef3b229a82e74c70aeacc29f2ba021afbe (patch) | |
tree | 8ee6b05456b33c8d80e8cf7bf86fb14ae7c3b338 /program/include/rcube_imap.inc | |
parent | b068a07db2c519cde6bf1715e725cb70f2bbbc35 (diff) |
Renameable folders, mail-checking changes, other fixes (richs)
Diffstat (limited to 'program/include/rcube_imap.inc')
-rw-r--r-- | program/include/rcube_imap.inc | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index dccd64fc9..7ad4ad082 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -1262,9 +1262,30 @@ class rcube_imap // set a new name to an existing mailbox - function rename_mailbox($mbox_name, $new_name) + function rename_mailbox($mbox_name, $new_name, $subscribe=TRUE) { - // not implemented yet + $result = FALSE; + + // replace backslashes + $name = preg_replace('/[\\\]+/', '-', $new_name); + + $name_enc = UTF7EncodeString($new_name); + + // reduce mailbox name to 100 chars + $name_enc = substr($name_enc, 0, 100); + + $abs_name = $this->_mod_mailbox($name_enc); + $a_mailbox_cache = $this->get_cache('mailboxes'); + + if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache))) + $result = iil_C_RenameFolder($this->conn, $mbox_name, $abs_name); + + // update mailboxlist cache + if ($result && $subscribe) + $this->unsubscribe($mbox_name); + $this->subscribe($name_enc); + + return $result ? $name : FALSE; } |