diff options
Diffstat (limited to 'engine/classes/ElggPlugin.php')
-rw-r--r-- | engine/classes/ElggPlugin.php | 99 |
1 files changed, 94 insertions, 5 deletions
diff --git a/engine/classes/ElggPlugin.php b/engine/classes/ElggPlugin.php index c57171eff..5ecdfdfd0 100644 --- a/engine/classes/ElggPlugin.php +++ b/engine/classes/ElggPlugin.php @@ -259,6 +259,46 @@ class ElggPlugin extends ElggObject { return $this->$name; } + /** + * Returns an array of all settings saved for this plugin. + * + * @note Unlike user settings, plugin settings are not namespaced. + * + * @return array An array of key/value pairs. + */ + public function getAllSettings() { + if (!$this->guid) { + return false; + } + + $db_prefix = elgg_get_config('dbprefix'); + // need to remove all namespaced private settings. + $us_prefix = elgg_namespace_plugin_private_setting('user_setting', '', $this->getID()); + $is_prefix = elgg_namespace_plugin_private_setting('internal', '', $this->getID()); + + // Get private settings for user + $q = "SELECT * FROM {$db_prefix}private_settings + WHERE entity_guid = $this->guid + AND name NOT LIKE '$us_prefix%' + AND name NOT LIKE '$is_prefix%'"; + + $private_settings = get_data($q); + + if ($private_settings) { + $return = array(); + + foreach ($private_settings as $setting) { + $name = substr($setting->name, $ps_prefix_len); + $value = $setting->value; + + $return[$name] = $value; + } + + return $return; + } + + return false; + } /** * Set a plugin setting for the plugin @@ -294,7 +334,7 @@ class ElggPlugin extends ElggObject { * * @return bool */ - public function removeSetting($name) { + public function unsetSetting($name) { return remove_private_setting($this->guid, $name); } @@ -306,7 +346,7 @@ class ElggPlugin extends ElggObject { * @todo If we could namespace the plugin settings this would be cleaner. * @return bool */ - public function removeAllSettings() { + public function unsetAllSettings() { $db_prefix = get_config('dbprefix'); $ps_prefix = elgg_namespace_plugin_private_setting('setting', ''); @@ -346,6 +386,55 @@ class ElggPlugin extends ElggObject { } /** + * Returns an array of all user settings saved for this plugin for the user. + * + * @note Plugin settings are saved with a prefix. This removes that prefix. + * + * @param int $user_guid The user GUID. Defaults to logged in. + * @return array An array of key/value pairs. + */ + public function getAllUserSettings($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; + } + + $db_prefix = elgg_get_config('dbprefix'); + // send an empty name so we just get the first part of the namespace + $ps_prefix = elgg_namespace_plugin_private_setting('user_setting', '', $this->getID()); + $ps_prefix_len = strlen($ps_prefix); + + // Get private settings for user + $q = "SELECT * FROM {$db_prefix}private_settings + WHERE entity_guid = {$user->guid} + AND name LIKE '$ps_prefix%'"; + + $private_settings = get_data($q); + + if ($private_settings) { + $return = array(); + + foreach ($private_settings as $setting) { + $name = substr($setting->name, $ps_prefix_len); + $value = $setting->value; + + $return[$name] = $value; + } + + return $return; + } + + return false; + } + + /** * Sets a user setting for a plugin * * @param string $name The setting name @@ -390,7 +479,7 @@ class ElggPlugin extends ElggObject { * @param int $user_guid The user GUID * @return bool */ - public function removeUserSetting($name, $user_guid = null) { + public function unsetUserSetting($name, $user_guid = null) { $user_guid = (int)$user_guid; if ($user_guid) { @@ -419,7 +508,7 @@ class ElggPlugin extends ElggObject { * @param int $user_guid The user GUID to remove user settings. * @return bool */ - public function removeAllUserSettings($user_guid) { + public function unsetAllUserSettings($user_guid) { $db_prefix = get_config('dbprefix'); $ps_prefix = elgg_namespace_plugin_private_setting('user_setting', '', $this->getID()); @@ -439,7 +528,7 @@ class ElggPlugin extends ElggObject { * * @return bool */ - public function removeAllUsersSettings() { + public function unsetAllUsersSettings() { $db_prefix = get_config('dbprefix'); $ps_prefix = elgg_namespace_plugin_private_setting('user_setting', '', $this->getID()); |