/** * @group groups_accept_all_pending_membership_requests * @group group_membership_requests * @group group_membership */ public function test_groups_accept_all_pending_membership_requests() { $u1 = $this->factory->user->create(); $u2 = $this->factory->user->create(); $u3 = $this->factory->user->create(); $g1 = $this->factory->group->create(); // Create membership request groups_send_membership_request($u1, $g1); groups_send_membership_request($u2, $g1); groups_send_membership_request($u3, $g1); groups_accept_all_pending_membership_requests($g1); // All users should now be group members. $members = new BP_Group_Member_Query(array('group_id' => $g1)); $this->assertEqualSets(array($u1, $u2, $u3), $members->user_ids); }
/** * Edit the base details for a group. * * These are the settings that appear on the Settings page of the group's Admin * section (privacy settings, "enable forum", invitation status). * * @param int $group_id ID of the group. * @param bool $enable_forum Whether to enable a forum for the group. * @param string $status Group status. 'public', 'private', 'hidden'. * @param string|bool $invite_status Optional. Who is allowed to send invitations * to the group. 'members', 'mods', or 'admins'. * * @return bool True on success, false on failure. */ function groups_edit_group_settings($group_id, $enable_forum, $status, $invite_status = false) { $group = groups_get_group(array('group_id' => $group_id)); $group->enable_forum = $enable_forum; /*** * Before we potentially switch the group status, if it has been changed to public * from private and there are outstanding membership requests, auto-accept those requests. */ if ('private' == $group->status && 'public' == $status) { groups_accept_all_pending_membership_requests($group->id); } // Now update the status $group->status = $status; if (!$group->save()) { return false; } // If forums have been enabled, and a forum does not yet exist, we need to create one. if ($group->enable_forum) { if (bp_is_active('forums') && !groups_get_groupmeta($group->id, 'forum_id')) { groups_new_group_forum($group->id, $group->name, $group->description); } } // Set the invite status if ($invite_status) { groups_update_groupmeta($group->id, 'invite_status', $invite_status); } groups_update_groupmeta($group->id, 'last_activity', bp_core_current_time()); /** * Fires after the update of a groups settings. * * @since 1.0.0 * * @param int $id ID of the group that was updated. */ do_action('groups_settings_updated', $group->id); return true; }
function groups_edit_group_settings( $group_id, $enable_forum, $status ) { global $bp; $group = new BP_Groups_Group( $group_id ); $group->enable_forum = $enable_forum; /*** * Before we potentially switch the group status, if it has been changed to public * from private and there are outstanding membership requests, auto-accept those requests. */ if ( 'private' == $group->status && 'public' == $status ) groups_accept_all_pending_membership_requests( $group->id ); /* Now update the status */ $group->status = $status; if ( !$group->save() ) return false; /* If forums have been enabled, and a forum does not yet exist, we need to create one. */ if ( $group->enable_forum ) { if ( function_exists( 'bp_forums_setup' ) && '' == groups_get_groupmeta( $group->id, 'forum_id' ) ) { groups_new_group_forum( $group->id, $group->name, $group->description ); } } groups_update_groupmeta( $group->id, 'last_activity', gmdate( "Y-m-d H:i:s" ) ); do_action( 'groups_settings_updated', $group->id ); return true; }