Skip to:
Content

BuddyPress.org

Ticket #5824: 5824.02.patch

File 5824.02.patch, 2.5 KB (added by imath, 7 years ago)
  • src/bp-groups/bp-groups-classes.php

    diff --git src/bp-groups/bp-groups-classes.php src/bp-groups/bp-groups-classes.php
    index 6924794..8ec0d90 100644
    class BP_Groups_Group { 
    893893                        if ( ! empty( $matches_a[1] ) && ! empty( $matches_b[1] ) ) {
    894894                                $sql_array['join']  = implode( ',', $matches_a[1] ). ', ';
    895895
    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 
     896                                $sql_array['where'] = $meta_sql['where'] . ' AND ' . implode( ' AND ', $matches_b[1] );
    907897                        }
    908898                }
    909899
    class BP_Groups_Member_Suggestions extends BP_Members_Suggestions { 
    44894479
    44904480                return apply_filters( 'bp_groups_member_suggestions_get_suggestions', $results, $this );
    44914481        }
    4492 }
    4493  No newline at end of file
     4482}
  • tests/phpunit/testcases/groups/class-bp-groups-group.php

    diff --git tests/phpunit/testcases/groups/class-bp-groups-group.php tests/phpunit/testcases/groups/class-bp-groups-group.php
    index 826fa83..2b77772 100644
    class BP_Tests_BP_Groups_Group_TestCases extends BP_UnitTestCase { 
    136136
    137137        /**
    138138         * @group get
     139         * @group group_meta_query
     140         * @ticket BP5824
     141         */
     142        public function test_get_with_meta_query_multiple_keys_with_same_value() {
     143                $now = time();
     144                $g1 = $this->factory->group->create( array(
     145                        'last_activity' => date( 'Y-m-d H:i:s', $now - 60*60 ),
     146                ) );
     147                $g2 = $this->factory->group->create( array(
     148                        'last_activity' => date( 'Y-m-d H:i:s', $now - 60*60*2 ),
     149                ) );
     150                groups_update_groupmeta( $g1, 'foo', 'bar' );
     151                groups_update_groupmeta( $g2, 'foo', 'b' );
     152                groups_update_groupmeta( $g2, 'foo2', 'bar' );
     153
     154                $groups = BP_Groups_Group::get( array(
     155                        'meta_query' => array(
     156                                'relation' => 'AND',
     157                                array(
     158                                        'key' => 'foo',
     159                                        'value' => 'bar',
     160                                        'compare' => '='
     161                                ),
     162                        ),
     163                ) );
     164                $ids = wp_list_pluck( $groups['groups'], 'id' );
     165                $this->assertEquals( $ids, array( $g1 ) );
     166                $this->assertEquals( 1, $groups['total'] );
     167        }
     168
     169        /**
     170         * @group get
    139171         */
    140172        public function test_get_normal_search() {
    141173                $g1 = $this->factory->group->create( array(