bp_admin_repair_group_count()

Recalculate group counts for each user.

Description

Return

(array)

Source

File: bp-core/admin/bp-core-admin-tools.php

503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
function bp_admin_repair_group_count() {
    global $wpdb;
 
    if ( ! bp_is_active( 'groups' ) ) {
        return;
    }
 
    $statement = __( 'Counting the number of groups for each user… %s', 'buddyboss' );
    $result    = __( 'Failed!', 'buddyboss' );
 
    $sql_delete = "DELETE FROM {$wpdb->usermeta} WHERE meta_key IN ( 'total_group_count' );";
    if ( is_wp_error( $wpdb->query( $sql_delete ) ) ) {
        return array( 1, sprintf( $statement, $result ) );
    }
 
    $bp = buddypress();
 
    // Walk through all users on the site.
    $total_users = $wpdb->get_row( "SELECT count(ID) as c FROM {$wpdb->users}" )->c;
 
    if ( $total_users > 0 ) {
        $per_query = 500;
        $offset    = 0;
        while ( $offset < $total_users ) {
            // But only bother to update counts for users that have groups.
            $users = $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE is_confirmed = 1 AND is_banned = 0 AND user_id > %d AND user_id <= %d", $offset, $offset + $per_query ) );
 
            foreach ( $users as $user ) {
                BP_Groups_Member::refresh_total_group_count_for_user( $user );
            }
 
            $offset += $per_query;
        }
    } else {
        return array( 2, sprintf( $statement, $result ) );
    }
 
    return array( 0, sprintf( $statement, __( 'Complete!', 'buddyboss' ) ) );
}

Changelog

Changelog
Version Description
BuddyPress 2.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.