From ba8f44c4da7724f5e35866277e9775ec26616dc7 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Tue, 27 Jun 2006 18:00:21 -0400 Subject: [PATCH] Fixed bug #1483856 in class rcube_imap --- program/include/rcube_imap.inc | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 40 insertions(+), 9 deletions(-) diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index bf23f71..16cfb52 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -36,7 +36,7 @@ * * @package RoundCube Webmail * @author Thomas Bruederli <roundcube@gmail.com> - * @version 1.22 + * @version 1.26 * @link http://ilohamail.org */ class rcube_imap @@ -50,7 +50,6 @@ var $page_size = 10; var $sort_field = 'date'; var $sort_order = 'DESC'; - var $default_charset = 'ISO-8859-1'; var $delimiter = NULL; var $caching_enabled = FALSE; var $default_folders = array('inbox', 'drafts', 'sent', 'junk', 'trash'); @@ -990,7 +989,7 @@ // append a mail message (source) to a specific mailbox - function save_message($mbox_name, $message) + function save_message($mbox_name, &$message) { $mailbox = $this->_mod_mailbox($mbox_name); @@ -1262,9 +1261,30 @@ // 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; } @@ -1694,8 +1714,13 @@ return $str; } - - + + + /** + * Decode a mime-encoded string to internal charset + * + * @access static + */ function decode_mime_string($input) { $out = ''; @@ -1719,10 +1744,15 @@ } // no encoding information, defaults to what is specified in the class header - return rcube_charset_convert($input, $this->default_charset); + return rcube_charset_convert($input, 'ISO-8859-1'); } + /** + * Decode a part of a mime-encoded string + * + * @access static + */ function _decode_mime_string_part($str) { $a = explode('?', $str); @@ -1796,11 +1826,12 @@ return rcube_charset_convert($body, $ctype_param['charset']); // defaults to what is specified in the class header - return rcube_charset_convert($body, $this->default_charset); + return rcube_charset_convert($body, 'ISO-8859-1'); } + /* -------------------------------- * private methods * --------------------------------*/ -- Gitblit v1.9.1