Changeset 12273 for trunk/src/bp-groups/classes/class-bp-groups-member.php
- Timestamp:
- 11/05/2018 08:20:05 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-groups/classes/class-bp-groups-member.php
r12162 r12273 1429 1429 * Delete all group membership information for the specified user. 1430 1430 * 1431 * In cases where the user is the sole member of a group, a site administrator is 1432 * assigned to be the group's administrator. Unhook `groups_remove_data_for_user()` 1433 * to modify this behavior. 1434 * 1431 1435 * @since 1.0.0 1436 * @since 4.0.0 The method behavior was changed so that single-member groups are not deleted. 1432 1437 * 1433 1438 * @param int $user_id ID of the user. 1434 * @return mixed1439 * @return bool 1435 1440 */ 1436 1441 public static function delete_all_for_user( $user_id ) { 1437 global $wpdb;1438 1439 $bp = buddypress();1440 1441 // Get all the group ids for the current user's groups and update counts.1442 1442 $group_ids = BP_Groups_Member::get_group_ids( $user_id ); 1443 1443 1444 foreach ( $group_ids['groups'] as $group_id ) { 1444 groups_update_groupmeta( $group_id, 'total_member_count', groups_get_total_member_count( $group_id ) - 1 ); 1445 1446 // If current user is the creator of a group and is the sole admin, delete that group to avoid counts going out-of-sync. 1447 if ( groups_is_user_admin( $user_id, $group_id ) && count( groups_get_group_admins( $group_id ) ) < 2 && groups_is_user_creator( $user_id, $group_id ) ) 1448 groups_delete_group( $group_id ); 1449 } 1450 1451 return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d", $user_id ) ); 1445 if ( groups_is_user_admin( $user_id, $group_id ) ) { 1446 // If the user is a sole group admin, install a site admin as their replacement. 1447 if ( count( groups_get_group_admins( $group_id ) ) < 2 ) { 1448 $admin = get_users( [ 1449 'blog_id' => bp_get_root_blog_id(), 1450 'fields' => 'id', 1451 'number' => 1, 1452 'orderby' => 'ID', 1453 'role' => 'administrator', 1454 ] ); 1455 1456 if ( ! empty( $admin ) ) { 1457 groups_join_group( $group_id, $admin[0] ); 1458 1459 $member = new BP_Groups_Member( $admin[0], $group_id ); 1460 $member->promote( 'admin' ); 1461 } 1462 } 1463 } 1464 1465 BP_Groups_Member::delete( $user_id, $group_id ); 1466 } 1467 1468 return true; 1452 1469 } 1453 1470 }
Note: See TracChangeset
for help on using the changeset viewer.