thomascube
2010-12-17 db1a87cd6c506f2afbd1a37c64cb56ae11120b49
commit | author | age
15a9d1 1 <?php
T 2
3 /*
4  +-----------------------------------------------------------------------+
5  | program/steps/mail/folders.inc                                        |
6  |                                                                       |
e019f2 7  | This file is part of the Roundcube Webmail client                     |
A 8  | Copyright (C) 2005-2009, Roundcube Dev. - Switzerland                 |
15a9d1 9  | Licensed under the GNU GPL                                            |
T 10  |                                                                       |
11  | PURPOSE:                                                              |
12  |   Implement folder operations line EXPUNGE and Clear                  |
13  |                                                                       |
14  +-----------------------------------------------------------------------+
15  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
16  +-----------------------------------------------------------------------+
17
18  $Id$
19 */
20
881217 21 // only process ajax requests
T 22 if (!$OUTPUT->ajax_call)
db1a87 23     return;
881217 24
b72e2f 25 $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
15a9d1 26
T 27 // send EXPUNGE command
db1a87 28 if ($RCMAIL->action == 'expunge') {
15a9d1 29
db1a87 30     $success = $IMAP->expunge($mbox);
T 31
32     // reload message list if current mailbox
33     if ($success) {
34         $OUTPUT->show_message('folderexpunged', 'confirmation');
35
36         if (!empty($_REQUEST['_reload'])) {
37             $OUTPUT->command('set_quota', rcmail_quota_content());
38             $OUTPUT->command('message_list.clear');
39             $RCMAIL->action = 'list';
40             return;
41         }
42     }
43     else {
44         rcmail_display_server_error();
45     }
f11541 46 }
15a9d1 47
T 48 // clear mailbox
db1a87 49 else if ($RCMAIL->action == 'purge')
f11541 50 {
db1a87 51     $delimiter = $IMAP->get_hierarchy_delimiter();
T 52     $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
53     $junk_regexp  = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/';
ddd776 54
db1a87 55     // we should only be purging trash and junk (or their subfolders)
T 56     if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox']
57         || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox)
58     ) {
59         $success = $IMAP->clear_mailbox($mbox);
60
61         if ($success) {
62             $OUTPUT->show_message('folderpurged', 'confirmation');
63
64             if (!empty($_REQUEST['_reload'])) {
65                 $OUTPUT->set_env('messagecount', 0);
66                 $OUTPUT->set_env('pagecount', 0);
67                 $OUTPUT->command('message_list.clear');
68                 $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text());
69                 $OUTPUT->command('set_unread_count', $mbox, 0);
70                 $OUTPUT->command('set_quota', rcmail_quota_content());
71                 rcmail_set_unseen_count($mbox, 0);
72             }
73         }
74         else {
75             rcmail_display_server_error();
76         }
a02d48 77     }
f11541 78 }
15a9d1 79
db1a87 80 $OUTPUT->send();