From e4f113ba40d597b602cc6cf5d8d88caee8ed727a Mon Sep 17 00:00:00 2001 From: icewing Date: Fri, 25 Apr 2008 14:53:46 +0000 Subject: Marcus Povey * Updated ODD handler, now uses views * Normal and ODD view for all data items... cute eh? :) git-svn-id: https://code.elgg.org/elgg/trunk@530 36083f99-b078-4883-b0ff-0f9b5a30f544 --- odd/handler.php | 95 ++++++++++++++++++++--------------- views/default/export/entity.php | 95 +++++++++++++++++++++++++++++++++++ views/default/export/metadata.php | 23 +++++++++ views/default/export/relationship.php | 25 +++++++++ views/odd/export/entity.php | 16 ++++++ views/odd/export/metadata.php | 21 ++++++++ views/odd/export/relationship.php | 20 ++++++++ views/odd/pageshells/pageshell.php | 16 ++++++ 8 files changed, 270 insertions(+), 41 deletions(-) create mode 100644 views/default/export/entity.php create mode 100644 views/default/export/metadata.php create mode 100644 views/default/export/relationship.php create mode 100644 views/odd/export/entity.php create mode 100644 views/odd/export/metadata.php create mode 100644 views/odd/export/relationship.php create mode 100644 views/odd/pageshells/pageshell.php diff --git a/odd/handler.php b/odd/handler.php index 187addb13..2c8643a73 100644 --- a/odd/handler.php +++ b/odd/handler.php @@ -21,75 +21,88 @@ $type = get_input("type"); // attr, metadata, annotation $id_or_name = get_input("idname"); // Either a number or the key name (if attribute) - $owner = page_owner(); // Obvious - + + + // Only export the GUID if ( ($guid!="") && ($type=="") && ($id_or_name=="") ) { - // Only export the GUID, easy. - $export = export($guid); - - header("Content-Type: text/xml"); - echo $export; + page_draw("GUID:$guid", elgg_view("export/entity", array("entity" => get_entity($guid), "uuid" => guid_to_uuid($guid)))); } + + // Export an individual attribute else if ( ($guid!="") && ($type!="") && ($id_or_name!="") ) { - // Outputting an individual attribute - - - $odd = ""; + // Get a uuid $entity = get_entity($guid); - $uuid = guid_to_uuid($entity->getGUID()); + $uuid = guid_to_uuid($entity->getGUID()) . "$type/$id_or_name/"; - if (!$entity) throw new InvalidParameterException("Could not find an entity matching query."); - switch ($type) { - case 'attr' : // TODO: Do this better - $odd = new ODDMetaData($uuid . "attr/$id_or_name/", $uuid, $id_or_name, $entity->get($id_or_name)); + case 'attr' : // TODO: Do this better? - This is a bit of a hack... + $v = $entity->get($id_or_name); + if (!$v) throw new InvalidParameterException("Sorry, '$id_or_name' does not exist for guid:$guid"); + + $m = new ElggMetadata(); + + $m->value = $v; + $m->name = $id_or_name; + $m->entity_guid = $guid; + $m->time_created = $entity->time_created; + $m->time_updated = $entity->time_updated; + $m->owner_guid = $entity->owner_guid; + $m->id = $id_or_name; + $m->type = "attr"; break; - - case 'metadata' : + case 'metadata' : $m = get_metadata($id_or_name); - if (!$m) - throw new InvalidParameterException("Could not find specified item of metadata"); - - if ($m->entity_guid!=$entity->guid) - throw new InvalidParameterException("Does not belong to entity."); - - $odd = new ODDMetaData($uuid . "metadata/$id_or_name/", $uuid, $id_or_name, $m->value); break; - case 'annotation' : $m = get_annotation($id_or_name); - if (!$m) - throw new InvalidParameterException("Could not find specified annotation"); - - if ($m->entity_guid!=$entity->guid) - throw new InvalidParameterException("Does not belong to entity."); - - $odd = new ODDMetaData($uuid . "annotation/$id_or_name/", $uuid, $id_or_name, $m->value); + break; + case 'relationship' : + $r = get_relationship($id_or_name); break; - + default : throw new InvalidParameterException("Sorry, I don't know how to export '$type'"); - } - // echo it - header("Content-Type: text/xml"); - echo "\n"; - echo new ODDHeader(); - echo "$odd"; - echo "\n"; + // Render metadata or relationship + if ((!$m) && (!$r)) + throw new InvalidParameterException("Could not find any data."); + + // Exporting metadata? + if ($m) + { + if ($m->entity_guid!=$entity->guid) + throw new InvalidParameterException("Does not belong to entity."); + + page_draw("$type:$id_or_name", elgg_view("export/metadata", array("metadata" => $m, "uuid" => $uuid))); + } + + // Exporting relationship + if ($r) + { + if ( + ($r->guid_one!=$entity->guid) || + ($r->guid_two!=$entity->guid) + ) + throw new InvalidParameterException("Does not belong to entity or refer to entity."); + + page_draw("$type:$id_or_name", elgg_view("export/relationship", array("relationship" => $r, "uuid" => $uuid))); + } } + + // Something went wrong else throw new InvalidParameterException("Missing parmeter, you need to provide a GUID "); + ?> \ No newline at end of file diff --git a/views/default/export/entity.php b/views/default/export/entity.php new file mode 100644 index 000000000..1ddde4b78 --- /dev/null +++ b/views/default/export/entity.php @@ -0,0 +1,95 @@ +guid); + $annotations = get_annotations($entity->guid); + $relationships = get_entity_relationships($entity->guid); + +?> +
+ $v) + { +?> +
+ + + + + +
+
+ +
+
+

Metadata

+ +
+ + + + + +
name; ?>value; ?>
+
+ + +
+ +
+

Annotations

+ +
+ + + + + +
name; ?>value; ?>
+
+ +
+ +
+

Relationships

+ +
+ + + + + +
relationship; ?>guid_two; ?>
+
+ +
\ No newline at end of file diff --git a/views/default/export/metadata.php b/views/default/export/metadata.php new file mode 100644 index 000000000..303c42e54 --- /dev/null +++ b/views/default/export/metadata.php @@ -0,0 +1,23 @@ + +
+ + + + + +
name; ?>value; ?>
+
\ No newline at end of file diff --git a/views/default/export/relationship.php b/views/default/export/relationship.php new file mode 100644 index 000000000..8819a356a --- /dev/null +++ b/views/default/export/relationship.php @@ -0,0 +1,25 @@ + +
+ + + + + + +
guid_one; ?>relationship; ?>guid_two; ?>
+
\ No newline at end of file diff --git a/views/odd/export/entity.php b/views/odd/export/entity.php new file mode 100644 index 000000000..d6efd413c --- /dev/null +++ b/views/odd/export/entity.php @@ -0,0 +1,16 @@ +guid); +?> \ No newline at end of file diff --git a/views/odd/export/metadata.php b/views/odd/export/metadata.php new file mode 100644 index 000000000..dff62086a --- /dev/null +++ b/views/odd/export/metadata.php @@ -0,0 +1,21 @@ +addElement($m->export()); + + echo $odd; +?> \ No newline at end of file diff --git a/views/odd/export/relationship.php b/views/odd/export/relationship.php new file mode 100644 index 000000000..85387a273 --- /dev/null +++ b/views/odd/export/relationship.php @@ -0,0 +1,20 @@ +addElement($r->export()); + + echo $odd; +?> \ No newline at end of file diff --git a/views/odd/pageshells/pageshell.php b/views/odd/pageshells/pageshell.php new file mode 100644 index 000000000..93b3e3185 --- /dev/null +++ b/views/odd/pageshells/pageshell.php @@ -0,0 +1,16 @@ + \ No newline at end of file -- cgit v1.2.3