diff options
Diffstat (limited to 'engine/lib/annotations.php')
-rw-r--r-- | engine/lib/annotations.php | 194 |
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 |