コード例 #1
0
 /**
  * @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);
 }
コード例 #2
0
/**
 * 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;
}
コード例 #3
0
ファイル: bp-groups.php プロジェクト: n-sane/zaroka
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;
}