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() { |
3928 | 3928 | */ |
3929 | 3929 | return (bool) apply_filters( 'bp_is_large_install', $is_large ); |
3930 | 3930 | } |
| 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 | */ |
| 3940 | function 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 | } |
diff --git src/bp-members/classes/class-bp-core-members-widget.php src/bp-members/classes/class-bp-core-members-widget.php
index a23fa705b..67f4aede7 100644
|
|
class BP_Core_Members_Widget extends WP_Widget { |
90 | 90 | // Output before widget HTMl, title (and maybe content before & after it). |
91 | 91 | echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title']; |
92 | 92 | |
| 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 | |
93 | 96 | // Setup args for querying members. |
94 | 97 | $members_args = array( |
95 | 98 | 'user_id' => 0, |
96 | 99 | 'type' => $settings['member_default'], |
97 | | 'per_page' => $settings['max_members'], |
98 | | 'max' => $settings['max_members'], |
| 100 | 'per_page' => $max_members, |
| 101 | 'max' => $max_members, |
99 | 102 | 'populate_extras' => true, |
100 | 103 | 'search_terms' => false, |
101 | 104 | ); |
… |
… |
class BP_Core_Members_Widget extends WP_Widget { |
177 | 180 | public function update( $new_instance, $old_instance ) { |
178 | 181 | $instance = $old_instance; |
179 | 182 | |
| 183 | $max_limit = bp_get_widget_max_count_limit( __CLASS__ ); |
| 184 | |
180 | 185 | $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'] ); |
182 | 187 | $instance['member_default'] = strip_tags( $new_instance['member_default'] ); |
183 | | $instance['link_title'] = (bool) $new_instance['link_title']; |
| 188 | $instance['link_title'] = isset( $new_instance['link_title'] ); |
184 | 189 | |
185 | 190 | return $instance; |
186 | 191 | } |
… |
… |
class BP_Core_Members_Widget extends WP_Widget { |
194 | 199 | * @return void |
195 | 200 | */ |
196 | 201 | public function form( $instance ) { |
| 202 | $max_limit = bp_get_widget_max_count_limit( __CLASS__ ); |
197 | 203 | |
198 | 204 | // Get widget settings. |
199 | 205 | $settings = $this->parse_settings( $instance ); |
200 | 206 | $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'] ); |
202 | 208 | $member_default = strip_tags( $settings['member_default'] ); |
203 | 209 | $link_title = (bool) $settings['link_title']; ?> |
204 | 210 | |
… |
… |
class BP_Core_Members_Widget extends WP_Widget { |
219 | 225 | <p> |
220 | 226 | <label for="<?php echo $this->get_field_id( 'max_members' ); ?>"> |
221 | 227 | <?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%" /> |
223 | 229 | </label> |
224 | 230 | </p> |
225 | 231 | |