BP_Friends_Friendship::delete_all_for_user( int $user_id )
Delete all friendships and friend notifications related to a user.
Description
Parameters
- $user_id
-
(Required) ID of the user being expunged.
Source
File: bp-friends/classes/class-bp-friends-friendship.php
public static function delete_all_for_user( $user_id ) {
global $wpdb;
$bp = buddypress();
// Get all friendships, of any status, for the user.
$friendships = self::get_friendships( $user_id );
$friend_ids = array();
$friendship_ids = array();
foreach ( $friendships as $friendship ) {
$friendship_ids[] = $friendship->id;
if ( $friendship->is_confirmed ) {
$friend_ids[] = ( $friendship->friend_user_id == $user_id ) ? $friendship->initiator_user_id : $friendship->friend_user_id;
}
}
// Delete the friendships from the database.
if ( $friendship_ids ) {
$friendship_ids_sql = implode( ',', wp_parse_id_list( $friendship_ids ) );
$wpdb->query( "DELETE FROM {$bp->friends->table_name} WHERE id IN ({$friendship_ids_sql})" );
}
// Delete friend request notifications for members who have a
// notification from this user.
if ( bp_is_active( 'notifications' ) ) {
$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->notifications->table_name} WHERE component_name = 'friends' AND ( component_action = 'friendship_request' OR component_action = 'friendship_accepted' ) AND item_id = %d", $user_id ) );
}
// Clean up the friendships cache.
foreach ( $friendship_ids as $friendship_id ) {
wp_cache_delete( $friendship_id, 'bp_friends_friendships' );
}
// Loop through friend_ids to scrub user caches and update total count metas.
foreach ( (array) $friend_ids as $friend_id ) {
// Delete cached friendships.
wp_cache_delete( $friend_id, 'bp_friends_friendships_for_user' );
BP_Friends_Friendship::total_friend_count( $friend_id );
}
// Delete cached friendships.
wp_cache_delete( $user_id, 'bp_friends_friendships_for_user' );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.0.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.