From f9c107afbe9bb01627a9e6de48efdfbbda8e56e6 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sun, 30 Jul 2006 15:38:06 -0400
Subject: [PATCH] Fixed folder renaming; added confirmation after deleting a folder

---
 program/include/rcube_imap.inc |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc
index c98c480..4137d10 100644
--- a/program/include/rcube_imap.inc
+++ b/program/include/rcube_imap.inc
@@ -1245,28 +1245,29 @@
 
 
   // set a new name to an existing mailbox
-  function rename_mailbox($mbox_name, $new_name, $subscribe=TRUE)
+  function rename_mailbox($mbox_name, $new_name)
     {
     $result = FALSE;
 
     // replace backslashes
     $name = preg_replace('/[\\\]+/', '-', $new_name);
+        
+    // encode mailbox name and reduce it to 100 chars
+    $name_enc = substr(UTF7EncodeString($new_name), 0, 100);
 
-    $name_enc = UTF7EncodeString($new_name);
-
-    // reduce mailbox name to 100 chars
-    $name_enc = substr($name_enc, 0, 100);
-
+    // make absolute path
+    $mailbox = $this->_mod_mailbox($mbox_name);
     $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);
+    
+    if (strlen($abs_name))
+      $result = iil_C_RenameFolder($this->conn, $mailbox, $abs_name);
+    
+    // clear cache
+    if ($result)
+      {
+      $this->clear_message_cache($mailbox.'.msg');
+      $this->clear_cache('mailboxes');
+      }
 
     return $result ? $name : FALSE;
     }

--
Gitblit v1.9.1