Skip to:
Content

BuddyPress.org

Ticket #8036: 8036.diff

File 8036.diff, 3.9 KB (added by boonebgorges, 5 years ago)
  • src/bp-core/bp-core-functions.php

    diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
    index 4329a6eb5..f3c8be614 100644
    function bp_is_large_install() { 
    39283928         */
    39293929        return (bool) apply_filters( 'bp_is_large_install', $is_large );
    39303930}
     3931
     3932/**
     3933 * Returns the upper limit on the "max" item count, for widgets that support it.
     3934 *
     3935 * @since 5.0.0
     3936 *
     3937 * @param string $widget_class Optional. Class name of the calling widget.
     3938 * @return int
     3939 */
     3940function bp_get_widget_max_count_limit( $widget_class = '' ) {
     3941        /**
     3942         * Filters the upper limit on the "max" item count, for widgets that support it.
     3943         *
     3944         * @since 5.0.0
     3945         *
     3946         * @param int    $count        Defaults to 50.
     3947         * @param string $widget_class Class name of the calling widget.
     3948         */
     3949        return apply_filters( 'bp_get_widget_max_count_limit', 50, $widget_class );
     3950}
  • src/bp-members/classes/class-bp-core-members-widget.php

    diff --git src/bp-members/classes/class-bp-core-members-widget.php src/bp-members/classes/class-bp-core-members-widget.php
    index a23fa705b..21f204ce9 100644
    class BP_Core_Members_Widget extends WP_Widget { 
    9090                // Output before widget HTMl, title (and maybe content before & after it).
    9191                echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title'];
    9292
     93                $max_limit   = bp_get_widget_max_count_limit( __CLASS__ );
     94                $max_members = $settings['max_members'] > $max_limit ? $max_limit : (int) $settings['max_members'];
     95
    9396                // Setup args for querying members.
    9497                $members_args = array(
    9598                        'user_id'         => 0,
    9699                        'type'            => $settings['member_default'],
    97                         'per_page'        => $settings['max_members'],
    98                         'max'             => $settings['max_members'],
     100                        'per_page'        => $max_members,
     101                        'max'             => $max_members,
    99102                        'populate_extras' => true,
    100103                        'search_terms'    => false,
    101104                );
    class BP_Core_Members_Widget extends WP_Widget { 
    177180        public function update( $new_instance, $old_instance ) {
    178181                $instance = $old_instance;
    179182
     183                $max_limit = bp_get_widget_max_count_limit( __CLASS__ );
     184
    180185                $instance['title']          = strip_tags( $new_instance['title'] );
    181                 $instance['max_members']    = strip_tags( $new_instance['max_members'] );
     186                $instance['max_members']    = $new_instance['max_members'] > $max_limit ? $max_limit : intval( $new_instance['max_members'] );
    182187                $instance['member_default'] = strip_tags( $new_instance['member_default'] );
    183188                $instance['link_title']     = (bool) $new_instance['link_title'];
    184189
    class BP_Core_Members_Widget extends WP_Widget { 
    194199         * @return void
    195200         */
    196201        public function form( $instance ) {
     202                $max_limit = bp_get_widget_max_count_limit( __CLASS__ );
    197203
    198204                // Get widget settings.
    199205                $settings       = $this->parse_settings( $instance );
    200206                $title          = strip_tags( $settings['title'] );
    201                 $max_members    = strip_tags( $settings['max_members'] );
     207                $max_members    = $settings['max_members'] > $max_limit ? $max_limit : intval( $settings['max_members'] );
    202208                $member_default = strip_tags( $settings['member_default'] );
    203209                $link_title     = (bool) $settings['link_title']; ?>
    204210
    class BP_Core_Members_Widget extends WP_Widget { 
    219225                <p>
    220226                        <label for="<?php echo $this->get_field_id( 'max_members' ); ?>">
    221227                                <?php esc_html_e( 'Max members to show:', 'buddypress' ); ?>
    222                                 <input class="widefat" id="<?php echo $this->get_field_id( 'max_members' ); ?>" name="<?php echo $this->get_field_name( 'max_members' ); ?>" type="text" value="<?php echo esc_attr( $max_members ); ?>" style="width: 30%" />
     228                                <input class="widefat" id="<?php echo $this->get_field_id( 'max_members' ); ?>" name="<?php echo $this->get_field_name( 'max_members' ); ?>" type="number" min="1" max="<?php echo esc_attr( $max_limit ); ?>" value="<?php echo esc_attr( $max_members ); ?>" style="width: 30%" />
    223229                        </label>
    224230                </p>
    225231