Example #1
0
 /**
  * @group invite_anyone_group_invite_access_test
  *
  * Using this as a proxy for testing every possible combination
  */
 public function test_group_access_test_friends()
 {
     $settings = bp_get_option('invite_anyone');
     bp_update_option('invite_anyone', array('group_invites_can_admin' => 'friends', 'group_invites_can_group_admin' => 'friends', 'group_invites_can_group_mod' => 'friends', 'group_invites_can_group_member' => 'friends'));
     unset($GLOBALS['iaoptions']);
     $g = $this->factory->group->create();
     $u1 = $this->factory->user->create(array('role' => 'administrator'));
     $this->add_user_to_group($u1, $g);
     $u2 = $this->factory->user->create();
     $this->add_user_to_group($u2, $g);
     $u3 = $this->factory->user->create();
     $this->add_user_to_group($u3, $g);
     $m3 = new BP_Groups_Member($u3, $g);
     $m3->promote('mod');
     $u4 = $this->factory->user->create();
     $this->add_user_to_group($u4, $g);
     $m4 = new BP_Groups_Member($u4, $g);
     $m4->promote('admin');
     $user = new WP_User($u1);
     $this->assertSame('friends', invite_anyone_group_invite_access_test($g, $u1));
     $this->assertSame('friends', invite_anyone_group_invite_access_test($g, $u2));
     $this->assertSame('friends', invite_anyone_group_invite_access_test($g, $u3));
     $this->assertSame('friends', invite_anyone_group_invite_access_test($g, $u4));
     bp_update_option('invite_anyone', $settings);
 }
function bp_group_management_promote_member($user_id, $group_id, $status)
{
    global $bp;
    $member = new BP_Groups_Member($user_id, $group_id);
    do_action('groups_promote_member', $group_id, $user_id, $status);
    return $member->promote($status);
}
/**
 * Promote a member to a new status within a group.
 *
 * @param int    $user_id  ID of the user.
 * @param int    $group_id ID of the group.
 * @param string $status   The new status. 'mod' or 'admin'.
 *
 * @return bool True on success, false on failure.
 */
function groups_promote_member($user_id, $group_id, $status)
{
    if (!bp_is_item_admin()) {
        return false;
    }
    $member = new BP_Groups_Member($user_id, $group_id);
    // Don't use this action. It's deprecated as of BuddyPress 1.6.
    do_action('groups_premote_member', $group_id, $user_id, $status);
    /**
     * Fires before the promotion of a user to a new status.
     *
     * @since 1.6.0
     *
     * @param int    $group_id ID of the group being promoted in.
     * @param int    $user_id  ID of the user being promoted.
     * @param string $status   New status being promoted to.
     */
    do_action('groups_promote_member', $group_id, $user_id, $status);
    return $member->promote($status);
}
 /**
  * @group map_meta_cap
  * @group dissociate_from_group
  */
 public function test_user_can_dissociate_from_group_within_group_mod()
 {
     $g = $this->factory->group->create();
     $old_current_user = get_current_user_id();
     $u1 = $this->factory->user->create();
     $gm1 = new BP_Groups_Member($u1, $g);
     $gm1->promote('admin');
     $this->set_current_user($u1);
     $this->go_to(bp_get_group_permalink(groups_get_group(array('group_id' => $g))));
     // $this->go_to( bp_docs_get_doc_link( $post_id ) );
     $this->assertTrue(current_user_can('bp_docs_dissociate_from_group'));
 }
