Skip to:
Content

BuddyPress.org

Changeset 8430


Ignore:
Timestamp:
05/19/2014 07:28:36 PM (12 years ago)
Author:
boonebgorges
Message:

Correct query concatenation for exclude_groups param in BP_XProfile_Group::get()

The previous format was not working properly when passing multiple group ids.

Fixes #5649

Props imath

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-xprofile/bp-xprofile-classes.php

    r8347 r8430  
    151151                $where_sql = '';
    152152
    153                 if ( !empty( $profile_group_id ) )
     153                if ( ! empty( $profile_group_id ) ) {
    154154                        $where_sql = $wpdb->prepare( 'WHERE g.id = %d', $profile_group_id );
    155                 elseif ( $exclude_groups )
    156                         $where_sql = $wpdb->prepare( "WHERE g.id NOT IN ({$exclude_groups})");
     155                } else if ( $exclude_groups ) {
     156                        $exclude_groups = join( ',', wp_parse_id_list( $exclude_groups ) );
     157                        $where_sql = "WHERE g.id NOT IN ({$exclude_groups})";
     158                }
    157159
    158160                if ( ! empty( $hide_empty_groups ) ) {
  • trunk/tests/phpunit/testcases/xprofile/class-bp-xprofile-group.php

    r7915 r8430  
    6868                $this->assertSame( $expected, $found );
    6969        }
     70
     71        /**
     72         * @group get_xprofile_groups
     73         */
     74        public function test_get_xprofile_groups() {
     75                $g1 = $this->factory->xprofile_group->create();
     76                $g2 = $this->factory->xprofile_group->create();
     77                $g3 = $this->factory->xprofile_group->create();
     78
     79                $all = BP_XProfile_Group::get();
     80                $all_results = array_map( 'absint', wp_list_pluck( $all, 'id' ) );
     81
     82                $e1 = array( $g1, $g2 );
     83                $groups1 = BP_XProfile_Group::get( array(
     84                        'exclude_groups' => implode( ',', $e1 ),
     85                ) );
     86
     87                $r_groups1 = array_map( 'absint', wp_list_pluck( $groups1, 'id' ) );
     88                $found1 = array_diff( $all_results, $r_groups1 );
     89
     90                $this->assertSame( $e1, array_merge( $found1, array() ) );
     91
     92                $e2 = array( $g2, $g3 );
     93                $groups2 = BP_XProfile_Group::get( array(
     94                        'exclude_groups' => $e2,
     95                ) );
     96
     97                $r_groups2 = array_map( 'absint', wp_list_pluck( $groups2, 'id' ) );
     98                $found2 = array_diff( $all_results, $r_groups2 );
     99
     100                $this->assertSame( $e2, array_merge( $found2, array() ) );
     101        }
    70102}
Note: See TracChangeset for help on using the changeset viewer.