Changeset 8949
- Timestamp:
- 08/20/2014 06:32:30 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-groups/bp-groups-classes.php
r8934 r8949 892 892 893 893 if ( ! empty( $matches_a[1] ) && ! empty( $matches_b[1] ) ) { 894 $sql_array['join'] = implode( ',', $matches_a[1] ). ', '; 895 896 $sql_array['where'] = ''; 897 898 $meta_query_where_clauses = explode( "\n", $meta_sql['where'] ); 899 900 // Trim empties 901 $meta_query_where_clauses = array_values( array_filter( $meta_query_where_clauses ) ); 902 903 foreach( $matches_b[1] as $key => $group_id_clause ) { 904 $sql_array['where'] .= ' ' . preg_replace( '/^(AND\s+[\(\s]+)/', '$1' . $group_id_clause . ' AND ', ltrim( $meta_query_where_clauses[ $key ] ) ); 905 } 906 894 $sql_array['join'] = implode( ',', $matches_a[1] ) . ', '; 895 $sql_array['where'] = $meta_sql['where'] . ' AND ' . implode ( ' AND ', $matches_b[1] ); 907 896 } 908 897 } -
trunk/tests/phpunit/testcases/groups/class-bp-groups-group.php
r8829 r8949 137 137 /** 138 138 * @group get 139 * @group group_meta_query 140 */ 141 public function test_get_with_meta_query_multiple_clauses_relation_or() { 142 $now = time(); 143 $g1 = $this->factory->group->create( array( 144 'last_activity' => date( 'Y-m-d H:i:s', $now - 60*60 ), 145 ) ); 146 $g2 = $this->factory->group->create( array( 147 'last_activity' => date( 'Y-m-d H:i:s', $now - 60*60*2 ), 148 ) ); 149 $g3 = $this->factory->group->create( array( 150 'last_activity' => date( 'Y-m-d H:i:s', $now - 60*60*3 ), 151 ) ); 152 groups_update_groupmeta( $g1, 'foo', 'bar' ); 153 groups_update_groupmeta( $g2, 'foo', 'baz' ); 154 groups_update_groupmeta( $g3, 'bar', 'barry' ); 155 156 $groups = BP_Groups_Group::get( array( 157 'meta_query' => array( 158 'relation' => 'OR', 159 array( 160 'key' => 'foo', 161 'value' => 'bar', 162 ), 163 array( 164 'key' => 'bar', 165 'value' => 'barry', 166 ), 167 ), 168 ) ); 169 $ids = wp_list_pluck( $groups['groups'], 'id' ); 170 $this->assertEquals( array( $g1, $g3 ), $ids ); 171 $this->assertEquals( 2, $groups['total'] ); 172 } 173 174 /** 175 * @group get 176 * @group group_meta_query 177 * @ticket BP5824 178 */ 179 public function test_get_with_meta_query_multiple_keys_with_same_value() { 180 $now = time(); 181 $g1 = $this->factory->group->create( array( 182 'last_activity' => date( 'Y-m-d H:i:s', $now - 60*60 ), 183 ) ); 184 $g2 = $this->factory->group->create( array( 185 'last_activity' => date( 'Y-m-d H:i:s', $now - 60*60*2 ), 186 ) ); 187 groups_update_groupmeta( $g1, 'foo', 'bar' ); 188 groups_update_groupmeta( $g2, 'foo2', 'bar' ); 189 190 $groups = BP_Groups_Group::get( array( 191 'meta_query' => array( 192 array( 193 'key' => 'foo', 194 'value' => 'bar', 195 'compare' => '=', 196 ), 197 ), 198 ) ); 199 $ids = wp_list_pluck( $groups['groups'], 'id' ); 200 $this->assertEquals( $ids, array( $g1 ) ); 201 $this->assertEquals( 1, $groups['total'] ); 202 } 203 204 /** 205 * @group get 139 206 */ 140 207 public function test_get_normal_search() {
Note: See TracChangeset
for help on using the changeset viewer.