function groups_promote_member($user_id, $group_id, $status)
{
    if (!bp_is_item_admin()) {
        return false;
    }
    $member = new BP_Groups_Member($user_id, $group_id);
    // Don't use this action. It's deprecated as of BuddyPress 1.6.
    do_action('groups_premote_member', $group_id, $user_id, $status);
    // Use this action instead.
    do_action('groups_promote_member', $group_id, $user_id, $status);
    return $member->promote($status);
}
 public function test_with_group_role_member_mod_admin_banned()
 {
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     $u3 = $this->factory->user->create();
     $u4 = $this->factory->user->create();
     $g = $this->factory->group->create(array('creator_id' => $u1));
     $time = time();
     $this->add_user_to_group($u1, $g, array('date_modified' => gmdate('Y-m-d H:i:s', $time - 100)));
     $this->add_user_to_group($u2, $g, array('date_modified' => gmdate('Y-m-d H:i:s', $time - 200)));
     $this->add_user_to_group($u3, $g, array('date_modified' => gmdate('Y-m-d H:i:s', $time - 300)));
     $this->add_user_to_group($u4, $g, array('date_modified' => gmdate('Y-m-d H:i:s', $time - 300)));
     $m1 = new BP_Groups_Member($u1, $g);
     $m1->promote('admin');
     $m2 = new BP_Groups_Member($u2, $g);
     $m2->promote('mod');
     $m3 = new BP_Groups_Member($u3, $g);
     $m3->ban();
     $query_members = new BP_Group_Member_Query(array('group_id' => $g, 'group_role' => array('member', 'mod', 'admin', 'banned')));
     $ids = wp_parse_id_list(array_keys($query_members->results));
     $this->assertEquals(array($u1, $u2, $u3, $u4), $ids);
 }
 /**
  * @group groups_leave_group
  * @group group_membership
  */
 public function test_groups_leave_group_multiple_admins_allow_leave()
 {
     $old_current_user = get_current_user_id();
     $u1 = $this->factory->user->create();
     $g = $this->factory->group->create(array('creator_id' => $u1));
     $u2 = $this->factory->user->create();
     $this->add_user_to_group($u2, $g);
     $m2 = new BP_Groups_Member($u2, $g);
     $m2->promote('admin');
     $before = groups_get_total_member_count($g);
     $this->set_current_user($u1);
     groups_leave_group($g, $u1);
     $after = groups_get_total_member_count($g);
     $this->assertEquals($before - 1, $after);
     $this->set_current_user($old_current_user);
 }
function groups_promote_member($user_id, $group_id, $status)
{
    global $bp;
    if (!$bp->is_item_admin) {
        return false;
    }
    $member = new BP_Groups_Member($user_id, $group_id);
    do_action('groups_premote_member', $group_id, $user_id, $status);
    return $member->promote($status);
}
Example #9
0
function groups_promote_member($user_id, $group_id)
{
    global $bp;
    /* Check the nonce first. */
    if (!check_admin_referer('groups_promote_member')) {
        return false;
    }
    if (!$bp->is_item_admin) {
        return false;
    }
    $member = new BP_Groups_Member($user_id, $group_id);
    do_action('groups_premote_member', $user_id, $group_id);
    return $member->promote();
}
 /**
  * @group user_can_see_nav_item
  */
 public function test_user_can_see_nav_item_explicit_for_group_admin()
 {
     $g = $this->factory->group->create(array('status' => 'public'));
     $g_obj = groups_get_group(array('group_id' => $g));
     $u = $this->factory->user->create();
     $old_current_user = get_current_user_id();
     $this->set_current_user($u);
     $this->add_user_to_group($u, $g);
     $gm = new BP_Groups_Member($u, $g);
     $gm->promote('admin');
     $this->go_to(bp_get_group_permalink($g_obj));
     $e1 = new BPTest_Group_Extension_ShowTab_Anyone();
     $e1->_register();
     $this->assertTrue($e1->user_can_see_nav_item());
     $e2 = new BPTest_Group_Extension_ShowTab_Loggedin();
     $e2->_register();
     $this->assertTrue($e2->user_can_see_nav_item());
     $e3 = new BPTest_Group_Extension_ShowTab_Member();
     $e3->_register();
     $this->assertTrue($e3->user_can_see_nav_item());
     $e4 = new BPTest_Group_Extension_ShowTab_AdminMod();
     $e4->_register();
     $this->assertTrue($e4->user_can_see_nav_item());
     $e5 = new BPTest_Group_Extension_ShowTab_Admin();
     $e5->_register();
     $this->assertTrue($e5->user_can_see_nav_item());
     $e6 = new BPTest_Group_Extension_ShowTab_Noone();
     $e6->_register();
     $this->assertFalse($e6->user_can_see_nav_item());
     $this->set_current_user($old_current_user);
 }
