From 132e9c18ecd10ada97d4bb2b7dfaf63404f540bd Mon Sep 17 00:00:00 2001 From: icewing Date: Wed, 2 Apr 2008 10:40:53 +0000 Subject: Marcus Povey * get_metadata_byname better handles single/multiple return values git-svn-id: https://code.elgg.org/elgg/trunk@337 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/metadata.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'engine/lib/metadata.php') diff --git a/engine/lib/metadata.php b/engine/lib/metadata.php index 2f6087f8a..01a981945 100644 --- a/engine/lib/metadata.php +++ b/engine/lib/metadata.php @@ -255,6 +255,7 @@ * Return the metadata values that match your query. * * @param string $meta_name + * @return mixed either a value, an array of ElggMetadata or false. */ function get_metadata_byname($entity_guid, $meta_name) { @@ -264,8 +265,14 @@ $entity_guid = (int)$entity_guid; $access = get_access_list(); - echo "SELECT m.*, n.string as name, v.string as value from {$CONFIG->dbprefix}metadata m JOIN {$CONFIG->dbprefix}metastrings v on m.value_id = v.id JOIN {$CONFIG->dbprefix}metastrings n on m.name_id = n.id where m.entity_guid=$entity_guid and m.name_id='$meta_name' and (m.access_id in {$access} or (m.access_id = 0 and m.owner_guid = {$_SESSION['id']}))"; - return get_data("SELECT m.*, n.string as name, v.string as value from {$CONFIG->dbprefix}metadata m JOIN {$CONFIG->dbprefix}metastrings v on m.value_id = v.id JOIN {$CONFIG->dbprefix}metastrings n on m.name_id = n.id where m.entity_guid=$entity_guid and m.name_id='$meta_name' and (m.access_id in {$access} or (m.access_id = 0 and m.owner_guid = {$_SESSION['id']}))", "row_to_elggmetadata"); + $result = get_data("SELECT m.*, n.string as name, v.string as value from {$CONFIG->dbprefix}metadata m JOIN {$CONFIG->dbprefix}metastrings v on m.value_id = v.id JOIN {$CONFIG->dbprefix}metastrings n on m.name_id = n.id where m.entity_guid=$entity_guid and m.name_id='$meta_name' and (m.access_id in {$access} or (m.access_id = 0 and m.owner_guid = {$_SESSION['id']}))", "row_to_elggmetadata"); + if (!$result) + return false; + + if (count($result) == 1) + return $result[0]->value; + + return $result; } /** -- cgit v1.2.3