From 1739ce16cfa0933a09496f66b014885c281d114a Mon Sep 17 00:00:00 2001 From: icewing Date: Sat, 8 Mar 2008 11:31:34 +0000 Subject: Marcus Povey * Added get_objects_from_metadatas (untested) git-svn-id: https://code.elgg.org/elgg/trunk@117 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/metadata.php | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/engine/lib/metadata.php b/engine/lib/metadata.php index 7718907cf..6fd95f61c 100644 --- a/engine/lib/metadata.php +++ b/engine/lib/metadata.php @@ -284,6 +284,42 @@ return get_data($query, "row_to_elggmetadata"); } + + /** + * Similar to get_metadatas, but instead returns the objects associated with a given meta search. + * + * @param int $object_id + * @param string $object_type + * @param int $owner_id + * @param string $order_by + * @param int $limit + * @param int $offset + * @return mixed Array of objects or false. + */ + function get_objects_from_metadatas($object_id = 0, $object_type = "", $name = "", $value = "", $owner_id = 0, $order_by = "created desc", $limit = 10, $offset = 0) + { + $results = get_metadatas($object_id, $object_type, $name, $value, $owner_id, $order_by, $limit, $offset); + $objects = false; + + if ($results) + { + $objects = array(); + + foreach ($results as $r) + { + switch ($r->object_type) + { + case 'object' : $objects[] = new ElggObject($r->object_id); break; + case 'user' : $objects[] = new ElggUser($r->object_id); break; + case 'collection' : $objects[] = new ElggCollection($r->object_id); break; + case 'site' : $objects[] = new ElggSite($r->object_id); break; + default: default : throw new InstallationException("Type {$r->object_type} is not supported. This indicates an error in your installation, most likely caused by an incomplete upgrade."); + } + } + } + + return $objects; + } /** * Delete an item of metadata, where the current user has access. -- cgit v1.2.3