aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/annotations.php7
-rw-r--r--engine/lib/elgglib.php3
-rw-r--r--engine/tests/regression/trac_bugs.php66
3 files changed, 75 insertions, 1 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php
index 666b83309..b18475d57 100644
--- a/engine/lib/annotations.php
+++ b/engine/lib/annotations.php
@@ -1146,6 +1146,7 @@ function delete_annotation($id) {
* Clear all the annotations for a given entity, assuming you have access to that metadata.
*
* @param int $guid
+ * @return number of annotations deleted or false if an error
*/
function clear_annotations($guid, $name = "") {
global $CONFIG;
@@ -1154,6 +1155,10 @@ function clear_annotations($guid, $name = "") {
if (!empty($name)) {
$name = get_metastring_id($name);
+ if ($name === false) {
+ // name doesn't exist so 0 rows were deleted
+ return 0;
+ }
}
$entity_guid = (int) $guid;
@@ -1173,6 +1178,8 @@ function clear_annotations($guid, $name = "") {
return delete_data($query);
}
}
+
+ return FALSE;
}
/**
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php
index 9b5b34d86..c6a03cc4f 100644
--- a/engine/lib/elgglib.php
+++ b/engine/lib/elgglib.php
@@ -2757,6 +2757,7 @@ function elgg_boot() {
function elgg_api_test($hook, $type, $value, $params) {
global $CONFIG;
$value[] = $CONFIG->path . 'engine/tests/api/entity_getter_functions.php';
+ $value[] = $CONFIG->path . 'engine/tests/regression/trac_bugs.php';
return $value;
}
@@ -2774,4 +2775,4 @@ define('ELGG_ENTITIES_NO_VALUE', 0);
register_elgg_event_handler('init', 'system', 'elgg_init');
register_elgg_event_handler('boot', 'system', 'elgg_boot', 1000);
-register_plugin_hook('unit_test', 'system', 'elgg_api_test'); \ No newline at end of file
+register_plugin_hook('unit_test', 'system', 'elgg_api_test');
diff --git a/engine/tests/regression/trac_bugs.php b/engine/tests/regression/trac_bugs.php
new file mode 100644
index 000000000..01900b849
--- /dev/null
+++ b/engine/tests/regression/trac_bugs.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Elgg Regression Tests -- Trac Bugfixes
+ * Any bugfixes from Trac that require testing belong here.
+ *
+ * @package Elgg
+ * @subpackage Test
+ * @author Curverider Ltd
+ * @link http://elgg.org/
+ */
+class ElggCoreRegressionBugsTest extends ElggCoreUnitTest {
+
+ /**
+ * Called before each test object.
+ */
+ public function __construct() {
+ $this->ia = elgg_set_ignore_access(TRUE);
+ parent::__construct();
+
+ // all __construct() code should come after here
+ }
+
+ /**
+ * Called before each test method.
+ */
+ public function setUp() {
+
+ }
+
+ /**
+ * Called after each test method.
+ */
+ public function tearDown() {
+ // do not allow SimpleTest to interpret Elgg notices as exceptions
+ $this->swallowErrors();
+ }
+
+ /**
+ * Called after each test object.
+ */
+ public function __destruct() {
+ elgg_set_ignore_access($this->ia);
+ // all __destruct() code should go above here
+ parent::__destruct();
+ }
+
+ /**
+ * #1558
+ */
+ public function testElggObjectClearAnnotations() {
+ $this->entity = new ElggObject();
+ $guid = $this->entity->save();
+
+ $this->entity->annotate('test', 'hello', ACCESS_PUBLIC);
+
+ $this->entity->clearAnnotations('does not exist');
+
+ $num = $this->entity->countAnnotations('test');
+
+ //$this->assertIdentical($num, 1);
+ $this->assertEqual($num, 1);
+
+ // clean up
+ $this->entity->delete();
+ }
+}