aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/annotations.php194
1 files changed, 194 insertions, 0 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php
new file mode 100644
index 000000000..a0d56b56b
--- /dev/null
+++ b/engine/lib/annotations.php
@@ -0,0 +1,194 @@
+<?php
+ /**
+ * Elgg annotations
+ * Functions to manage object annotations.
+ *
+ * @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/
+ */
+
+
+ /**
+ * @class ElggAnnotation
+ * @author Marcus Povey <marcus@dushka.co.uk>
+ */
+ class ElggAnnotation
+ {
+ /**
+ * This contains the site's main properties (id, etc)
+ * @var array
+ */
+ private $attributes;
+
+ /**
+ * Construct a new site object, optionally from a given id value.
+ *
+ * @param int $id
+ */
+ function __construct($id = null)
+ {
+ if (!empty($id)) {
+ if ($annotation = get_annotation($id)) {
+ $objarray = (array) $annotation;
+ foreach($objarray as $key => $value) {
+ $this->attributes[$key] = $value;
+ }
+ }
+ }
+ }
+
+ function __get($name) {
+ if (isset($attributes[$name])) {
+ return $attributes[$name];
+ }
+ return null;
+ }
+
+ function __set($name, $value) {
+ $this->attributes[$name] = $value;
+ return true;
+ }
+
+ /**
+ * Return the owner of this annotation.
+ *
+ * @return mixed
+ */
+ function getOwner() { return get_user($this->owner_id); }
+
+ function save()
+ {
+ if (isset($this->id))
+ return update_annotation($this->id, $this->name, $this->value, $this->value_type, $this->owner_id, $this->access_id);
+ else
+ {
+ $this->id = create_annotation($this->object_id, $this->object_type, $this->name, $this->value, $this->value_type, $this->owner_id, $this->access_id);
+ return $this->id;
+ }
+ }
+
+ /**
+ * Delete a given site.
+ */
+ function delete() { return delete_annotation($this->id); }
+
+ }
+
+ /**
+ * Get a specific annotation.
+ *
+ * @param int $annotation_id
+ */
+ function get_annotation($annotation_id)
+ {
+ global $CONFIG;
+
+ $annotation_id = (int) $annotation_id;
+ $access = get_access_list();
+
+ return get_data_row("select o.* from {$CONFIG->dbprefix}annotations where id=$annotation_id and (o.access_id in {$access} or (o.access_id = 0 and o.owner_id = {$_SESSION['id']}))");
+ }
+
+ /**
+ * Get a list of annotations for a given object/user/annotation type.
+ *
+ * @param int $object_id
+ * @param string $annotation_type
+ * @param int $owner_id
+ * @param string $order_by
+ * @param int $limit
+ * @param int $offset
+ */
+ function get_annotations($object_id = 0, $annotation_type = "", $owner_id = 0, $order_by = "created desc", $limit = 10, $offset = 0)
+ {
+ $object_id = (int)$object_id;
+ $annotation_type = mysql_real_escape_string(trim($annotation_type));
+ $name = mysql_real_escape_string(trim($name));
+ $value = mysql_real_escape_string(trim($value));
+ $owner_id = (int)$owner_id;
+ $limit = (int)$limit;
+ $offset = (int)$offset;
+
+ $access = get_access_list();
+
+
+ // construct query.
+
+
+
+
+ return get_data($query);
+ }
+
+ /**
+ * Create a new annotation.
+ *
+ * @param int $object_id
+ * @param string $object_type
+ * @param string $name
+ * @param string $value
+ * @param string $value_type
+ * @param int $owner_id
+ * @param int $access_id
+ */
+ function create_annotation($object_id, $object_type, $name, $value, $value_type, $owner_id, $access_id = 0)
+ {
+ global $CONFIG;
+
+ $object_id = (int)$object_id;
+ $object_type = mysql_real_escape_string(trim($object_type));
+ $name = mysql_real_escape_string(trim($name));
+ $value = mysql_real_escape_string(trim($value));
+ $value_type = mysql_real_escape_string(trim($value_type));
+ $owner_id = (int)$owner_id;
+ $access_id = (int)$access_id;
+
+ 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, $access_id)");
+ }
+
+ /**
+ * Update an annotation.
+ *
+ * @param int $annotation_id
+ * @param string $name
+ * @param string $value
+ * @param string $value_type
+ * @param int $owner_id
+ * @param int $access_id
+ */
+ function update_annotation($annotation_id, $name, $value, $value_type, $owner_id, $access_id)
+ {
+ global $CONFIG;
+
+ $annotation_id = (int)$annotation_id;
+ $name = mysql_real_escape_string(trim($name));
+ $value = mysql_real_escape_string(trim($value));
+ $value_type = mysql_real_escape_string(trim($value_type));
+ $owner_id = (int)$owner_id;
+ $access_id = (int)$access_id;
+
+ $access = get_access_list();
+
+ return update_data("UPDATE {$CONFIG->dbprefix}annotations set value='$value', value_type='$value_type', access_id=$access_id where id=$annotation_id and name='$name' and (access_id in {$access} or (access_id = 0 and owner_id = {$_SESSION['id']}))");
+ }
+
+ /**
+ * Delete a given annotation.
+ *
+ * @param $id int The id
+ */
+ function delete_annotation($id)
+ {
+ global $CONFIG;
+
+ $id = (int)$id;
+
+ $access = get_access_list();
+
+ return delete_data("DELETE from {$CONFIG->dbprefix}annotations where id=$id and (access_id in {$access} or (access_id = 0 and owner_id = {$_SESSION['id']}))");
+ }
+?> \ No newline at end of file