diff options
author | alecpl <alec@alec.pl> | 2010-12-08 12:52:04 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-12-08 12:52:04 +0000 |
commit | 90f81a6c8de5aecfa36c54cc5260d25ba883aa51 (patch) | |
tree | 474e5e9edbae20f38f928fbe30b8a6cbd465fd2a /program/steps | |
parent | 5be0d000ac8431079617e8eda2a9675b1bdbe417 (diff) |
- Better support for READ-ONLY and NOPERM responses handling (#1487083)
- Add confirmation message on purge/expunge commands response
- Fix CLOSE was called on unselected mailbox
Diffstat (limited to 'program/steps')
-rw-r--r-- | program/steps/mail/copy.inc | 4 | ||||
-rw-r--r-- | program/steps/mail/folders.inc | 82 | ||||
-rw-r--r-- | program/steps/mail/list.inc | 3 | ||||
-rw-r--r-- | program/steps/mail/mark.inc | 2 | ||||
-rw-r--r-- | program/steps/mail/move_del.inc | 4 | ||||
-rw-r--r-- | program/steps/mail/search.inc | 3 | ||||
-rw-r--r-- | program/steps/settings/folders.inc | 15 |
7 files changed, 59 insertions, 54 deletions
diff --git a/program/steps/mail/copy.inc b/program/steps/mail/copy.inc index 4cd51d816..8a7c5916b 100644 --- a/program/steps/mail/copy.inc +++ b/program/steps/mail/copy.inc @@ -33,7 +33,7 @@ if (!empty($_POST['_uid']) && !empty($_POST['_target_mbox'])) { if (!$copied) { // send error message - $OUTPUT->show_message('errorcopying', 'error'); + rcmail_display_server_error('errorcopying'); $OUTPUT->send(); exit; } @@ -52,5 +52,3 @@ else { // send response $OUTPUT->send(); - - diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc index a74e61615..3b96dc29c 100644 --- a/program/steps/mail/folders.inc +++ b/program/steps/mail/folders.inc @@ -20,55 +20,61 @@ // only process ajax requests if (!$OUTPUT->ajax_call) - return; + return; $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); // send EXPUNGE command -if ($RCMAIL->action=='expunge') -{ - $success = $IMAP->expunge($mbox); +if ($RCMAIL->action == 'expunge') { - // reload message list if current mailbox - if ($success && !empty($_REQUEST['_reload'])) - { - $OUTPUT->command('set_quota', rcmail_quota_content()); - $OUTPUT->command('message_list.clear'); - $RCMAIL->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 ($RCMAIL->action=='purge') +else if ($RCMAIL->action == 'purge') { - $delimiter = $IMAP->get_hierarchy_delimiter(); - $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; - $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/'; + $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); - // 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 ($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, 0); - $OUTPUT->command('set_quota', rcmail_quota_content()); - rcmail_set_unseen_count($mbox, 0); + 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()); + $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(); diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc index 6353be7cc..7e6d294c8 100644 --- a/program/steps/mail/list.inc +++ b/program/steps/mail/list.inc @@ -106,8 +106,7 @@ if (isset($a_headers) && count($a_headers)) else { // handle IMAP errors (e.g. #1486905) if ($err_code = $IMAP->get_error_code()) { - $err_str = $IMAP->get_error_str(); - $OUTPUT->show_message('servererrormsg', 'error', array('msg' => $err_str)); + rcmail_display_server_error(); } else if ($search_request) $OUTPUT->show_message('searchnomatch', 'notice'); diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc index 65a8fc6ba..1ff4407c5 100644 --- a/program/steps/mail/mark.inc +++ b/program/steps/mail/mark.inc @@ -47,7 +47,7 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va // send error message if ($_POST['_from'] != 'show') $OUTPUT->command('list_mailbox'); - $OUTPUT->show_message('errormarking', 'error'); + rcmail_display_server_error('errormarking'); $OUTPUT->send(); exit; } diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc index 06bef0dc6..2db3ec31a 100644 --- a/program/steps/mail/move_del.inc +++ b/program/steps/mail/move_del.inc @@ -39,7 +39,7 @@ if ($RCMAIL->action=='moveto' && !empty($_POST['_uid']) && strlen($_POST['_targe // send error message if ($_POST['_from'] != 'show') $OUTPUT->command('list_mailbox'); - $OUTPUT->show_message('errormoving', 'error'); + rcmail_display_server_error('errormoving'); $OUTPUT->send(); exit; } @@ -60,7 +60,7 @@ else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) { // send error message if ($_POST['_from'] != 'show') $OUTPUT->command('list_mailbox'); - $OUTPUT->show_message('errordeleting', 'error'); + rcmail_display_server_error('errordeleting'); $OUTPUT->send(); exit; } diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc index 90d1c374c..39fb32fc9 100644 --- a/program/steps/mail/search.inc +++ b/program/steps/mail/search.inc @@ -124,8 +124,7 @@ if (!empty($result_h)) { } // handle IMAP errors (e.g. #1486905) else if ($err_code = $IMAP->get_error_code()) { - $err_str = $IMAP->get_error_str(); - $OUTPUT->show_message('servererrormsg', 'error', array('msg' => $err_str)); + rcmail_display_server_error(); } else { $OUTPUT->show_message('searchnomatch', 'notice'); diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc index 1ceca7416..7ae4fb35d 100644 --- a/program/steps/settings/folders.inc +++ b/program/steps/settings/folders.inc @@ -34,7 +34,7 @@ if ($RCMAIL->action == 'subscribe') // Handle virtual (non-existing) folders if (!$result && $IMAP->get_error_code() == -1 && - strpos($IMAP->get_error_str(), '[TRYCREATE]') + $IMAP->get_response_code() == rcube_imap::TRYCREATE ) { $result = $IMAP->create_mailbox($mbox, true); if ($result) { @@ -45,7 +45,7 @@ if ($RCMAIL->action == 'subscribe') if ($result) $OUTPUT->show_message('foldersubscribed', 'confirmation'); else - $OUTPUT->show_message('errorsaving', 'error'); + rcmail_display_server_error('errorsaving'); } } @@ -58,7 +58,7 @@ else if ($RCMAIL->action == 'unsubscribe') if ($result) $OUTPUT->show_message('folderunsubscribed', 'confirmation'); else - $OUTPUT->show_message('errorsaving', 'error'); + rcmail_display_server_error('errorsaving'); } } @@ -92,7 +92,7 @@ else if ($RCMAIL->action == 'delete-folder') $OUTPUT->command('set_quota', rcmail_quota_content()); } else if (!$deleted) { - $OUTPUT->show_message('errorsaving', 'error'); + rcmail_display_server_error('errorsaving'); } } @@ -141,7 +141,7 @@ else if ($RCMAIL->action == 'rename-folder') rcube_charset_convert($name, 'UTF7-IMAP'), $display_rename, $before); } else if (!$rename) { - $OUTPUT->show_message('errorsaving', 'error'); + rcmail_display_server_error('errorsaving'); } } @@ -179,7 +179,7 @@ else if ($RCMAIL->action == 'purge') $OUTPUT->command('show_folder', $mbox_utf8, null, true); } else { - $OUTPUT->show_message('errorsaving', 'error'); + rcmail_display_server_error('errorsaving'); } } @@ -195,6 +195,9 @@ else if ($RCMAIL->action == 'folder-size') if ($size !== false) { $OUTPUT->command('folder_size_update', show_bytes($size)); } + else { + rcmail_display_server_error(); + } } if ($OUTPUT->ajax_call) |