aboutsummaryrefslogtreecommitdiff
path: root/engine/lib/private_settings.php
diff options
context:
space:
mode:
Diffstat (limited to 'engine/lib/private_settings.php')
-rw-r--r--engine/lib/private_settings.php228
1 files changed, 46 insertions, 182 deletions
diff --git a/engine/lib/private_settings.php b/engine/lib/private_settings.php
index 0d86b93a1..7541f7b3b 100644
--- a/engine/lib/private_settings.php
+++ b/engine/lib/private_settings.php
@@ -9,169 +9,6 @@
*/
/**
- * Get entities based on their private data.
- *
- * @param string $name The name of the setting
- * @param string $value The value of the setting
- * @param string $type The type of entity (eg "user", "object" etc)
- * @param string $subtype The arbitrary subtype of the entity
- * @param int $owner_guid The GUID of the owning user
- * @param string $order_by The field to order by; by default, time_created desc
- * @param int $limit The number of entities to return; 10 by default
- * @param int $offset The indexing offset, 0 by default
- * @param boolean $count Return a count of entities
- * @param int $site_guid The site to get entities for. 0 for current, -1 for any
- * @param mixed $container_guid The container(s) GUIDs
- *
- * @return array A list of entities.
- * @deprecated 1.8
- */
-function get_entities_from_private_setting($name = "", $value = "", $type = "", $subtype = "",
-$owner_guid = 0, $order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0,
-$container_guid = null) {
- elgg_deprecated_notice('get_entities_from_private_setting() was deprecated by elgg_get_entities_from_private_setting()!', 1.8);
-
- $options = array();
-
- $options['private_setting_name'] = $name;
- $options['private_setting_value'] = $value;
-
- // set container_guid to owner_guid to emulate old functionality
- if ($owner_guid != "") {
- if (is_null($container_guid)) {
- $container_guid = $owner_guid;
- }
- }
-
- if ($type) {
- $options['types'] = $type;
- }
-
- if ($subtype) {
- $options['subtypes'] = $subtype;
- }
-
- if ($owner_guid) {
- if (is_array($owner_guid)) {
- $options['owner_guids'] = $owner_guid;
- } else {
- $options['owner_guid'] = $owner_guid;
- }
- }
-
- if ($container_guid) {
- if (is_array($container_guid)) {
- $options['container_guids'] = $container_guid;
- } else {
- $options['container_guid'] = $container_guid;
- }
- }
-
- $options['limit'] = $limit;
-
- if ($offset) {
- $options['offset'] = $offset;
- }
-
- if ($order_by) {
- $options['order_by'];
- }
-
- if ($site_guid) {
- $options['site_guid'];
- }
-
- if ($count) {
- $options['count'] = $count;
- }
-
- return elgg_get_entities_from_private_settings($options);
-}
-
-/**
- * Get entities based on their private data by multiple keys.
- *
- * @param string $name The name of the setting
- * @param mixed $type Entity type
- * @param string $subtype Entity subtype
- * @param int $owner_guid The GUID of the owning user
- * @param string $order_by The field to order by; by default, time_created desc
- * @param int $limit The number of entities to return; 10 by default
- * @param int $offset The indexing offset, 0 by default
- * @param bool $count Count entities
- * @param int $site_guid Site GUID. 0 for current, -1 for any.
- * @param mixed $container_guid Container GUID
- *
- * @return array A list of entities.
- * @deprecated 1.8
- */
-function get_entities_from_private_setting_multi(array $name, $type = "", $subtype = "",
-$owner_guid = 0, $order_by = "", $limit = 10, $offset = 0, $count = false,
-$site_guid = 0, $container_guid = null) {
-
- elgg_deprecated_notice('get_entities_from_private_setting_multi() was deprecated by elgg_get_entities_from_private_setting()!', 1.8);
-
- $options = array();
-
- $pairs = array();
- foreach ($name as $setting_name => $setting_value) {
- $pairs[] = array('name' => $setting_name, 'value' => $setting_value);
- }
- $options['private_setting_name_value_pairs'] = $pairs;
-
- // set container_guid to owner_guid to emulate old functionality
- if ($owner_guid != "") {
- if (is_null($container_guid)) {
- $container_guid = $owner_guid;
- }
- }
-
- if ($type) {
- $options['types'] = $type;
- }
-
- if ($subtype) {
- $options['subtypes'] = $subtype;
- }
-
- if ($owner_guid) {
- if (is_array($owner_guid)) {
- $options['owner_guids'] = $owner_guid;
- } else {
- $options['owner_guid'] = $owner_guid;
- }
- }
-
- if ($container_guid) {
- if (is_array($container_guid)) {
- $options['container_guids'] = $container_guid;
- } else {
- $options['container_guid'] = $container_guid;
- }
- }
-
- $options['limit'] = $limit;
-
- if ($offset) {
- $options['offset'] = $offset;
- }
-
- if ($order_by) {
- $options['order_by'];
- }
-
- if ($site_guid) {
- $options['site_guid'];
- }
-
- if ($count) {
- $options['count'] = $count;
- }
-
- return elgg_get_entities_from_private_settings($options);
-}
-
-/**
* Returns entities based upon private settings. Also accepts all
* options available to elgg_get_entities(). Supports
* the singular option shortcut.
@@ -196,8 +33,12 @@ $site_guid = 0, $container_guid = null) {
* private_setting_name_value_pairs_operator => NULL|STR The operator to use for combining
* (name = value) OPERATOR (name = value); default AND
*
+ * private_setting_name_prefix => STR A prefix to apply to all private settings. Used to
+ * namespace plugin user settings or by plugins to namespace
+ * their own settings.
*
- * @return array
+ *
+ * @return mixed int If count, int. If not count, array. false on errors.
* @since 1.8.0
*/
function elgg_get_entities_from_private_settings(array $options = array()) {
@@ -206,6 +47,7 @@ function elgg_get_entities_from_private_settings(array $options = array()) {
'private_setting_values' => ELGG_ENTITIES_ANY_VALUE,
'private_setting_name_value_pairs' => ELGG_ENTITIES_ANY_VALUE,
'private_setting_name_value_pairs_operator' => 'AND',
+ 'private_setting_name_prefix' => '',
);
$options = array_merge($defaults, $options);
@@ -217,7 +59,7 @@ function elgg_get_entities_from_private_settings(array $options = array()) {
$clauses = elgg_get_entity_private_settings_where_sql('e', $options['private_setting_names'],
$options['private_setting_values'], $options['private_setting_name_value_pairs'],
- $options['private_setting_name_value_pairs_operator']);
+ $options['private_setting_name_value_pairs_operator'], $options['private_setting_name_prefix']);
if ($clauses) {
// merge wheres to pass to get_entities()
@@ -228,7 +70,7 @@ function elgg_get_entities_from_private_settings(array $options = array()) {
}
$options['wheres'] = array_merge($options['wheres'], $clauses['wheres']);
-
+
// merge joins to pass to get_entities()
if (isset($options['joins']) && !is_array($options['joins'])) {
$options['joins'] = array($options['joins']);
@@ -250,11 +92,13 @@ function elgg_get_entities_from_private_settings(array $options = array()) {
* @param array|null $values Array of values
* @param array|null $pairs Array of names / values / operands
* @param string $pair_operator Operator for joining pairs where clauses
+ * @param string $name_prefix A string to prefix all names with
* @return array
* @since 1.8.0
+ * @access private
*/
function elgg_get_entity_private_settings_where_sql($table, $names = NULL, $values = NULL,
-$pairs = NULL, $pair_operator = 'AND') {
+$pairs = NULL, $pair_operator = 'AND', $name_prefix = '') {
global $CONFIG;
@@ -279,6 +123,7 @@ $pairs = NULL, $pair_operator = 'AND') {
$sanitised_names = array();
foreach ($names as $name) {
+ $name = $name_prefix . $name;
$sanitised_names[] = '\'' . sanitise_string($name) . '\'';
}
@@ -322,7 +167,7 @@ $pairs = NULL, $pair_operator = 'AND') {
if (is_array($pairs)) {
// join counter for incremental joins in pairs
$i = 1;
-
+
// check if this is an array of pairs or just a single pair.
if (isset($pairs['name']) || isset($pairs['value'])) {
$pairs = array($pairs);
@@ -383,7 +228,7 @@ $pairs = NULL, $pair_operator = 'AND') {
$value = "'" . sanitise_string($pair['value']) . "'";
}
- $name = sanitise_string($pair['name']);
+ $name = sanitise_string($name_prefix . $pair['name']);
// @todo The multiple joins are only needed when the operator is AND
$return['joins'][] = "JOIN {$CONFIG->dbprefix}private_settings ps{$i}
@@ -395,7 +240,7 @@ $pairs = NULL, $pair_operator = 'AND') {
$i++;
}
- $where = implode (" $pair_operator ", $pair_wheres);
+ $where = implode(" $pair_operator ", $pair_wheres);
if ($where) {
$wheres[] = "($where)";
}
@@ -405,7 +250,7 @@ $pairs = NULL, $pair_operator = 'AND') {
if ($where) {
$return['wheres'][] = "($where)";
}
-
+
return $return;
}
@@ -433,6 +278,11 @@ function get_private_setting($entity_guid, $name) {
$entity_guid = (int) $entity_guid;
$name = sanitise_string($name);
+ $entity = get_entity($entity_guid);
+ if (!$entity instanceof ElggEntity) {
+ return false;
+ }
+
$query = "SELECT value from {$CONFIG->dbprefix}private_settings
where name = '{$name}' and entity_guid = {$entity_guid}";
$setting = get_data_row($query);
@@ -459,6 +309,10 @@ function get_all_private_settings($entity_guid) {
global $CONFIG;
$entity_guid = (int) $entity_guid;
+ $entity = get_entity($entity_guid);
+ if (!$entity instanceof ElggEntity) {
+ return false;
+ }
$query = "SELECT * from {$CONFIG->dbprefix}private_settings where entity_guid = {$entity_guid}";
$result = get_data($query);
@@ -481,7 +335,7 @@ function get_all_private_settings($entity_guid) {
* @param string $name The name of the setting
* @param string $value The value of the setting
*
- * @return mixed The setting ID, or false on failure
+ * @return bool
* @see get_private_setting()
* @see get_all_private_settings()
* @see remove_private_setting()
@@ -497,12 +351,10 @@ function set_private_setting($entity_guid, $name, $value) {
$result = insert_data("INSERT into {$CONFIG->dbprefix}private_settings
(entity_guid, name, value) VALUES
- ($entity_guid, '{$name}', '{$value}')
+ ($entity_guid, '$name', '$value')
ON DUPLICATE KEY UPDATE value='$value'");
- if ($result === 0) {
- return true;
- }
- return $result;
+
+ return $result !== false;
}
/**
@@ -511,7 +363,7 @@ function set_private_setting($entity_guid, $name, $value) {
* @param int $entity_guid The Entity GUID
* @param string $name The name of the setting
*
- * @return true|false depending on success
+ * @return bool
* @see get_private_setting()
* @see get_all_private_settings()
* @see set_private_setting()
@@ -522,11 +374,17 @@ function remove_private_setting($entity_guid, $name) {
global $CONFIG;
$entity_guid = (int) $entity_guid;
+
+ $entity = get_entity($entity_guid);
+ if (!$entity instanceof ElggEntity) {
+ return false;
+ }
+
$name = sanitise_string($name);
return delete_data("DELETE from {$CONFIG->dbprefix}private_settings
- where name = '{$name}'
- and entity_guid = {$entity_guid}");
+ WHERE name = '{$name}'
+ AND entity_guid = {$entity_guid}");
}
/**
@@ -534,7 +392,7 @@ function remove_private_setting($entity_guid, $name) {
*
* @param int $entity_guid The Entity GUID
*
- * @return true|false depending on success
+ * @return bool
* @see get_private_setting()
* @see get_all_private_settings()
* @see set_private_setting()
@@ -545,6 +403,12 @@ function remove_all_private_settings($entity_guid) {
global $CONFIG;
$entity_guid = (int) $entity_guid;
+
+ $entity = get_entity($entity_guid);
+ if (!$entity instanceof ElggEntity) {
+ return false;
+ }
+
return delete_data("DELETE from {$CONFIG->dbprefix}private_settings
- where entity_guid = {$entity_guid}");
+ WHERE entity_guid = {$entity_guid}");
}