]> git.donarmstrong.com Git - roundcube.git/blob - program/steps/mail/folders.inc
Imported Upstream version 0.7
[roundcube.git] / program / steps / mail / folders.inc
1 <?php
2
3 /*
4  +-----------------------------------------------------------------------+
5  | program/steps/mail/folders.inc                                        |
6  |                                                                       |
7  | This file is part of the Roundcube Webmail client                     |
8  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
9  | Licensed under the GNU GPL                                            |
10  |                                                                       |
11  | PURPOSE:                                                              |
12  |   Implement folder operations line EXPUNGE and Clear                  |
13  |                                                                       |
14  +-----------------------------------------------------------------------+
15  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
16  +-----------------------------------------------------------------------+
17
18  $Id: folders.inc 5266 2011-09-22 07:49:33Z alec $
19 */
20
21 // only process ajax requests
22 if (!$OUTPUT->ajax_call)
23     return;
24
25 $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
26
27 // send EXPUNGE command
28 if ($RCMAIL->action == 'expunge') {
29
30     $success = $IMAP->expunge($mbox);
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     }
46 }
47
48 // clear mailbox
49 else if ($RCMAIL->action == 'purge')
50 {
51     $delimiter = $IMAP->get_hierarchy_delimiter();
52     $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
53     $junk_regexp  = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/';
54
55     // we should only be purging trash and junk (or their subfolders)
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(), $mbox);
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         }
77     }
78 }
79
80 $OUTPUT->send();