]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #4867 handling boolean false values as metadata pair value
authorcash <cash.costello@gmail.com>
Sat, 30 Mar 2013 16:04:19 +0000 (12:04 -0400)
committercash <cash.costello@gmail.com>
Sat, 30 Mar 2013 16:04:19 +0000 (12:04 -0400)
engine/lib/metadata.php
engine/tests/api/metadata.php

index a1ebfa5f1b66216d8a37a2498d1697fbd134f3e5..ad926a49a80032c0d8d69372586b9dd3462b2241 100644 (file)
@@ -619,6 +619,8 @@ $owner_guids = NULL) {
                        // if the operand is IN don't quote it because quoting should be done already.
                        if (is_numeric($pair['value'])) {
                                $value = sanitise_string($pair['value']);
+                       } else if (is_bool($pair['value'])) {
+                               $value = (int) $pair['value'];
                        } else if (is_array($pair['value'])) {
                                $values_array = array();
 
index 825290d80b7039b8edeb8a8866d32ab7e7231ab4..0862341c1b41bf98fedade334cf70cab78d6e033 100644 (file)
@@ -123,6 +123,20 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
                $e->delete();
        }
 
+       /**
+        * https://github.com/Elgg/Elgg/issues/4867
+        */
+       public function testElggGetEntityMetadataWhereSqlWithFalseValue() {
+               $pair = array('name' => 'test' , 'value' => false);
+               $result = elgg_get_entity_metadata_where_sql('e', 'metadata', null, null, $pair);
+               $where = preg_replace( '/\s+/', ' ', $result['wheres'][0]);
+               $this->assertTrue(strpos($where, "msn1.string = 'test' AND BINARY msv1.string = 0") > 0);
+
+               $result = elgg_get_entity_metadata_where_sql('e', 'metadata', array('test'), array(false));
+               $where = preg_replace( '/\s+/', ' ', $result['wheres'][0]);
+               $this->assertTrue(strpos($where, "msn.string IN ('test')) AND ( BINARY msv.string IN ('0')"));
+       }
+
        // Make sure metadata with multiple values is correctly deleted when re-written
        // by another user
        // http://trac.elgg.org/ticket/2776