summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2011-04-19 20:41:24 +0000
committerthomascube <thomas@roundcube.net>2011-04-19 20:41:24 +0000
commitbbb1427caabba60e4329d4b3653fbf29d5ddddcc (patch)
tree0bc16083f5731593ed6a35a374a34a2e9b6a745d
parent968754b09ebc1b501d0840e8c4eb3d0f617a5080 (diff)
Gracefully shrug on database errors
-rw-r--r--program/include/rcube_mdb2.php4
-rw-r--r--program/include/rcube_user.php2
-rw-r--r--program/localization/en_US/messages.inc1
-rw-r--r--program/steps/settings/delete_identity.inc4
-rw-r--r--program/steps/settings/edit_identity.inc2
-rw-r--r--program/steps/settings/folders.inc4
6 files changed, 10 insertions, 7 deletions
diff --git a/program/include/rcube_mdb2.php b/program/include/rcube_mdb2.php
index 36a595098..7675e847f 100644
--- a/program/include/rcube_mdb2.php
+++ b/program/include/rcube_mdb2.php
@@ -266,7 +266,9 @@ class rcube_mdb2
raise_error(array('code' => 500, 'type' => 'db',
'line' => __LINE__, 'file' => __FILE__,
- 'message' => $this->db_error_msg), true, true);
+ 'message' => $this->db_error_msg), true, false);
+
+ $result = false;
}
else {
$result = $q->execute($params);
diff --git a/program/include/rcube_user.php b/program/include/rcube_user.php
index 75faf4728..c9936d619 100644
--- a/program/include/rcube_user.php
+++ b/program/include/rcube_user.php
@@ -288,7 +288,7 @@ class rcube_user
// we'll not delete last identity
if ($sql_arr['ident_count'] <= 1)
- return false;
+ return -1;
$this->db->query(
"UPDATE ".get_table_name('identities').
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index d787f831d..aa3d308fc 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -24,6 +24,7 @@ $messages['sessionerror'] = 'Your session is invalid or expired';
$messages['imaperror'] = 'Connection to IMAP server failed';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
+$messages['databaserror'] = 'Database Error!';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only';
$messages['errornoperm'] = 'Unable to perform operation. Permission denied';
$messages['invalidrequest'] = 'Invalid request! No data was saved.';
diff --git a/program/steps/settings/delete_identity.inc b/program/steps/settings/delete_identity.inc
index 9f76046b7..275bcb684 100644
--- a/program/steps/settings/delete_identity.inc
+++ b/program/steps/settings/delete_identity.inc
@@ -34,10 +34,10 @@ if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid))
$deleted = !$plugin['abort'] ? $USER->delete_identity($iid) : $plugin['result'];
- if ($deleted)
+ if ($deleted > 0 && $deleted !== false)
$OUTPUT->show_message('deletedsuccessfully', 'confirmation', null, false);
else
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'nodeletelastidentity', 'error', null, false);
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($deleted < 0 ? 'nodeletelastidentity' : 'errorsaving'), 'error', null, false);
// send response
if ($OUTPUT->ajax_call)
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index 71bd349a3..426c18ed0 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -28,7 +28,7 @@ if (($_GET['_iid'] || $_POST['_iid']) && $RCMAIL->action=='edit-identity') {
if (is_array($IDENTITY_RECORD))
$OUTPUT->set_env('iid', $IDENTITY_RECORD['identity_id']);
else {
- $OUTPUT->show_message('opnotpermitted', 'error');
+ $OUTPUT->show_message('databaserror', 'error');
// go to identities page
rcmail_overwrite_action('identities');
return;
diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index dcc3ce64b..a215d008b 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -354,11 +354,11 @@ function rcmail_rename_folder($oldname, $newname)
foreach ($a_threaded as $key => $val) {
if ($key == $oldname) {
unset($a_threaded[$key]);
- $a_threaded[$newname] = true;
+ $a_threaded[$newname] = true;
}
else if (preg_match($oldprefix, $key)) {
unset($a_threaded[$key]);
- $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = true;
+ $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = true;
}
}
$RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));