aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/annotations.php10
-rw-r--r--engine/tests/objects/entities.php10
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());