From cf13bfcc6ca27f5a73de1542e17cdba3e512b615 Mon Sep 17 00:00:00 2001 From: brettp Date: Tue, 8 Feb 2011 20:30:06 +0000 Subject: Fixes #2869: User settings for plugins work again. git-svn-id: http://code.elgg.org/elgg/trunk@8080 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/plugins.php | 79 +++++++++++++++----------------------------------- 1 file changed, 23 insertions(+), 56 deletions(-) (limited to 'engine/lib/plugins.php') diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index 85f821315..f8177a5f7 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -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); } /** -- cgit v1.2.3