summaryrefslogtreecommitdiff
path: root/roundcubemail/program/steps/settings
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-12-06 14:06:44 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-12-06 14:06:44 +0000
commitb2ad315b7935a20fcc075689d47492d4839b754f (patch)
treeb4370b451a042ea989458c493d6c62fa0d9e15af /roundcubemail/program/steps/settings
parentf390ac2bde2493be936bd6c8fe509cc525b40725 (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.inc16
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);
}