thomascube
2007-10-17 57456485c477d2f493b4ecd69a3608fe1ad2dcbf
Only change subscriptions when renaming succeeds; also quote slashes

1 files modified
22 ■■■■ changed files
program/include/rcube_imap.inc 22 ●●●● patch | view | raw | blame | history
program/include/rcube_imap.inc
@@ -35,7 +35,7 @@
 *
 * @package    Mail
 * @author     Thomas Bruederli <roundcube@gmail.com>
 * @version    1.36
 * @version    1.39
 * @link       http://ilohamail.org
 */
class rcube_imap
@@ -1703,17 +1703,19 @@
    if (strlen($abs_name))
      $result = iil_C_RenameFolder($this->conn, $mailbox, $abs_name);
    // check if mailbox children are subscribed
    foreach ($a_subscribed as $c_subscribed)
      if (preg_match('/^'.preg_quote($mailbox.$this->delimiter).'/', $c_subscribed))
        {
        iil_C_UnSubscribe($this->conn, $c_subscribed);
        iil_C_Subscribe($this->conn, preg_replace('/^'.preg_quote($mailbox).'/', $abs_name, $c_subscribed));
        }
    // clear cache
    if ($result)
      {
      $delm = $this->get_hierarchy_delimiter();
      // check if mailbox children are subscribed
      foreach ($a_subscribed as $c_subscribed)
        if (preg_match('/^'.preg_quote($mailbox.$delm, '/').'/', $c_subscribed))
          {
          iil_C_UnSubscribe($this->conn, $c_subscribed);
          iil_C_Subscribe($this->conn, preg_replace('/^'.preg_quote($mailbox, '/').'/', $abs_name, $c_subscribed));
          }
      // clear cache
      $this->clear_message_cache($mailbox.'.msg');
      $this->clear_cache('mailboxes');      
      }