diff options
Diffstat (limited to 'engine/lib/private_settings.php')
| -rw-r--r-- | engine/lib/private_settings.php | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/engine/lib/private_settings.php b/engine/lib/private_settings.php index 77641e122..7541f7b3b 100644 --- a/engine/lib/private_settings.php +++ b/engine/lib/private_settings.php @@ -33,8 +33,12 @@ * 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()) { @@ -43,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); @@ -54,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() @@ -87,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; @@ -116,6 +123,7 @@ $pairs = NULL, $pair_operator = 'AND') { $sanitised_names = array(); foreach ($names as $name) { + $name = $name_prefix . $name; $sanitised_names[] = '\'' . sanitise_string($name) . '\''; } @@ -220,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} @@ -232,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)"; } @@ -327,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() @@ -341,19 +349,12 @@ function set_private_setting($entity_guid, $name, $value) { $name = sanitise_string($name); $value = sanitise_string($value); - $entity = get_entity($entity_guid); - if (!$entity instanceof ElggEntity) { - return false; - } - $result = insert_data("INSERT into {$CONFIG->dbprefix}private_settings (entity_guid, name, value) VALUES ($entity_guid, '$name', '$value') ON DUPLICATE KEY UPDATE value='$value'"); - if ($result === 0) { - return true; - } - return $result; + + return $result !== false; } /** @@ -362,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() @@ -382,8 +383,8 @@ function remove_private_setting($entity_guid, $name) { $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}"); } /** @@ -391,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() @@ -409,5 +410,5 @@ function remove_all_private_settings($entity_guid) { } return delete_data("DELETE from {$CONFIG->dbprefix}private_settings - where entity_guid = {$entity_guid}"); + WHERE entity_guid = {$entity_guid}"); } |
