Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
01/02/2015 04:32:04 AM (12 years ago)
Author:
r-a-y
Message:

Add $user_id parameter to bp_groups_user_can_send_invites().

This allows developers to check if a specific user can send group invites
rather than just do checks against the logged-in user.

This commit also:

  • Updates the PHPDoc for the function and the filter hook.
  • Adds unit tests.

Props dcavins.

Fixes #6031.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/testcases/groups/class-bp-groups-member.php

    r9139 r9293  
    128128                $this->assertEquals( array( $u2 ), $ids );
    129129        }
     130
     131        /**
     132         * @group bp_groups_user_can_send_invites
     133         */
     134        public function test_bp_groups_user_can_send_invites() {
     135                $u_members = $this->factory->user->create();
     136                $u_mods = $this->factory->user->create();
     137                $u_admins = $this->factory->user->create();
     138                $u_siteadmin = $this->factory->user->create();
     139                $user_siteadmin = new WP_User( $u_siteadmin );
     140                $user_siteadmin->add_role( 'administrator' );
     141
     142                $g = $this->factory->group->create();
     143
     144                $now = time();
     145                $old_current_user = get_current_user_id();
     146
     147                // Create member-level user
     148                $this->add_user_to_group( $u_members, $g, array(
     149                        'date_modified' => date( 'Y-m-d H:i:s', $now - 60 ),
     150                ) );
     151                // Create mod-level user
     152                $this->add_user_to_group( $u_mods, $g, array(
     153                        'date_modified' => date( 'Y-m-d H:i:s', $now - 60 ),
     154                ) );
     155                $m_mod = new BP_Groups_Member( $u_mods, $g );
     156                $m_mod->promote( 'mod' );
     157                // Create admin-level user
     158                $this->add_user_to_group( $u_admins, $g, array(
     159                        'date_modified' => date( 'Y-m-d H:i:s', $now - 60 ),
     160                ) );
     161                $m_admin = new BP_Groups_Member( $u_admins, $g );
     162                $m_admin->promote( 'admin' );
     163
     164                // Test with no status
     165                // In bp_group_get_invite_status(), no status falls back to "members"
     166                $this->assertTrue( '' == groups_get_groupmeta( $g, 'invite_status' ) );
     167                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_members ) );
     168                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_mods ) );
     169                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_admins ) );
     170                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_siteadmin ) );
     171
     172                // Test with members status
     173                groups_update_groupmeta( $g, 'invite_status', 'members' );
     174                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_members ) );
     175                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_mods ) );
     176                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_admins ) );
     177                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_siteadmin ) );
     178                // Falling back to current user
     179                $this->set_current_user( $u_members );
     180                $this->assertTrue( bp_groups_user_can_send_invites( $g, null ) );
     181
     182                // Test with mod status
     183                groups_update_groupmeta( $g, 'invite_status', 'mods' );
     184                $this->assertFalse( bp_groups_user_can_send_invites( $g, $u_members ) );
     185                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_mods ) );
     186                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_admins ) );
     187                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_siteadmin ) );
     188                // Falling back to current user
     189                $this->set_current_user( $u_members );
     190                $this->assertFalse( bp_groups_user_can_send_invites( $g, null ) );
     191                $this->set_current_user( $u_mods );
     192                $this->assertTrue( bp_groups_user_can_send_invites( $g, null ) );
     193
     194                // Test with admin status
     195                groups_update_groupmeta( $g, 'invite_status', 'admins' );
     196                $this->assertFalse( bp_groups_user_can_send_invites( $g, $u_members ) );
     197                $this->assertFalse( bp_groups_user_can_send_invites( $g, $u_mods ) );
     198                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_admins ) );
     199                $this->assertTrue( bp_groups_user_can_send_invites( $g, $u_siteadmin ) );
     200                // Falling back to current user
     201                $this->set_current_user( $u_mods );
     202                $this->assertFalse( bp_groups_user_can_send_invites( $g, null ) );
     203                $this->set_current_user( $u_admins );
     204                $this->assertTrue( bp_groups_user_can_send_invites( $g, null ) );
     205
     206                // Bad or null parameters
     207                $this->assertFalse( bp_groups_user_can_send_invites( 59876454257, $u_members ) );
     208                $this->assertFalse( bp_groups_user_can_send_invites( $g, 958647515 ) );
     209                // Not in group context
     210                $this->assertFalse( bp_groups_user_can_send_invites( null, $u_members ) );
     211                // In group context
     212                $g_obj = groups_get_group( array( 'group_id' => $g ) );
     213                $this->go_to( bp_get_group_permalink( $g_obj ) );
     214                groups_update_groupmeta( $g, 'invite_status', 'members' );
     215
     216                $this->assertTrue( bp_groups_user_can_send_invites( null, $u_members ) );
     217
     218                $this->set_current_user( $old_current_user );
     219        }
    130220}
    131221
Note: See TracChangeset for help on using the changeset viewer.