diff options
Diffstat (limited to 'engine/lib')
-rw-r--r-- | engine/lib/annotations.php | 10 | ||||
-rw-r--r-- | engine/lib/metadata.php | 14 | ||||
-rw-r--r-- | engine/lib/metastrings.php | 34 |
3 files changed, 56 insertions, 2 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index 3a950568f..3ff8c0e69 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -240,6 +240,11 @@ $time = time(); + // Add the metastring + $value = add_metastring($value); + if (!$value) return false; + + // If ok then add it return insert_data("INSERT into {$CONFIG->dbprefix}annotations (object_id, object_type, name, value, value_type, owner_id, created, access_id) VALUES ($object_id,'$object_type','$name','$value','$value_type', $owner_id, $time, $access_id)"); } @@ -269,6 +274,11 @@ $access = get_access_list(); + // Add the metastring + $value = add_metastring($value); + if (!$value) return false; + + // If ok then add it return update_data("UPDATE {$CONFIG->dbprefix}annotations set value='$value', value_type='$value_type', access_id=$access_id, owner_id=$owner_id where id=$annotation_id and name='$name' and (access_id in {$access} or (access_id = 0 and owner_id = {$_SESSION['id']}))"); } diff --git a/engine/lib/metadata.php b/engine/lib/metadata.php index 56bb83990..105001535 100644 --- a/engine/lib/metadata.php +++ b/engine/lib/metadata.php @@ -136,8 +136,7 @@ return 'tag'; } - - + /** * Create a new metadata object, or update an existing one. * @@ -177,6 +176,11 @@ } else { + // Add the metastring + $value = add_metastring($value); + if (!$value) return false; + + // If ok then add it $id = insert_data("INSERT into {$CONFIG->dbprefix}metadata (object_id, object_type, name, value, value_type, owner_id, created, access_id) VALUES ($object_id,'$object_type','$name','$value','$value_type', $owner_id, $time, $access_id)"); } @@ -209,6 +213,12 @@ $access = get_access_list(); + + // Add the metastring + $value = add_metastring($value); + if (!$value) return false; + + // If ok then add it return update_data("UPDATE {$CONFIG->dbprefix}metadata set value='$value', value_type='$value_type', access_id=$access_id, owner_id=$owner_id where id=$id and name='$name' and (access_id in {$access} or (access_id = 0 and owner_id = {$_SESSION['id']}))"); } diff --git a/engine/lib/metastrings.php b/engine/lib/metastrings.php new file mode 100644 index 000000000..17c9a751b --- /dev/null +++ b/engine/lib/metastrings.php @@ -0,0 +1,34 @@ +<?php + /** + * Elgg metastrngs + * Functions to manage object metastrings. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey <marcus@dushka.co.uk> + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + + /** + * Add a metastring. + * It returns the id of the tag, whether by creating it or updating it. + * + * @param string $tag The value (whatever that is) to be stored + * @return mixed Integer tag or false. + */ + function add_metastring($tag) + { + global $CONFIG; + + $tag = sanitise_string($tag); + + $row = get_data_row("SELECT * from {$CONFIG->dbprefix}metastrings where tag='$tag' limit 1"); + if ($row) + return $row->id; + + return insert_data("INSERT into {$CONFIG->dbprefix}metastrings (tag) values ('$tag')"); + } +?>
\ No newline at end of file |