X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=program%2Fsteps%2Fmail%2Ffolders.inc;h=80936a0049c2b2880de439c7f6bc3fe2d700343f;hb=76507f7c63a660742e76889ad6e3919f3dde3bb0;hp=1b740ae6540e501b0226bf795f40922e59703ec9;hpb=d326b0c67bb536d2296004c927e89ab8c4a548b5;p=roundcube.git diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc index 1b740ae..80936a0 100644 --- a/program/steps/mail/folders.inc +++ b/program/steps/mail/folders.inc @@ -4,8 +4,8 @@ +-----------------------------------------------------------------------+ | program/steps/mail/folders.inc | | | - | This file is part of the RoundCube Webmail client | - | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | + | This file is part of the Roundcube Webmail client | + | Copyright (C) 2005-2009, The Roundcube Dev Team | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -15,47 +15,66 @@ | Author: Thomas Bruederli | +-----------------------------------------------------------------------+ - $Id: folders.inc 1020 2008-02-05 22:56:29Z thomasb $ + $Id: folders.inc 5266 2011-09-22 07:49:33Z alec $ */ -$mbox_name = $IMAP->get_mailbox_name(); +// only process ajax requests +if (!$OUTPUT->ajax_call) + return; + +$mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); // send EXPUNGE command -if ($_action=='expunge' && ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))) -{ - $success = $IMAP->expunge($mbox); +if ($RCMAIL->action == 'expunge') { - // reload message list if current mailbox - if ($success && !empty($_REQUEST['_reload'])) - { - $OUTPUT->command('message_list.clear'); - $_action = 'list'; - return; - } - else - $commands = "// expunged: $success\n"; + $success = $IMAP->expunge($mbox); + + // reload message list if current mailbox + if ($success) { + $OUTPUT->show_message('folderexpunged', 'confirmation'); + + if (!empty($_REQUEST['_reload'])) { + $OUTPUT->command('set_quota', rcmail_quota_content()); + $OUTPUT->command('message_list.clear'); + $RCMAIL->action = 'list'; + return; + } + } + else { + rcmail_display_server_error(); + } } // clear mailbox -else if ($_action=='purge' && ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))) +else if ($RCMAIL->action == 'purge') { - // we should only be purging trash and junk - if($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox']) - { - $success = $IMAP->clear_mailbox($mbox); - - if ($success && !empty($_REQUEST['_reload'])) - { - $OUTPUT->set_env('messagecount', 0); - $OUTPUT->set_env('pagecount', 0); - $OUTPUT->command('message_list.clear'); - $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text()); - $OUTPUT->command('set_unread_count', $mbox_name, 0); + $delimiter = $IMAP->get_hierarchy_delimiter(); + $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; + $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/'; + + // we should only be purging trash and junk (or their subfolders) + if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox'] + || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox) + ) { + $success = $IMAP->clear_mailbox($mbox); + + if ($success) { + $OUTPUT->show_message('folderpurged', 'confirmation'); + + if (!empty($_REQUEST['_reload'])) { + $OUTPUT->set_env('messagecount', 0); + $OUTPUT->set_env('pagecount', 0); + $OUTPUT->command('message_list.clear'); + $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text(), $mbox); + $OUTPUT->command('set_unread_count', $mbox, 0); + $OUTPUT->command('set_quota', rcmail_quota_content()); + rcmail_set_unseen_count($mbox, 0); + } + } + else { + rcmail_display_server_error(); + } } - else - $commands = "// purged: $success"; - } } -$OUTPUT->send($commands); -?> +$OUTPUT->send();