diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2010-12-06 14:06:44 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2010-12-06 14:06:44 +0000 |
| commit | b2ad315b7935a20fcc075689d47492d4839b754f (patch) | |
| tree | b4370b451a042ea989458c493d6c62fa0d9e15af /roundcubemail/program/steps/settings | |
| parent | f390ac2bde2493be936bd6c8fe509cc525b40725 (diff) | |
- Improve performance of folder rename and delete actions. Don't get list of all folders when we need only children of the specified folder.
git-svn-id: https://svn.roundcube.net/trunk@4310 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/steps/settings')
| -rw-r--r-- | roundcubemail/program/steps/settings/folders.inc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/roundcubemail/program/steps/settings/folders.inc b/roundcubemail/program/steps/settings/folders.inc index b90487a07..1ceca7416 100644 --- a/roundcubemail/program/steps/settings/folders.inc +++ b/roundcubemail/program/steps/settings/folders.inc @@ -65,17 +65,21 @@ else if ($RCMAIL->action == 'unsubscribe') // delete an existing mailbox else if ($RCMAIL->action == 'delete-folder') { - $a_mboxes = $IMAP->list_unsubscribed(); - $delimiter = $IMAP->get_hierarchy_delimiter(); - $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true); $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); + // get folder's children or all folders if the name contains special characters + $delimiter = $IMAP->get_hierarchy_delimiter(); + if ((strpos($mbox, '%') === false) && (strpos($mbox, '*') === false)) + $a_mboxes = $IMAP->list_unsubscribed('', $mbox.$delimiter.'*'); + else + $a_mboxes = $IMAP->list_unsubscribed(); + if (strlen($mbox)) - $deleted = $IMAP->delete_mailbox(array($mbox)); + $deleted = $IMAP->delete_mailbox($mbox); if ($OUTPUT->ajax_call && $deleted) { - // Remove folder rows + // Remove folder and subfolders rows $OUTPUT->command('remove_folder_row', $mbox_utf8); foreach ($a_mboxes as $folder) { if (preg_match('/^'. preg_quote($mbox.$delimiter, '/') .'/', $folder)) { @@ -121,7 +125,7 @@ else if ($RCMAIL->action == 'rename-folder') . rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'); $before = isset($folderlist[$x+1]) ? rcube_charset_convert($folderlist[$x+1], 'UTF7-IMAP') : false; - + $OUTPUT->command('replace_folder_row', rcube_charset_convert($oldfolder, 'UTF7-IMAP'), rcube_charset_convert($folderlist[$x], 'UTF7-IMAP'), $display_rename, $before); } |
