diff options
author | nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-06-02 20:26:50 +0000 |
---|---|---|
committer | nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-06-02 20:26:50 +0000 |
commit | 81decf8b30a6814f7e0514fdacbadb1368fe306d (patch) | |
tree | 1f7e0475e5f8fd932865c1c373c9fb27e47158d6 | |
parent | 357f49695c27ac0161307b96436a8fb05147305d (diff) | |
download | elgg-81decf8b30a6814f7e0514fdacbadb1368fe306d.tar.gz elgg-81decf8b30a6814f7e0514fdacbadb1368fe306d.tar.bz2 |
Requesting annotations from a non-existent subtype will now return nothing instead of everything.
This functionality is required to preserve context.
git-svn-id: http://code.elgg.org/elgg/trunk@6331 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r-- | engine/lib/annotations.php | 10 | ||||
-rw-r--r-- | engine/tests/objects/entities.php | 10 |
2 files changed, 19 insertions, 1 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index 31c83fb8c..a956a95cc 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -297,8 +297,16 @@ $value = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "asc", $time } else { $entity_guid = (int)$entity_guid; } + $entity_type = sanitise_string($entity_type); - $entity_subtype = get_subtype_id($entity_type, $entity_subtype); + + if ($entity_subtype) { + if (!$entity_subtype = get_subtype_id($entity_type, $entity_subtype)) { + // requesting a non-existing subtype: return false + return FALSE; + } + } + if ($name) { $name = get_metastring_id($name); diff --git a/engine/tests/objects/entities.php b/engine/tests/objects/entities.php index 1504c2f93..eb6eee2a3 100644 --- a/engine/tests/objects/entities.php +++ b/engine/tests/objects/entities.php @@ -109,16 +109,26 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { $this->assertTrue(array_key_exists('non_existent', $this->entity->expose_annotations())); // save entity and check for annotation + $this->entity->subtype = 'testing'; $this->save_entity(); $this->assertFalse(array_key_exists('non_existent', $this->entity->expose_annotations())); $annotations = $this->entity->getAnnotations('non_existent'); $this->assertIsA($annotations[0], 'ElggAnnotation'); $this->assertIdentical($annotations[0]->name, 'non_existent'); $this->assertEqual($this->entity->countAnnotations('non_existent'), 1); + + $this->assertIdentical($annotations, get_annotations($this->entity->getGUID())); + $this->assertIdentical($annotations, get_annotations($this->entity->getGUID(), 'site')); + $this->assertIdentical($annotations, get_annotations($this->entity->getGUID(), 'site', 'testing')); + $this->assertIdentical(FALSE, get_annotations($this->entity->getGUID(), 'site', 'fail')); // clear annotation $this->assertTrue($this->entity->clearAnnotations()); $this->assertEqual($this->entity->countAnnotations('non_existent'), 0); + + $this->assertIdentical(FALSE, get_annotations($this->entity->getGUID())); + $this->assertIdentical(FALSE, get_annotations($this->entity->getGUID(), 'site')); + $this->assertIdentical(FALSE, get_annotations($this->entity->getGUID(), 'site', 'testing')); // clean up $this->assertTrue($this->entity->delete()); |