Example #11
0
 /**
  * @group bp_group_has_members
  */
 public function test_bp_group_has_members_with_exclude_admins_mods_0()
 {
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     $u3 = $this->factory->user->create();
     $g = $this->factory->group->create(array('creator_id' => $u1));
     $now = time();
     $this->add_user_to_group($u2, $g, array('date_modified' => date('Y-m-d H:i:s', $now - 60)));
     $this->add_user_to_group($u3, $g, array('date_modified' => date('Y-m-d H:i:s', $now - 60 * 60)));
     $m1 = new BP_Groups_Member($u1, $g);
     $m1->promote('admin');
     $m2 = new BP_Groups_Member($u2, $g);
     $m2->promote('mod');
     global $members_template;
     bp_group_has_members(array('group_id' => $g, 'exclude_admins_mods' => 0));
     $ids = wp_parse_id_list(wp_list_pluck($members_template->members, 'user_id'));
     $this->assertEquals(array($u1, $u2, $u3), $ids);
 }
Example #12
0
 function settings_screen_save($group_id = NULL)
 {
     global $bp;
     // Make sure we have the group ID
     $group_id = $_POST['group_id'];
     if (!$group_id) {
         $group_id = $bp->groups->current_group->id;
     }
     // Set error redirect based on save method
     $redirect_url = $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $this->slug;
     // Email cannot be empty
     if (empty($_POST['editable-guild-leader'])) {
         bp_core_add_message('You must enter a valid email address.', 'error');
         bp_core_redirect($redirect_url);
         exit;
     }
     // Make sure the nonce checks
     check_admin_referer('groups_create_save_' . $this->slug);
     // Get the leader by email
     $leader_email = sanitize_email($_POST['editable-guild-leader']);
     $leader = get_user_by('email', $leader_email);
     // If we don't recognize the email, bail out
     if (empty($leader)) {
         bp_core_add_message('This email address is not recognized.', 'error');
         bp_core_redirect($redirect_url);
         exit;
     }
     // Otherwise, set the group leader, and remove the creator
     $leader_id = $leader->ID;
     if ($leader_id != get_current_user_id()) {
         groups_accept_invite($leader_id, $group_id);
         $member = new BP_Groups_Member($leader_id, $group_id);
         $member->promote('admin');
         groups_leave_group($group_id, $creator_id);
     }
 }
Example #13
0
 /**
  * @group user_can_associate_doc_with_group
  * @expectedDeprecated user_can_associate_doc_with_group
  */
 public function test_associate_with_group_admin()
 {
     $g = $this->factory->group->create();
     $d = $this->factory->doc->create(array('group' => $g));
     groups_update_groupmeta($g, 'bp-docs', array('can-create' => 'admin'));
     $u1 = $this->create_user();
     $this->add_user_to_group($u1, $g);
     $this->assertFalse(BP_Docs_Groups_Integration::user_can_associate_doc_with_group($u1, $g));
     $u2 = $this->create_user();
     $this->add_user_to_group($u2, $g);
     $gm2 = new BP_Groups_Member($u2, $g);
     $gm2->promote('mod');
     $this->assertFalse(BP_Docs_Groups_Integration::user_can_associate_doc_with_group($u2, $g));
     $u3 = $this->create_user();
     $this->add_user_to_group($u3, $g);
     $gm3 = new BP_Groups_Member($u3, $g);
     $gm3->promote('admin');
     $this->assertTrue(BP_Docs_Groups_Integration::user_can_associate_doc_with_group($u3, $g));
 }