]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #2869: User settings for plugins work again.
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Tue, 8 Feb 2011 20:30:06 +0000 (20:30 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Tue, 8 Feb 2011 20:30:06 +0000 (20:30 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@8080 36083f99-b078-4883-b0ff-0f9b5a30f544

engine/classes/ElggPlugin.php
engine/lib/plugins.php

index b82e92fba7c3b74915b94a33e25d9c4198c5044a..ec28c80646d0b95d7948bc79d58b3de16c871417 100644 (file)
@@ -323,42 +323,99 @@ class ElggPlugin extends ElggObject {
        /**
         * Returns a user's setting for this plugin
         *
-        * @param int    $user_guid The user GUID
         * @param string $name      The setting name
+        * @param int    $user_guid The user GUID
         *
         * @return mixed The setting string value or false
         */
-       public function getUserSetting($user_guid, $name) {
+       public function getUserSetting($name, $user_guid = null) {
+               $user_guid = (int)$user_guid;
+
+               if ($user_guid) {
+                       $user = get_entity($user_guid);
+               } else {
+                       $user = elgg_get_logged_in_user_entity();
+               }
+
+               if (!($user instanceof ElggUser)) {
+                       return false;
+               }
+
                $name = elgg_namespace_plugin_private_setting('user_setting', $name, $this->getID());
-               return get_private_setting($user_guid, $name);
+               return get_private_setting($user->guid, $name);
        }
 
        /**
         * Sets a user setting for a plugin
         *
-        * @param int    $user_guid The user GUID
         * @param string $name      The setting name
         * @param string $value     The setting value
+        * @param int    $user_guid The user GUID
         *
         * @return mixed The new setting ID or false
         */
-       public function setUserSetting($user_guid, $name, $value) {
+       public function setUserSetting($name, $value, $user_guid = null) {
+               $user_guid = (int)$user_guid;
+
+               if ($user_guid) {
+                       $user = get_entity($user_guid);
+               } else {
+                       $user = elgg_get_logged_in_user_entity();
+               }
+
+               if (!($user instanceof ElggUser)) {
+                       return false;
+               }
+
+               // Hook to validate setting
+               // note this doesn't pass the namespaced name!
+               $value = elgg_trigger_plugin_hook('plugin:usersetting', 'user', array(
+                       'user' => $user,
+                       'plugin' => $this->getID(),
+                       'name' => $name,
+                       'value' => $value
+               ), $value);
+
+               // set the namespaced name.
                $name = elgg_namespace_plugin_private_setting('user_setting', $name, $this->getID());
-               return set_private_setting($user_guid, $name, $value);
+
+               return set_private_setting($user->guid, $name, $value);
        }
 
 
        /**
         * Removes a user setting name and value.
         *
-        * @param int    $user_guid The user GUID
         * @param string $name      The user setting name
-        *
+        * @param int    $user_guid The user GUID
         * @return bool
         */
-       public function removeUserSetting($user_guid, $name) {
+       public function removeUserSetting($name, $user_guid = null) {
+               $user_guid = (int)$user_guid;
+
+               if ($user_guid) {
+                       $user = get_entity($user_guid);
+               } else {
+                       $user = elgg_get_logged_in_user_entity();
+               }
+
+               if (!($user instanceof ElggUser)) {
+                       return false;
+               }
+
+               // Hook to validate setting
+               // note this doesn't pass the namespaced name!
+               $value = elgg_trigger_plugin_hook('plugin:usersetting', 'user', array(
+                       'user' => $user,
+                       'plugin' => $this->getID(),
+                       'name' => $name,
+                       'value' => $value
+               ), $value);
+
+               // set the namespaced name.
                $name = elgg_namespace_plugin_private_setting('user_setting', $name, $this->getID());
-               return remove_private_setting($user_guid, $name);
+
+               return remove_private_setting($user->guid, $name);
        }
 
 
index 85f82131504720b8867f97524d4119f7e584fd02..f8177a5f796ca6476d502e33e8ea5f266ff3e8ee 100644 (file)
@@ -761,7 +761,7 @@ function elgg_get_calling_plugin_entity() {
  * @param string $plugin_id Plugin name.
  * @param int    $user_guid The guid who's settings to retrieve.
  *
- * @return array of settings in an associative array minus prefix.
+ * @return StdClass Object with all user settings.
  */
 function find_plugin_usersettings($plugin_id = null, $user_guid = 0) {
        $plugin_id = sanitise_string($plugin_id);
@@ -815,34 +815,17 @@ function find_plugin_usersettings($plugin_id = null, $user_guid = 0) {
  * @return bool
  */
 function set_plugin_usersetting($name, $value, $user_guid = 0, $plugin_id = "") {
-       $plugin_id = sanitise_string($plugin_id);
-       $user_guid = (int)$user_guid;
-       $name = sanitise_string($name);
-
-       if (!$plugin_id) {
-               $plugin_id = elgg_get_calling_plugin_id();
-       }
-
-       $user = get_entity($user_guid);
-       if (!$user) {
-               $user = elgg_get_logged_in_user_entity();
+       if ($plugin_id) {
+               $plugin = elgg_get_plugin_from_id($plugin_id);
+       } else {
+               $plugin = elgg_get_calling_plugin_entity();
        }
 
-       if (($user) && ($user instanceof ElggUser)) {
-               $name = elgg_namespace_plugin_private_setting('user_setting', "$plugin_id:$name");
-
-               // Hook to validate setting
-               $value = elgg_trigger_plugin_hook('plugin:usersetting', 'user', array(
-                       'user' => $user,
-                       'plugin' => $plugin_id,
-                       'name' => $name,
-                       'value' => $value
-               ), $value);
-
-               return set_private_setting($user->guid, $name, $value);
+       if (!$plugin) {
+               return false;
        }
 
-       return false;
+       return $plugin->setUserSetting($name, $value, $user_guid);
 }
 
 /**
@@ -855,25 +838,17 @@ function set_plugin_usersetting($name, $value, $user_guid = 0, $plugin_id = "")
  * @return bool Success
  */
 function clear_plugin_usersetting($name, $user_guid = 0, $plugin_id = '') {
-       $plugin_id = sanitise_string($plugin_id);
-       $name = sanitise_string($name);
-
-       if (!$plugin_id) {
-               $plugin_id = elgg_get_calling_plugin_id();
-       }
-
-       $user = get_entity((int) $user_guid);
-       if (!$user) {
-               $user = elgg_get_logged_in_user_entity();
+       if ($plugin_id) {
+               $plugin = elgg_get_plugin_from_id($plugin_id);
+       } else {
+               $plugin = elgg_get_calling_plugin_entity();
        }
 
-       if (($user) && ($user instanceof ElggUser)) {
-               $prefix = elgg_namespace_plugin_private_setting('user_setting', "$plugin_id:$name");
-
-               return remove_private_setting($user->getGUID(), $prefix);
+       if (!$plugin) {
+               return false;
        }
 
-       return FALSE;
+       return $plugin->removeUserSetting($user_guid, $name);
 }
 
 /**
@@ -882,30 +857,22 @@ function clear_plugin_usersetting($name, $user_guid = 0, $plugin_id = '') {
  * @param string $name      The name.
  * @param int    $user_guid Guid of owning user
  * @param string $plugin_id Optional plugin name, if not specified
- *                            then it is detected from where you are calling from.
+ *                          it is detected from where you are calling.
  *
  * @return mixed
  */
 function get_plugin_usersetting($name, $user_guid = 0, $plugin_id = "") {
-       $plugin_id = sanitise_string($plugin_id);
-       $user_guid = (int)$user_guid;
-       $name = sanitise_string($name);
-
-       if (!$plugin_id) {
-               $plugin_id = elgg_get_calling_plugin_id();
-       }
-
-       $user = get_entity($user_guid);
-       if (!$user) {
-               $user = elgg_get_logged_in_user_entity();
+       if ($plugin_id) {
+               $plugin = elgg_get_plugin_from_id($plugin_id);
+       } else {
+               $plugin = elgg_get_calling_plugin_entity();
        }
 
-       if (($user) && ($user instanceof ElggUser)) {
-               $name = elgg_namespace_plugin_private_setting('user_setting', "$plugin_id:$name");
-               return get_private_setting($user->guid, $name);
+       if (!$plugin) {
+               return false;
        }
 
-       return false;
+       return $plugin->getUserSetting($name, $user_guid);
 }
 
 /**