/**
 * Delete a pending group membership request.
 *
 * @param int $membership_id ID of the membership object.
 * @param int $user_id       Optional. ID of the user who requested membership.
 *                           Provide this value along with $group_id to override
 *                           $membership_id.
 * @param int $group_id      Optional. ID of the group to which membership is being
 *                           requested. Provide this value along with $user_id to
 *                           override $membership_id.
 *
 * @return bool True on success, false on failure.
 */
function groups_delete_membership_request($membership_id, $user_id = 0, $group_id = 0)
{
    if (!empty($user_id) && !empty($group_id)) {
        $membership = new BP_Groups_Member($user_id, $group_id);
    } else {
        $membership = new BP_Groups_Member(false, false, $membership_id);
    }
    if (!BP_Groups_Member::delete_request($membership->user_id, $membership->group_id)) {
        return false;
    }
    return $membership;
}
function groups_accept_invite($user_id, $group_id)
{
    global $bp;
    if (groups_is_user_member($user_id, $group_id)) {
        return false;
    }
    $member = new BP_Groups_Member($user_id, $group_id);
    $member->accept_invite();
    if (!$member->save()) {
        return false;
    }
    // Remove request to join
    if ($member->check_for_membership_request($user_id, $group_id)) {
        $member->delete_request($user_id, $group_id);
    }
    // Modify group meta
    groups_update_groupmeta($group_id, 'total_member_count', (int) groups_get_groupmeta($group_id, 'total_member_count') + 1);
    groups_update_groupmeta($group_id, 'last_activity', bp_core_current_time());
    bp_core_delete_notifications_by_item_id($user_id, $group_id, $bp->groups->id, 'group_invite');
    do_action('groups_accept_invite', $user_id, $group_id);
    return true;
}
/**
 * Process the acceptance of a group invitation.
 *
 * Returns true if a user is already a member of the group.
 *
 * @param int $user_id
 * @param int $group_id
 * @return bool True when the user is a member of the group, otherwise false
 */
function groups_accept_invite($user_id, $group_id)
{
    global $bp;
    // If the user is already a member (because BP at one point allowed two invitations to
    // slip through), delete all existing invitations/requests and return true
    if (groups_is_user_member($user_id, $group_id)) {
        if (groups_check_user_has_invite($user_id, $group_id)) {
            groups_delete_invite($user_id, $group_id);
        }
        if (groups_check_for_membership_request($user_id, $group_id)) {
            groups_delete_membership_request($user_id, $group_id);
        }
        return true;
    }
    $member = new BP_Groups_Member($user_id, $group_id);
    $member->accept_invite();
    if (!$member->save()) {
        return false;
    }
    // Remove request to join
    if ($member->check_for_membership_request($user_id, $group_id)) {
        $member->delete_request($user_id, $group_id);
    }
    // Modify group meta
    groups_update_groupmeta($group_id, 'last_activity', bp_core_current_time());
    bp_core_delete_notifications_by_item_id($user_id, $group_id, $bp->groups->id, 'group_invite');
    do_action('groups_accept_invite', $user_id, $group_id);
    return true;
}
Example #4
0
function groups_accept_invite( $user_id, $group_id ) {
	global $bp;

	if ( groups_is_user_member( $user_id, $group_id ) )
		return false;

	$member = new BP_Groups_Member( $user_id, $group_id );
	$member->accept_invite();

	if ( !$member->save() )
		return false;

	/* Remove request to join */
	if ( $member->check_for_membership_request( $user_id, $group_id ) )
		$member->delete_request( $user_id, $group_id );

	/* Modify group meta */
	groups_update_groupmeta( $group_id, 'total_member_count', (int) groups_get_groupmeta( $group_id, 'total_member_count') + 1 );
	groups_update_groupmeta( $group_id, 'last_activity', gmdate( "Y-m-d H:i:s" ) );

	bp_core_delete_notifications_for_user_by_item_id( $user_id, $group_id, $bp->groups->id, 'group_invite' );

	do_action( 'groups_accept_invite', $user_id, $group_id );
	return true;
}