aboutsummaryrefslogtreecommitdiff
path: root/engine/lib/annotations.php
diff options
context:
space:
mode:
authoricewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-04-01 17:15:12 +0000
committericewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-04-01 17:15:12 +0000
commit4e08e618308d7dedfd3983d015950c81e7403e29 (patch)
treef4ae2137a46b23be2c712ee582c251ec3bd0f1f5 /engine/lib/annotations.php
parent205dcbf14c473fe64f89e5696cfbafea8fa5ab15 (diff)
downloadelgg-4e08e618308d7dedfd3983d015950c81e7403e29.tar.gz
elgg-4e08e618308d7dedfd3983d015950c81e7403e29.tar.bz2
Marcus Povey <marcus@dushka.co.uk>
* Moved common functionality of metadata and annotations into superclass. git-svn-id: https://code.elgg.org/elgg/trunk@323 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/lib/annotations.php')
-rw-r--r--engine/lib/annotations.php88
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