thomascube
2006-07-30 f9c107afbe9bb01627a9e6de48efdfbbda8e56e6
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;
    }