aboutsummaryrefslogtreecommitdiff
path: root/engine/classes/ElggWidget.php
diff options
context:
space:
mode:
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-11-20 14:33:17 +0000
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-11-20 14:33:17 +0000
commit95c79a67493521d2d9761fde60ccfbf2af48ce87 (patch)
tree57d7652f060a968efab7a6a6842d160bf0c73e5d /engine/classes/ElggWidget.php
parent4dcea7b5aa7b6a597a5d2d086f99dee6f57f9004 (diff)
downloadelgg-95c79a67493521d2d9761fde60ccfbf2af48ce87.tar.gz
elgg-95c79a67493521d2d9761fde60ccfbf2af48ce87.tar.bz2
moved save widget settings function to ElggWidget
git-svn-id: http://code.elgg.org/elgg/trunk@7383 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/classes/ElggWidget.php')
-rw-r--r--engine/classes/ElggWidget.php45
1 files changed, 45 insertions, 0 deletions
diff --git a/engine/classes/ElggWidget.php b/engine/classes/ElggWidget.php
index e1c975777..1622aa5b3 100644
--- a/engine/classes/ElggWidget.php
+++ b/engine/classes/ElggWidget.php
@@ -144,4 +144,49 @@ class ElggWidget extends ElggObject {
}
$this->column = $column;
}
+
+ /**
+ * Saves the widget's settings
+ *
+ * Plugins can override the save mechanism using the plugin hook:
+ * 'widget_settings', <widget handler identifier>. The widget and
+ * the parameters are passed. The plugin hook handler should return
+ * true to indicate that it has successfully saved the settings.
+ *
+ * @warning The values in the parameter array cannot be arrays
+ *
+ * @param array $params An array of name => value parameters
+ *
+ * @return bool
+ * @since 1.8.0
+ */
+ public function saveSettings($params) {
+ if (!$this->canEdit()) {
+ return false;
+ }
+
+ // plugin hook handlers should return true to indicate the settings have
+ // been saved so that default code does not run
+ $hook_params = array(
+ 'widget' => $this,
+ 'params' => $params
+ );
+ if (elgg_trigger_plugin_hook('widget_settings', $this->handler, $hook_params, false) == true) {
+ return true;
+ }
+
+ if (is_array($params) && count($params) > 0) {
+ foreach ($params as $name => $value) {
+ if (is_array($value)) {
+ // private settings cannot handle arrays
+ return false;
+ } else {
+ $this->$name = $value;
+ }
+ }
+ $this->save();
+ }
+
+ return true;
+ }
} \ No newline at end of file