Skip to:
Content

BuddyPress.org

Changeset 9725


Ignore:
Timestamp:
04/09/2015 07:15:42 PM (11 years ago)
Author:
johnjamesjacoby
Message:

Members: Improvements to BP_Core_Whos_Online_Widget

  • Escape gettext output
  • Add missing semicolons after PHP execution
  • Introduce parse_settings() method for setting smart default values
  • Remove extract() usages
  • Code formatting improvements

Fixes #6362.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-members/bp-members-widgets.php

    r9724 r9725  
    6363                // Get widget settings
    6464                $settings = $this->parse_settings( $instance );
    65 
    66                 // Output any content before the widget
    67                 echo $args['before_widget'];
    6865
    6966                /**
     
    8077                $title = $settings['link_title'] ? '<a href="' . bp_get_members_directory_permalink() . '">' . $title . '</a>' : $title;
    8178
    82                 // Output title (and maybe content before & after it)
    83                 echo $args['before_title']
     79                // Output before widget HTMl, title (and maybe content before & after it)
     80                echo $args['before_widget']
     81                   . $args['before_title']
    8482                   . $title
    8583                   . $args['after_title'];
     
    246244         * Constructor method.
    247245         */
    248         function __construct() {
    249                 $widget_ops = array(
    250                         'description' => __( 'Profile photos of online users', 'buddypress' ),
     246        public function __construct() {
     247                $name        = _x( "(BuddyPress) Who's Online", 'widget name', 'buddypress' );
     248                $description = __( 'Profile photos of online users', 'buddypress' );
     249                parent::__construct( false, $name, array(
     250                        'description' => $description,
    251251                        'classname' => 'widget_bp_core_whos_online_widget buddypress widget',
    252                 );
    253                 parent::__construct( false, $name = _x( "(BuddyPress) Who's Online", 'widget name', 'buddypress' ), $widget_ops );
     252                ) );
    254253        }
    255254
     
    262261         * @param array $instance Widget settings, as saved by the user.
    263262         */
    264         function widget($args, $instance) {
    265 
    266                 extract( $args );
     263        public function widget( $args, $instance ) {
     264
     265                // Get widget settings
     266                $settings = $this->parse_settings( $instance );
    267267
    268268                /**
     
    273273                 *
    274274                 * @param string $title    The widget title.
    275                  * @param array  $instance The settings for the particular instance of the widget.
     275                 * @param array  $settings The settings for the particular instance of the widget.
    276276                 * @param string $id_base  Root ID for all widgets of this type.
    277277                 */
    278                 $title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
    279 
    280                 echo $before_widget;
    281                 echo $before_title
     278                $title = apply_filters( 'widget_title', $settings['title'], $settings, $this->id_base );
     279
     280                echo $args['before_widget']
     281                   . $args['before_title']
    282282                   . $title
    283                    . $after_title;
    284 
     283                   . $args['after_title'];
     284
     285                // Setup args for querying members
    285286                $members_args = array(
    286287                        'user_id'         => 0,
    287288                        'type'            => 'online',
    288                         'per_page'        => $instance['max_members'],
    289                         'max'             => $instance['max_members'],
     289                        'per_page'        => $settings['max_members'],
     290                        'max'             => $settings['max_members'],
    290291                        'populate_extras' => true,
    291292                        'search_terms'    => false,
    292                 );
    293 
    294                 ?>
     293                ); ?>
    295294
    296295                <?php if ( bp_has_members( $members_args ) ) : ?>
     296
    297297                        <div class="avatar-block">
     298
    298299                                <?php while ( bp_members() ) : bp_the_member(); ?>
     300
    299301                                        <div class="item-avatar">
    300                                                 <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_avatar() ?></a>
     302                                                <a href="<?php bp_member_permalink(); ?>" title="<?php bp_member_name(); ?>"><?php bp_member_avatar(); ?></a>
    301303                                        </div>
     304
    302305                                <?php endwhile; ?>
     306
    303307                        </div>
     308
    304309                <?php else: ?>
    305310
    306311                        <div class="widget-error">
    307                                 <?php _e( 'There are no users currently online', 'buddypress' ) ?>
     312                                <?php esc_html_e( 'There are no users currently online', 'buddypress' ); ?>
    308313                        </div>
    309314
    310315                <?php endif; ?>
    311316
    312                 <?php echo $after_widget; ?>
    313         <?php
     317                <?php echo $args['after_widget'];
    314318        }
    315319
     
    321325         * @return array $instance The parsed options to be saved.
    322326         */
    323         function update( $new_instance, $old_instance ) {
    324                 $instance = $old_instance;
    325                 $instance['title'] = strip_tags( $new_instance['title'] );
     327        public function update( $new_instance, $old_instance ) {
     328                $instance                = $old_instance;
     329                $instance['title']       = strip_tags( $new_instance['title'] );
    326330                $instance['max_members'] = strip_tags( $new_instance['max_members'] );
    327331
     
    334338         * @param $instance Settings for this widget.
    335339         */
    336         function form( $instance ) {
    337                 $defaults = array(
    338                         'title' => __( "Who's Online", 'buddypress' ),
    339                         'max_members' => 15
    340                 );
    341                 $instance = wp_parse_args( (array) $instance, $defaults );
    342 
    343                 $title = strip_tags( $instance['title'] );
    344                 $max_members = strip_tags( $instance['max_members'] );
    345                 ?>
    346 
    347                 <p><label for="bp-core-widget-title"><?php _e('Title:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%" /></label></p>
    348 
    349                 <p><label for="bp-core-widget-members-max"><?php _e('Max Members to show:', 'buddypress'); ?> <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%" /></label></p>
     340        public function form( $instance ) {
     341
     342                // Get widget settings
     343                $settings    = $this->parse_settings( $instance );
     344                $title       = strip_tags( $settings['title'] );
     345                $max_members = strip_tags( $settings['max_members'] ); ?>
     346
     347                <p>
     348                        <label for="bp-core-widget-title">
     349                                <?php esc_html_e( 'Title:', 'buddypress' ); ?>
     350                                <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%" />
     351                        </label>
     352                </p>
     353
     354                <p>
     355                        <label for="bp-core-widget-members-max">
     356                                <?php esc_html_e( 'Max Members to show:', 'buddypress' ); ?>
     357                                <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%" />
     358                        </label>
     359                </p>
     360
    350361        <?php
     362        }
     363
     364        /**
     365         * Merge the widget settings into defaults array.
     366         *
     367         * @since BuddyPress (2.3.0)
     368         *
     369         * @param $instance Instance
     370         * @uses bp_parse_args() To merge widget settings into defaults
     371         */
     372        public function parse_settings( $instance = array() ) {
     373                return bp_parse_args( $instance, array(
     374                        'title'              => __( "Who's Online", 'buddypress' ),
     375                        'max_members'    => 15,
     376                ), 'members_widget_settings' );
    351377        }
    352378}
Note: See TracChangeset for help on using the changeset viewer.