/** * Accept 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_accept_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); } $membership->accept_request(); if (!$membership->save()) { return false; } // Check if the user has an outstanding invite, if so delete it. if (groups_check_user_has_invite($membership->user_id, $membership->group_id)) { groups_delete_invite($membership->user_id, $membership->group_id); } /** * Fires after a group membership request has been accepted. * * @since 1.0.0 * * @param int $user_id ID of the user who accepted membership. * @param int $group_id ID of the group that was accepted membership to. * @param bool $value If membership was accepted. */ do_action('groups_membership_accepted', $membership->user_id, $membership->group_id, true); return true; }
/** * @group groups_delete_invite * @group group_invitations * @group group_membership */ public function test_bp_groups_delete_invite_leave_requests_intact() { $u1 = $this->factory->user->create(); $g = $this->factory->group->create(array('status' => 'private')); // Membership requests should be left intact. self::create_group_membership_request($u1, $g); groups_delete_invite($u1, $g); $u1_has_request = groups_check_for_membership_request($u1, $g); $this->assertTrue(is_numeric($u1_has_request) && $u1_has_request > 0); }
function groups_accept_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); } $membership->accept_request(); if (!$membership->save()) { return false; } // Check if the user has an outstanding invite, if so delete it. if (groups_check_user_has_invite($membership->user_id, $membership->group_id)) { groups_delete_invite($membership->user_id, $membership->group_id); } // Record this in activity streams $group = groups_get_group(array('group_id' => $membership->group_id)); groups_record_activity(array('action' => apply_filters_ref_array('groups_activity_membership_accepted_action', array(sprintf(__('%1$s joined the group %2$s', 'buddypress'), bp_core_get_userlink($membership->user_id), '<a href="' . bp_get_group_permalink($group) . '">' . esc_attr($group->name) . '</a>'), $membership->user_id, &$group)), 'type' => 'joined_group', 'item_id' => $membership->group_id, 'user_id' => $membership->user_id)); // Send a notification to the user. groups_notification_membership_request_completed($membership->user_id, $membership->group_id, true); do_action('groups_membership_accepted', $membership->user_id, $membership->group_id); return true; }
/** * Accept 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_accept_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); } $membership->accept_request(); if (!$membership->save()) { return false; } // Check if the user has an outstanding invite, if so delete it. if (groups_check_user_has_invite($membership->user_id, $membership->group_id)) { groups_delete_invite($membership->user_id, $membership->group_id); } do_action('groups_membership_accepted', $membership->user_id, $membership->group_id, true); return true; }
function groups_accept_membership_request( $membership_id, $user_id = false, $group_id = false ) { global $bp; if ( $user_id && $group_id ) $membership = new BP_Groups_Member( $user_id, $group_id ); else $membership = new BP_Groups_Member( false, false, $membership_id ); $membership->accept_request(); if ( !$membership->save() ) return false; /* Check if the user has an outstanding invite, if so delete it. */ if ( groups_check_user_has_invite( $membership->user_id, $membership->group_id ) ) groups_delete_invite( $membership->user_id, $membership->group_id ); /* Modify group member count */ groups_update_groupmeta( $membership->group_id, 'total_member_count', (int) groups_get_groupmeta( $membership->group_id, 'total_member_count') + 1 ); /* Record this in activity streams */ $group = new BP_Groups_Group( $membership->group_id ); groups_record_activity( array( 'action' => apply_filters( 'groups_activity_membership_accepted_action', sprintf( __( '%s joined the group %s', 'buddypress'), bp_core_get_userlink( $membership->user_id ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( $group->name ) . '</a>' ), $membership->user_id, &$group ), 'type' => 'joined_group', 'item_id' => $membership->group_id, 'user_id' => $membership->user_id ) ); /* Send a notification to the user. */ require_once ( BP_PLUGIN_DIR . '/bp-groups/bp-groups-notifications.php' ); groups_notification_membership_request_completed( $membership->user_id, $membership->group_id, true ); do_action( 'groups_membership_accepted', $membership->user_id, $membership->group_id ); return true; }
function groups_join_group($group_id, $user_id = false) { global $bp; /* Check the nonce */ if (!check_admin_referer('groups_join_group')) { return false; } if (!$user_id) { $user_id = $bp->loggedin_user->id; } if (groups_check_user_has_invite($user_id, $group_id)) { groups_delete_invite($user_id, $group_id); } $new_member = new BP_Groups_Member(); $new_member->group_id = $group_id; $new_member->user_id = $user_id; $new_member->inviter_id = 0; $new_member->is_admin = 0; $new_member->user_title = ''; $new_member->date_modified = time(); $new_member->is_confirmed = 1; if (!$new_member->save()) { return false; } /* Record this in activity streams */ groups_record_activity(array('item_id' => $new_member->group_id, 'component_name' => $bp->groups->slug, 'component_action' => 'joined_group', 'is_private' => 0)); /* 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', time()); do_action('groups_join_group', $group_id, $bp->loggedin_user->id); return true; }
/** * @group cache */ public function test_cache_should_be_invalidated_on_group_invite_delete() { groups_invite_user(array('user_id' => self::$user, 'group_id' => self::$groups[2], 'inviter_id' => self::$admin_user)); // Populate cache. $g1 = bp_get_user_groups(self::$user, array('is_confirmed' => null)); groups_delete_invite(self::$user, self::$groups[2]); $expected = array(self::$groups[0], self::$groups[1]); $found = bp_get_user_groups(self::$user, array('is_confirmed' => null)); $this->assertEqualSets($expected, array_keys($found)); }
function bp_group_management_join_group($group_id, $user_id = false) { global $bp; if (!$user_id) { $user_id = $bp->loggedin_user->id; } /* Check if the user has an outstanding invite, is so delete it. */ if (groups_check_user_has_invite($user_id, $group_id)) { groups_delete_invite($user_id, $group_id); } /* Check if the user has an outstanding request, is so delete it. */ if (groups_check_for_membership_request($user_id, $group_id)) { groups_delete_membership_request($user_id, $group_id); } /* User is already a member, just return true */ if (groups_is_user_member($user_id, $group_id)) { return true; } if (!$bp->groups->current_group) { $bp->groups->current_group = new BP_Groups_Group($group_id); } $new_member = new BP_Groups_Member(); $new_member->group_id = $group_id; $new_member->user_id = $user_id; $new_member->inviter_id = 0; $new_member->is_admin = 0; $new_member->user_title = ''; $new_member->date_modified = gmdate("Y-m-d H:i:s"); $new_member->is_confirmed = 1; if (!$new_member->save()) { return false; } /* Record this in activity streams */ groups_record_activity(array('user_id' => $user_id, 'action' => apply_filters('groups_activity_joined_group', sprintf(__('%s joined the group %s', 'bp-group-management'), bp_core_get_userlink($user_id), '<a href="' . bp_get_group_permalink($bp->groups->current_group) . '">' . esc_html($bp->groups->current_group->name) . '</a>')), 'type' => 'joined_group', 'item_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")); do_action('groups_join_group', $group_id, $user_id); return true; }