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