aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/annotations.php10
-rw-r--r--engine/lib/metadata.php14
-rw-r--r--engine/lib/metastrings.php34
-rw-r--r--engine/schema/mysql.sql2
4 files changed, 57 insertions, 3 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
diff --git a/engine/schema/mysql.sql b/engine/schema/mysql.sql
index af910dc6d..ce3778d71 100644
--- a/engine/schema/mysql.sql
+++ b/engine/schema/mysql.sql
@@ -230,7 +230,7 @@ CREATE TABLE `prefix_metadata` (
--
CREATE TABLE `prefix_metastrings` (
`id` int(11) NOT NULL auto_increment,
- `tag` text NOT NULL,
+ `tag` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`tag`)