BP_Groups_Member::save()
Save the membership data to the database.
Description
Return
(bool) True on success, false on failure.
Source
File: bp-groups/classes/class-bp-groups-member.php
public function save() {
global $wpdb;
$bp = buddypress();
$this->user_id = apply_filters( 'groups_member_user_id_before_save', $this->user_id, $this->id );
$this->group_id = apply_filters( 'groups_member_group_id_before_save', $this->group_id, $this->id );
$this->inviter_id = apply_filters( 'groups_member_inviter_id_before_save', $this->inviter_id, $this->id );
$this->is_admin = apply_filters( 'groups_member_is_admin_before_save', $this->is_admin, $this->id );
$this->is_mod = apply_filters( 'groups_member_is_mod_before_save', $this->is_mod, $this->id );
$this->is_banned = apply_filters( 'groups_member_is_banned_before_save', $this->is_banned, $this->id );
$this->user_title = apply_filters( 'groups_member_user_title_before_save', $this->user_title, $this->id );
$this->date_modified = apply_filters( 'groups_member_date_modified_before_save', $this->date_modified, $this->id );
$this->is_confirmed = apply_filters( 'groups_member_is_confirmed_before_save', $this->is_confirmed, $this->id );
$this->comments = apply_filters( 'groups_member_comments_before_save', $this->comments, $this->id );
$this->invite_sent = apply_filters( 'groups_member_invite_sent_before_save', $this->invite_sent, $this->id );
/**
* Fires before the current group membership item gets saved.
*
* Please use this hook to filter the properties above. Each part will be passed in.
*
* @since BuddyPress 1.0.0
*
* @param BP_Groups_Member $this Current instance of the group membership item being saved. Passed by reference.
*/
do_action_ref_array( 'groups_member_before_save', array( &$this ) );
// The following properties are required; bail if not met.
if ( empty( $this->user_id ) || empty( $this->group_id ) ) {
return false;
}
if ( !empty( $this->id ) ) {
$sql = $wpdb->prepare( "UPDATE {$bp->groups->table_name_members} SET inviter_id = %d, is_admin = %d, is_mod = %d, is_banned = %d, user_title = %s, date_modified = %s, is_confirmed = %d, comments = %s, invite_sent = %d WHERE id = %d", $this->inviter_id, $this->is_admin, $this->is_mod, $this->is_banned, $this->user_title, $this->date_modified, $this->is_confirmed, $this->comments, $this->invite_sent, $this->id );
} else {
// Ensure that user is not already a member of the group before inserting.
if ( $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 1 LIMIT 1", $this->user_id, $this->group_id ) ) ) {
return false;
}
$sql = $wpdb->prepare( "INSERT INTO {$bp->groups->table_name_members} ( user_id, group_id, inviter_id, is_admin, is_mod, is_banned, user_title, date_modified, is_confirmed, comments, invite_sent ) VALUES ( %d, %d, %d, %d, %d, %d, %s, %s, %d, %s, %d )", $this->user_id, $this->group_id, $this->inviter_id, $this->is_admin, $this->is_mod, $this->is_banned, $this->user_title, $this->date_modified, $this->is_confirmed, $this->comments, $this->invite_sent );
}
if ( !$wpdb->query( $sql ) )
return false;
$this->id = $wpdb->insert_id;
// Update the user's group count.
self::refresh_total_group_count_for_user( $this->user_id );
// Update the group's member count.
self::refresh_total_member_count_for_group( $this->group_id );
/**
* Fires after the current group membership item has been saved.
*
* Please use this hook to filter the properties above. Each part will be passed in.
*
* @since BuddyPress 1.0.0
*
* @param BP_Groups_Member $this Current instance of the group membership item has been saved. Passed by reference.
*/
do_action_ref_array( 'groups_member_after_save', array( &$this ) );
return true;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.6.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.