diff options
-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()); |