Skip to:
Content

BuddyPress.org

Ticket #5451: 5451.2.diff

File 5451.2.diff, 6.5 KB (added by boonebgorges, 5 years ago)
  • src/bp-groups/bp-groups-functions.php

    diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
    index e8337e1..0639849 100644
    function groups_get_groups( $args = '' ) { 
    713713                'page'               => 1,              // The page to return if limiting per page.
    714714                'populate_extras'    => true,           // Fetch meta such as is_banned and is_member.
    715715                'update_meta_cache'  => true,           // Pre-fetch groupmeta for queried groups.
     716                'update_admin_cache' => true,
    716717        );
    717718
    718719        $r = wp_parse_args( $args, $defaults );
    function groups_get_groups( $args = '' ) { 
    732733                'page'               => $r['page'],
    733734                'populate_extras'    => $r['populate_extras'],
    734735                'update_meta_cache'  => $r['update_meta_cache'],
     736                'update_admin_cache' => $r['update_admin_cache'],
    735737                'order'              => $r['order'],
    736738                'orderby'            => $r['orderby'],
    737739        ) );
  • src/bp-groups/bp-groups-template.php

    diff --git src/bp-groups/bp-groups-template.php src/bp-groups/bp-groups-template.php
    index 4fe3a61..e8745aa 100644
    function bp_groups_directory_permalink() { 
    138138 *     @type array|string $exclude            Array or comma-separated list of group IDs. Results will exclude
    139139 *                                            the listed groups. Default: false.
    140140 *     @type bool         $update_meta_cache  Whether to fetch groupmeta for queried groups. Default: true.
     141 *     @type bool         $update_admin_cache Whether to pre-fetch group admins for queried groups. Default: true.
    141142 * }
    142143 * @return bool True if there are groups to display that match the params
    143144 */
    function bp_has_groups( $args = '' ) { 
    200201                'exclude'            => false,
    201202                'populate_extras'    => true,
    202203                'update_meta_cache'  => true,
     204                'update_admin_cache' => true,
    203205        ), 'has_groups' );
    204206
    205207        // Setup the Groups template global.
    function bp_has_groups( $args = '' ) { 
    223225                'exclude'            => $r['exclude'],
    224226                'populate_extras'    => (bool) $r['populate_extras'],
    225227                'update_meta_cache'  => (bool) $r['update_meta_cache'],
     228                'update_admin_cache' => (bool) $r['update_admin_cache'],
    226229        ) );
    227230
    228231        /**
  • src/bp-groups/classes/class-bp-groups-group.php

    diff --git src/bp-groups/classes/class-bp-groups-group.php src/bp-groups/classes/class-bp-groups-group.php
    index c763f6e..ed5b5bb 100644
    class BP_Groups_Group { 
    760760         *                                            Results will exclude the listed groups. Default: false.
    761761         *     @type bool         $update_meta_cache  Whether to pre-fetch groupmeta for the returned groups.
    762762         *                                            Default: true.
     763         *     @type bool         $update_admin_cache Whether to pre-fetch administrator IDs for the returned
     764         *                                            groups. Default: true.
    763765         *     @type bool         $show_hidden        Whether to include hidden groups in results. Default: false.
    764766         * }
    765767         * @return array {
    class BP_Groups_Group { 
    807809                        'include'            => false,
    808810                        'populate_extras'    => true,
    809811                        'update_meta_cache'  => true,
     812                        'update_admin_cache' => true,
    810813                        'exclude'            => false,
    811814                        'show_hidden'        => false,
    812815                );
    class BP_Groups_Group { 
    10231026                        bp_groups_update_meta_cache( $group_ids );
    10241027                }
    10251028
     1029                // Grab all administrator IDs.
     1030                if ( $r['update_admin_cache'] ) {
     1031                        BP_Groups_Member::prime_group_administrator_ids_cache( $group_ids );
     1032                }
     1033
    10261034                // Set up integer properties needing casting.
    10271035                $int_props = array(
    10281036                        'id', 'creator_id', 'enable_forum'
  • src/bp-groups/classes/class-bp-groups-member.php

    diff --git src/bp-groups/classes/class-bp-groups-member.php src/bp-groups/classes/class-bp-groups-member.php
    index 0aae803..25a9b53 100644
    class BP_Groups_Member { 
    10431043                $group_admins = wp_cache_get( $group_id, 'bp_group_admins' );
    10441044
    10451045                if ( false === $group_admins ) {
    1046                         $bp = buddypress();
    1047                         $group_admins = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, date_modified FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_admin = 1 AND is_banned = 0", $group_id ) );
    1048 
    1049                         wp_cache_set( $group_id, $group_admins, 'bp_group_admins' );
     1046                        self::prime_group_administrator_ids_cache( array( $group_id ) );
     1047                        $group_admins = wp_cache_get( $group_id, 'bp_group_admins' );
    10501048                }
    10511049
    10521050                // Integer casting.
    class BP_Groups_Member { 
    10581056        }
    10591057
    10601058        /**
     1059         * Prime the bp_group_admins cache for one or more groups.
     1060         *
     1061         * @since 2.7.0
     1062         *
     1063         * @param array $group_ids IDs of the groups.
     1064         * @return bool True on success.
     1065         */
     1066        public static function prime_group_administrator_ids_cache( $group_ids ) {
     1067                global $wpdb;
     1068
     1069                $uncached = bp_get_non_cached_ids( $group_ids, 'bp_group_admins' );
     1070
     1071                if ( $uncached ) {
     1072                        $bp = buddypress();
     1073                        $uncached_sql = implode( ',', array_map( 'intval', $uncached ) );
     1074                        $group_admins = $wpdb->get_results( "SELECT user_id, group_id, date_modified FROM {$bp->groups->table_name_members} WHERE group_id IN ({$uncached_sql}) AND is_admin = 1 AND is_banned = 0" );
     1075
     1076                        $groups = array();
     1077                        if ( $group_admins ) {
     1078                                foreach ( $group_admins as $group_admin ) {
     1079                                        $admin_obj = new stdClass();
     1080                                        $admin_obj->user_id = $group_admin->user_id;
     1081                                        $admin_obj->date_modified = $group_admin->date_modified;
     1082                                        $groups[ $group_admin->group_id ][] = $admin_obj;
     1083                                }
     1084
     1085                                foreach ( $groups as $this_group_id => $this_group_admins ) {
     1086                                        wp_cache_set( $this_group_id, $this_group_admins, 'bp_group_admins' );
     1087                                }
     1088                        }
     1089                }
     1090        }
     1091
     1092        /**
    10611093         * Get a list of all a given group's moderators.
    10621094         *
    10631095         * @since 1.6.0
  • src/bp-groups/classes/class-bp-groups-template.php

    diff --git src/bp-groups/classes/class-bp-groups-template.php src/bp-groups/classes/class-bp-groups-template.php
    index 043d8f4..d3a776e 100644
    class BP_Groups_Template { 
    172172                        'meta_query'         => false,
    173173                        'populate_extras'    => true,
    174174                        'update_meta_cache'  => true,
     175                        'update_admin_cache' => true,
    175176                );
    176177
    177178                $r = wp_parse_args( $args, $defaults );
    class BP_Groups_Template { 
    228229                                'exclude'            => $exclude,
    229230                                'populate_extras'    => $populate_extras,
    230231                                'update_meta_cache'  => $update_meta_cache,
     232                                'update_admin_cache' => $update_admin_cache,
    231233                                'show_hidden'        => $show_hidden,
    232234                        ) );
    233235                }