diff options
author | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-11-20 12:36:28 +0000 |
---|---|---|
committer | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-11-20 12:36:28 +0000 |
commit | fdb8894ca1d0ae7ba9595160465aa5ac6dc75e9b (patch) | |
tree | d551bd8be87b5483d46ab76f2ec690d5661671d0 | |
parent | 1d89455f5546d5fc6507fdd7319ac2387bc59615 (diff) | |
download | elgg-fdb8894ca1d0ae7ba9595160465aa5ac6dc75e9b.tar.gz elgg-fdb8894ca1d0ae7ba9595160465aa5ac6dc75e9b.tar.bz2 |
Refs #571. Fixes #569, #570:
* Plugin functions set to use private data store.
* Fixed some db queries
* Modified plugin class overriding get/set functions
git-svn-id: https://code.elgg.org/elgg/trunk@2475 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r-- | engine/lib/entities.php | 13 | ||||
-rw-r--r-- | engine/lib/plugins.php | 69 |
2 files changed, 60 insertions, 22 deletions
diff --git a/engine/lib/entities.php b/engine/lib/entities.php index 3604574e3..0cfceb7a0 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -2164,7 +2164,8 @@ global $CONFIG;
$entity_guid = (int) $entity_guid;
- $name = mysql_real_escape_string($name);
+ $name = sanitise_string($name); +
if ($setting = get_data_row("SELECT value from {$CONFIG->dbprefix}private_settings where name = '{$name}' and entity_guid = {$entity_guid}")) {
return $setting->value;
}
@@ -2188,7 +2189,7 @@ $return = array(); foreach ($result as $r) $return[$r->name] = $r->value; - + return $return; } @@ -2207,9 +2208,9 @@ global $CONFIG;
$entity_guid = (int) $entity_guid;
- $name = mysql_real_escape_string($name);
- $value = mysql_real_escape_string($value); -
+ $name = sanitise_string($name);
+ $value = sanitise_string($value); +
return insert_data("INSERT into {$CONFIG->dbprefix}private_settings (entity_guid, name, value) VALUES ($entity_guid, '{$name}', '{$value}') ON DUPLICATE KEY UPDATE value='$value'");
}
@@ -2226,7 +2227,7 @@ global $CONFIG;
$entity_guid = (int) $entity_guid;
- $name = mysql_real_escape_string($name);
+ $name = sanitise_string($name);
return delete_data("DELETE from {$CONFIG->dbprefix}private_settings where name = '{$name}' and entity_guid = {$entity_guid}");
} diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index d2381db40..2f6519f0a 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -44,6 +44,44 @@ { parent::__construct($guid); } + + /** + * Override entity get and sets in order to save data to private data store. + */ + public function get($name) + { + // See if its in our base attribute + if (isset($this->attributes[$name])) { + return $this->attributes[$name]; + } + + // No, so see if its in the private data store. + $meta = get_private_setting($this->guid, $name); + if ($meta) + return $meta; + + // Can't find it, so return null + return null; + } + + /** + * Override entity get and sets in order to save data to private data store. + */ + public function set($name, $value) + { + if (array_key_exists($name, $this->attributes)) + { + // Check that we're not trying to change the guid! + if ((array_key_exists('guid', $this->attributes)) && ($name=='guid')) + return false; + + $this->attributes[$name] = $value; + } + else + return set_private_setting($this->guid, $name, $value); + + return true; + } }
/**
@@ -294,10 +332,10 @@ $plugin_name = sanitise_string($plugin_name); if (!$plugin_name) $plugin_name = get_plugin_name(); - + if ($plugins) { - foreach ($plugins as $plugin) + foreach ($plugins as $plugin) if (strcmp($plugin->title, $plugin_name)==0) return $plugin; } @@ -323,18 +361,18 @@ if ($user_guid == 0) $user_guid = get_loggedin_userid(); // Get metadata for user - $all_metadata = get_metadata_for_entity($user_guid); + $all_metadata = get_all_private_settings($user_guid); //get_metadata_for_entity($user_guid); if ($all_metadata) { $prefix = "plugin:settings:$plugin_name:"; $return = new stdClass; - foreach ($all_metadata as $meta) + foreach ($all_metadata as $key => $meta) { - $name = substr($meta->name, strlen($prefix)); - $value = $meta->value; + $name = substr($key, strlen($prefix)); + $value = $meta; - if (strpos($meta->name, $prefix) === 0) + if (strpos($key, $prefix) === 0) $return->$name = $value; } @@ -367,10 +405,9 @@ if (($user) && ($user instanceof ElggUser)) { $prefix = "plugin:settings:$plugin_name:$name"; - $user->$prefix = $value; - $user->save(); - - return true; + //$user->$prefix = $value; + //$user->save(); + return set_private_setting($user->guid, $prefix, $value); } return false; @@ -397,7 +434,7 @@ if (($user) && ($user instanceof ElggUser)) { $prefix = "plugin:settings:$plugin_name:$name"; - return $user->$prefix; + return get_private_setting($user->guid, $prefix); //$user->$prefix; } return false; @@ -411,7 +448,7 @@ * @param string $plugin_name Optional plugin name, if not specified then it is detected from where you are calling from. */ function set_plugin_setting($name, $value, $plugin_name = "") - { + { $plugin = find_plugin_settings($plugin_name); if (!$plugin) @@ -421,8 +458,8 @@ { $plugin->title = $plugin_name; $plugin->access_id = 2; - $plugin->$name = $value; $plugin->save(); + $plugin->$name = $value; return $plugin->getGUID(); } @@ -439,7 +476,7 @@ function get_plugin_setting($name, $plugin_name = "") { $plugin = find_plugin_settings($plugin_name); - + if ($plugin) return $plugin->$name; @@ -457,7 +494,7 @@ $plugin = find_plugin_settings($plugin_name); if ($plugin) - return $plugin->clearMetaData($name); + return remove_all_private_settings($plugin->guid); //$plugin->clearMetaData($name); return false; } |