summaryrefslogtreecommitdiff
path: root/program/steps
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-12-08 12:52:04 +0000
committeralecpl <alec@alec.pl>2010-12-08 12:52:04 +0000
commit90f81a6c8de5aecfa36c54cc5260d25ba883aa51 (patch)
tree474e5e9edbae20f38f928fbe30b8a6cbd465fd2a /program/steps
parent5be0d000ac8431079617e8eda2a9675b1bdbe417 (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.inc4
-rw-r--r--program/steps/mail/folders.inc82
-rw-r--r--program/steps/mail/list.inc3
-rw-r--r--program/steps/mail/mark.inc2
-rw-r--r--program/steps/mail/move_del.inc4
-rw-r--r--program/steps/mail/search.inc3
-rw-r--r--program/steps/settings/folders.inc15
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)