svncommit
2007-10-15 97a656643866f16289264954be961aa3f314ac20
When a parent folder is deleted, delete the children immediately, instead of one-by-one as r833 did.


2 files modified
17 ■■■■■ changed files
program/include/rcube_imap.inc 11 ●●●●● patch | view | raw | blame | history
program/steps/settings/manage_folders.inc 6 ●●●●● patch | view | raw | blame | history
program/include/rcube_imap.inc
@@ -1739,6 +1739,8 @@
    else if (is_string($mbox_name) && strlen($mbox_name))
      $a_mboxes = explode(',', $mbox_name);
    $all_mboxes = iil_C_ListMailboxes($this->conn, $this->_mod_mailbox($root), '*');
    if (is_array($a_mboxes))
      foreach ($a_mboxes as $mbox_name)
        {
@@ -1751,6 +1753,15 @@
        $result = iil_C_DeleteFolder($this->conn, $mailbox);
        if ($result>=0)
          $deleted = TRUE;
        foreach ($all_mboxes as $c_mbox)
          if (preg_match('/^'.preg_quote($mailbox.$this->delimiter).'/', $c_mbox))
            {
            iil_C_UnSubscribe($this->conn, $c_mbox);
            $result = iil_C_DeleteFolder($this->conn, $c_mbox);
            if ($result>=0)
              $deleted = TRUE;
            }
        }
    // clear mailboxlist cache
program/steps/settings/manage_folders.inc
@@ -97,12 +97,18 @@
// delete an existing IMAP mailbox
else if ($_action=='delete-folder')
  {
  $a_mboxes = array_merge($IMAP->list_mailboxes(), $IMAP->list_unsubscribed());
  $delimiter = $IMAP->get_hierarchy_delimiter();
  if ($mboxes = get_input_value('_mboxes', RCUBE_INPUT_POST))
    $deleted = $IMAP->delete_mailbox(array($mboxes));
  if ($OUTPUT->ajax_call && $deleted)
    {
    $OUTPUT->command('remove_folder_row', get_input_value('_mboxes', RCUBE_INPUT_POST));
    foreach ($a_mboxes as $mbox)
      if (preg_match('/^'.preg_quote(get_input_value('_mboxes', RCUBE_INPUT_POST).$delimiter).'/', $mbox))
        $OUTPUT->command('remove_folder_row', $mbox);
    $OUTPUT->show_message('folderdeleted', 'confirmation');
    $OUTPUT->send();
    }