Skip to:
Content

BuddyPress.org

Changeset 9725


Ignore:
Timestamp:
04/09/2015 07:15:42 PM (10 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.