diff options
Diffstat (limited to 'engine/lib/annotations.php')
-rw-r--r-- | engine/lib/annotations.php | 88 |
1 files changed, 18 insertions, 70 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index b0e01ad31..26664757a 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -11,18 +11,15 @@ * @link http://elgg.org/ */ + require_once('extender.php'); // include the superclass + /** * @class ElggAnnotation * An annotation is similar to metadata each entity can contain more than one of each annotation. * @author Marcus Povey <marcus@dushka.co.uk> */ - class ElggAnnotation implements Exportable + class ElggAnnotation extends ElggExtender { - /** - * This contains the site's main properties (id, etc) - * @var array - */ - private $attributes; /** * Construct a new site object, optionally from a given id value or db row. @@ -49,40 +46,11 @@ } function __get($name) { - if (isset($this->attributes[$name])) { - - // Sanitise outputs if required - if ($name=='value') - { - switch ($this->attributes['value_type']) - { - case 'integer' : return (int)$this->attributes['value']; - case 'tag' : - case 'text' : - case 'file' : return sanitise_string($this->attributes['value']); - - default : throw new InstallationException("Type {$this->attributes['value_type']} is not supported. This indicates an error in your installation, most likely caused by an incomplete upgrade."); - } - } - - return $this->attributes[$name]; - } - return null; + return $this->get($name); } 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_guid); + return $this->set($name, $value); } function save() @@ -104,14 +72,7 @@ { return delete_annotation($this->id); } - - public function export() - { - $tmp = new stdClass; - $tmp->attributes = $this->attributes; - $tmp->attributes['owner_uuid'] = guid_to_uuid($this->owner_guid); - return $tmp; - } + } /** @@ -452,42 +413,29 @@ /** * Handler called by trigger_plugin_hook on the "export" event. */ - function export_annotations_plugin_hook($hook, $entity_type, $returnvalue, $params) + function export_annotation_plugin_hook($hook, $entity_type, $returnvalue, $params) { - global $CONFIG; - // Sanity check values if ((!is_array($params)) && (!isset($params['guid']))) throw new InvalidParameterException("GUID has not been specified during export, this should never happen."); if (!is_array($returnvalue)) throw new InvalidParameterException("Entity serialisation function passed a non-array returnvalue parameter"); - - $guid = (int)$params['guid']; - $access = get_access_list(); - $where = array(); - - if ($guid != 0) - $where[] = "a.entity_guid=$guid"; - - $query = "SELECT a.*, n.string as name, v.string as value from {$CONFIG->dbprefix}annotations a JOIN {$CONFIG->dbprefix}entities e on a.entity_guid = e.guid JOIN {$CONFIG->dbprefix}metastrings v on a.value_id=v.id JOIN {$CONFIG->dbprefix}metastrings n on a.name_id = n.id where "; - foreach ($where as $w) - $query .= " $w and "; - $query .= " (a.access_id in {$access} or (a.access_id = 0 and a.owner_guid = {$_SESSION['id']}))"; // Add access controls - $query .= " order by a.time_created"; // Add order and limit - error_log($query); - $annotations = get_data($query, "row_to_elggannotation"); + $guid = (int)$params['guid']; + $name = $params['name']; - if ($annotations) + $result = get_annotations($guid); + + if ($result) { - foreach ($annotations as $a) - $returnvalue[] = $a; - } - + foreach ($result as $r) + $returnvalue[] = $r; + } + return $returnvalue; } - /** Register the hook, ensuring entities are serialised first */ - register_plugin_hook("export", "all", "export_annotations_plugin_hook", 2); + /** Register the hook */ + register_plugin_hook("export", "all", "export_annotation_plugin_hook", 2); ?>
\ No newline at end of file |