From dae34b5c3f08d3045ab89631d3b59113df6568c8 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 11 Apr 2011 07:12:00 -0400
Subject: [PATCH] - Support 'abort' and 'result' response in 'preferences_save' hook, add error handling 

---
 CHANGELOG                             |    1 +
 program/steps/settings/save_prefs.inc |   15 +++++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 0b6bcc6..047901f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Support 'abort' and 'result' response in 'preferences_save' hook, add error handling
 - Fix bug where some content would cause hang on html2text conversion (#1487863)
 - Improve space-stuffing handling in format=flowed messages (#1487861)
 - Fix bug where some dates would produce SQL error in MySQL (#1487856)
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 64aeb5f..92e2d8b 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -97,10 +97,10 @@
   break;
 }
 
-$data = rcmail::get_instance()->plugins->exec_hook('preferences_save',
+$plugin = rcmail::get_instance()->plugins->exec_hook('preferences_save',
   array('prefs' => $a_user_prefs, 'section' => $CURR_SECTION));
 
-$a_user_prefs = $data['prefs'];
+$a_user_prefs = $plugin['prefs'];
 
 // don't override these parameters
 foreach ((array)$CONFIG['dont_override'] as $p)
@@ -159,10 +159,17 @@
   break;
 }
 
-if ($USER->save_prefs($a_user_prefs))
+// Save preferences
+if (!$plugin['abort'])
+  $saved = $USER->save_prefs($a_user_prefs);
+else
+  $saved = $plugin['result'];
+
+if ($saved)
   $OUTPUT->show_message('successfullysaved', 'confirmation');
+else
+  $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
 
 // display the form again
 rcmail_overwrite_action('edit-prefs');
-
 

--
Gitblit v1.9.1