From 6ca01c470d695c8ae309ea3475899c14cc34dd73 Mon Sep 17 00:00:00 2001 From: cash Date: Mon, 28 Nov 2011 20:41:59 -0500 Subject: forgot this unit test from a previous commit --- engine/tests/api/river.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 engine/tests/api/river.php (limited to 'engine/tests/api/river.php') diff --git a/engine/tests/api/river.php b/engine/tests/api/river.php new file mode 100644 index 000000000..55ddbfeec --- /dev/null +++ b/engine/tests/api/river.php @@ -0,0 +1,21 @@ +assertIdentical($result, "((rv.type = 'object') AND (rv.subtype = 'blog'))"); + + $types = array('object'); + $subtypes = array('blog', 'file'); + $result = elgg_get_river_type_subtype_where_sql('rv', $types, $subtypes, null); + $this->assertIdentical($result, "((rv.type = 'object') AND ((rv.subtype = 'blog') OR (rv.subtype = 'file')))"); + } +} -- cgit v1.2.3 From 6cc08f83225237d0cd57e0a5c0ebec0a8327aa30 Mon Sep 17 00:00:00 2001 From: cash Date: Mon, 28 Nov 2011 21:24:42 -0500 Subject: Fixes #3496 finished up this ticket by updating unit test and using more parantheses to make it clear how the OR/AND gets applied --- engine/lib/river.php | 5 +++-- engine/tests/api/river.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'engine/tests/api/river.php') diff --git a/engine/lib/river.php b/engine/lib/river.php index 02d52dea1..421813441 100644 --- a/engine/lib/river.php +++ b/engine/lib/river.php @@ -207,6 +207,8 @@ function elgg_delete_river(array $options = array()) { /** * Get river items * + * @note If using types and subtypes in a query, they are joined with an AND. + * * @param array $options * ids => INT|ARR River item id(s) * subject_guids => INT|ARR Subject guid(s) @@ -430,7 +432,6 @@ function elgg_river_get_access_sql() { * * @internal This is a simplified version of elgg_get_entity_type_subtype_where_sql() * which could be used for all queries once the subtypes have been denormalized. - * FYI: It allows types and subtypes to not be paired. * * @param string $table 'rv' * @param NULL|array $types Array of types or NULL if none. @@ -477,7 +478,7 @@ function elgg_get_river_type_subtype_where_sql($table, $types, $subtypes, $pairs } if (is_array($subtypes_wheres) && count($subtypes_wheres)) { - $subtypes_wheres = array(implode(' OR ', $subtypes_wheres)); + $subtypes_wheres = array('(' . implode(' OR ', $subtypes_wheres) . ')'); } $wheres = array(implode(' AND ', array_merge($types_wheres, $subtypes_wheres))); diff --git a/engine/tests/api/river.php b/engine/tests/api/river.php index 55ddbfeec..6931b9f41 100644 --- a/engine/tests/api/river.php +++ b/engine/tests/api/river.php @@ -11,7 +11,7 @@ class ElggCoreRiverAPITest extends ElggCoreUnitTest { $types = array('object'); $subtypes = array('blog'); $result = elgg_get_river_type_subtype_where_sql('rv', $types, $subtypes, null); - $this->assertIdentical($result, "((rv.type = 'object') AND (rv.subtype = 'blog'))"); + $this->assertIdentical($result, "((rv.type = 'object') AND ((rv.subtype = 'blog')))"); $types = array('object'); $subtypes = array('blog', 'file'); -- cgit v1.2.3