Skip to:
Content

BuddyPress.org

Changeset 7145


Ignore:
Timestamp:
06/04/2013 03:04:29 AM (13 years ago)
Author:
boonebgorges
Message:

Deprecate exclude_banned arg of bp_group_has_members() in favor of 'banned' role

This changeset introduces support for the 'banned' group_role filter in
BP_Group_Member_Query. This takes the place of the exclude_banned parameter.
Backward compatibility for exclude_banned is added in
groups_get_group_members().

See #4977

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups/bp-groups-classes.php

    r7144 r7145  
    988988                // these defaults).
    989989                $this->query_vars = wp_parse_args( $this->query_vars, array(
    990                         'group_id'       => 0,
    991                         'group_role'     => array( 'member' ),
    992                         'exclude_banned' => true,
     990                        'group_id'   => 0,
     991                        'group_role' => array( 'member' ),
    993992                ) );
    994993
     
    10511050                // which there is no dedicated is_ column), figure out a list
    10521051                // of columns *not* to match
     1052                $roles_sql = '';
    10531053                if ( in_array( 'member', $roles ) ) {
    10541054                        $role_columns = array();
     
    10561056                                $role_columns[] = 'is_' . $excluded_role . ' = 0';
    10571057                        }
    1058                         $roles_sql = '(' . implode( ' AND ', $role_columns ) . ')';
     1058
     1059                        if ( ! empty( $role_columns ) ) {
     1060                                $roles_sql = '(' . implode( ' AND ', $role_columns ) . ')';
     1061                        }
    10591062
    10601063                // When querying for a set of roles *not* containing 'member',
     
    10651068                                $role_columns[] = 'is_' . $role . ' = 1';
    10661069                        }
    1067                         $roles_sql = '(' . implode( ' OR ', $role_columns ) . ')';
     1070
     1071                        if ( ! empty( $role_columns ) ) {
     1072                                $roles_sql = '(' . implode( ' OR ', $role_columns ) . ')';
     1073                        }
    10681074                }
    10691075
    10701076                if ( ! empty( $roles_sql ) ) {
    10711077                        $sql['where'][] = $roles_sql;
    1072                 }
    1073 
    1074                 if ( ! empty( $this->query_vars['exclude_banned'] ) ) {
    1075                         $sql['where'][] = "is_banned = 0";
    10761078                }
    10771079
  • trunk/bp-groups/bp-groups-functions.php

    r7141 r7145  
    405405        } else {
    406406
    407                 // exclude_admins_mods is a legacy argument. Convert to group_role
     407                // exclude_admins_mods and exclude_banned are legacy arguments.
     408                // Convert to group_role
    408409                if ( empty( $group_role ) ) {
    409                         $group_role = $exclude_admins_mods ? array( 'member' ) : array( 'member', 'mod', 'admin' );
     410                        $group_role = array( 'member' );
     411
     412                        if ( ! $exclude_admins_mods ) {
     413                                $group_role[] = 'mod';
     414                                $group_role[] = 'admin';
     415                        }
     416
     417                        if ( ! $exclude_banned ) {
     418                                $group_role[] = 'banned';
     419                        }
    410420                }
    411421
     
    416426                        'page'           => $page,
    417427                        'group_role'     => $group_role,
    418                         'exclude_banned' => $exclude_banned,
    419428                        'exclude'        => $exclude,
    420429                        'type'           => 'last_modified',
  • trunk/tests/testcases/groups/class-bp-group-member-query.php

    r7143 r7145  
    223223        }
    224224
     225        public function test_with_group_role_member_mod_admin_banned() {
     226                $g = $this->factory->group->create();
     227                $u1 = $this->create_user();
     228                $u2 = $this->create_user();
     229                $u3 = $this->create_user();
     230                $u4 = $this->create_user();
     231
     232                $this->add_user_to_group( $u1, $g, array( 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ) ) );
     233                $this->add_user_to_group( $u2, $g, array( 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 200 ) ) );
     234                $this->add_user_to_group( $u3, $g, array( 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 300 ) ) );
     235                $this->add_user_to_group( $u4, $g, array( 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 300 ) ) );
     236
     237                $m1 = new BP_Groups_Member( $u1, $g );
     238                $m1->promote( 'admin' );
     239                $m2 = new BP_Groups_Member( $u2, $g );
     240                $m2->promote( 'mod' );
     241                $m3 = new BP_Groups_Member( $u3, $g );
     242                $m3->ban();
     243
     244                $query_members = new BP_Group_Member_Query( array(
     245                        'group_id' => $g,
     246                        'group_role' => array( 'member', 'mod', 'admin', 'banned' ),
     247                ) );
     248
     249                $ids = wp_parse_id_list( array_keys( $query_members->results ) );
     250                $this->assertEquals( array( $u1, $u2, $u3, $u4, ), $ids );
     251        }
     252
     253        public function test_with_group_role_banned() {
     254                $g = $this->factory->group->create();
     255                $u1 = $this->create_user();
     256                $u2 = $this->create_user();
     257
     258                $this->add_user_to_group( $u1, $g, array( 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ) ) );
     259                $this->add_user_to_group( $u2, $g, array( 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 200 ) ) );
     260
     261                $m1 = new BP_Groups_Member( $u1, $g );
     262                $m1->ban();
     263
     264                $query_members = new BP_Group_Member_Query( array(
     265                        'group_id' => $g,
     266                        'group_role' => array( 'banned' ),
     267                ) );
     268
     269                $ids = wp_parse_id_list( array_keys( $query_members->results ) );
     270                $this->assertEquals( array( $u1, ), $ids );
     271        }
     272
    225273        public function test_group_has_no_members() {
    226274                $g = $this->factory->group->create();
  • trunk/tests/testcases/groups/template.php

    r7141 r7145  
    22/**
    33 * @group groups
     4 * @group template
    45 */
    56class BP_Tests_Groups_Template extends BP_UnitTestCase {
Note: See TracChangeset for help on using the changeset viewer.