Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/05/2016 05:15:55 AM (10 years ago)
Author:
boonebgorges
Message:

Move bp-members classes to their own files.

See #6870.

File:
1 edited

Legend:

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

    r10417 r10521  
    1010// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
     12
     13require dirname( __FILE__ ) . '/classes/class-bp-core-members-widget.php';
     14require dirname( __FILE__ ) . '/classes/class-bp-core-whos-online-widget.php';
     15require dirname( __FILE__ ) . '/classes/class-bp-core-recently-active-widget.php';
    1216
    1317/**
     
    2428}
    2529add_action( 'bp_register_widgets', 'bp_members_register_widgets' );
    26 
    27 /**
    28  * Members Widget.
    29  *
    30  * @since 1.0.3
    31  */
    32 class BP_Core_Members_Widget extends WP_Widget {
    33 
    34     /**
    35      * Constructor method.
    36      */
    37     public function __construct() {
    38 
    39         // Setup widget name & description.
    40         $name        = _x( '(BuddyPress) Members', 'widget name', 'buddypress' );
    41         $description = __( 'A dynamic list of recently active, popular, and newest members', 'buddypress' );
    42 
    43         // Call WP_Widget constructor.
    44         parent::__construct( false, $name, array(
    45             'description' => $description,
    46             'classname'   => 'widget_bp_core_members_widget buddypress widget',
    47         ) );
    48 
    49         // Maybe enqueue JS for widget.
    50         if ( is_active_widget( false, false, $this->id_base ) && ! is_admin() && ! is_network_admin() ) {
    51             wp_enqueue_script( 'bp-widget-members' );
    52         }
    53     }
    54 
    55     /**
    56      * Display the Members widget.
    57      *
    58      * @see WP_Widget::widget() for description of parameters.
    59      *
    60      * @param array $args     Widget arguments.
    61      * @param array $instance Widget settings, as saved by the user.
    62      */
    63     public function widget( $args, $instance ) {
    64 
    65         // Get widget settings.
    66         $settings = $this->parse_settings( $instance );
    67 
    68         /**
    69          * Filters the title of the Members widget.
    70          *
    71          * @since 1.8.0
    72          * @since 2.3.0 Added 'instance' and 'id_base' to arguments passed to filter.
    73          *
    74          * @param string $title    The widget title.
    75          * @param array  $settings The settings for the particular instance of the widget.
    76          * @param string $id_base  Root ID for all widgets of this type.
    77          */
    78         $title = apply_filters( 'widget_title', $settings['title'], $settings, $this->id_base );
    79         $title = $settings['link_title'] ? '<a href="' . bp_get_members_directory_permalink() . '">' . $title . '</a>' : $title;
    80 
    81         /**
    82          * Filters the separator of the member widget links.
    83          *
    84          * @since 2.4.0
    85          *
    86          * @param string $separator Separator string. Default '|'.
    87          */
    88         $separator = apply_filters( 'bp_members_widget_separator', '|' );
    89 
    90         // Output before widget HTMl, title (and maybe content before & after it).
    91         echo $args['before_widget']
    92            . $args['before_title']
    93            . $title
    94            . $args['after_title'];
    95 
    96         // Setup args for querying members.
    97         $members_args = array(
    98             'user_id'         => 0,
    99             'type'            => $settings['member_default'],
    100             'per_page'        => $settings['max_members'],
    101             'max'             => $settings['max_members'],
    102             'populate_extras' => true,
    103             'search_terms'    => false,
    104         ); ?>
    105 
    106         <?php if ( bp_has_members( $members_args ) ) : ?>
    107 
    108             <div class="item-options" id="members-list-options">
    109                 <a href="<?php bp_members_directory_permalink(); ?>" id="newest-members" <?php if ( 'newest' === $settings['member_default'] ) : ?>class="selected"<?php endif; ?>><?php esc_html_e( 'Newest', 'buddypress' ); ?></a>
    110                 <span class="bp-separator" role="separator"><?php echo esc_html( $separator ); ?></span>
    111                 <a href="<?php bp_members_directory_permalink(); ?>" id="recently-active-members" <?php if ( 'active' === $settings['member_default'] ) : ?>class="selected"<?php endif; ?>><?php esc_html_e( 'Active', 'buddypress' ); ?></a>
    112 
    113                 <?php if ( bp_is_active( 'friends' ) ) : ?>
    114                     <span class="bp-separator" role="separator"><?php echo esc_html( $separator ); ?></span>
    115                     <a href="<?php bp_members_directory_permalink(); ?>" id="popular-members" <?php if ( 'popular' === $settings['member_default'] ) : ?>class="selected"<?php endif; ?>><?php esc_html_e( 'Popular', 'buddypress' ); ?></a>
    116 
    117                 <?php endif; ?>
    118 
    119             </div>
    120 
    121             <ul id="members-list" class="item-list">
    122 
    123                 <?php while ( bp_members() ) : bp_the_member(); ?>
    124 
    125                     <li class="vcard">
    126                         <div class="item-avatar">
    127                             <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name(); ?>"><?php bp_member_avatar(); ?></a>
    128                         </div>
    129 
    130                         <div class="item">
    131                             <div class="item-title fn"><a href="<?php bp_member_permalink(); ?>" title="<?php bp_member_name(); ?>"><?php bp_member_name(); ?></a></div>
    132                             <div class="item-meta">
    133                                 <span class="activity"><?php
    134                                     if ( 'newest' === $settings['member_default'] ) :
    135                                         bp_member_registered();
    136                                     elseif ( 'active' === $settings['member_default'] ) :
    137                                         bp_member_last_active();
    138                                     elseif ( 'popular' === $settings['member_default'] ) :
    139                                         bp_member_total_friend_count();
    140                                     endif; ?></span>
    141                             </div>
    142                         </div>
    143                     </li>
    144 
    145                 <?php endwhile; ?>
    146 
    147             </ul>
    148 
    149             <?php wp_nonce_field( 'bp_core_widget_members', '_wpnonce-members', false ); ?>
    150 
    151             <input type="hidden" name="members_widget_max" id="members_widget_max" value="<?php echo esc_attr( $settings['max_members'] ); ?>" />
    152 
    153         <?php else: ?>
    154 
    155             <div class="widget-error">
    156                 <?php esc_html_e( 'No one has signed up yet!', 'buddypress' ); ?>
    157             </div>
    158 
    159         <?php endif; ?>
    160 
    161         <?php echo $args['after_widget'];
    162     }
    163 
    164     /**
    165      * Update the Members widget options.
    166      *
    167      * @param array $new_instance The new instance options.
    168      * @param array $old_instance The old instance options.
    169      * @return array $instance The parsed options to be saved.
    170      */
    171     public function update( $new_instance, $old_instance ) {
    172         $instance = $old_instance;
    173 
    174         $instance['title']          = strip_tags( $new_instance['title'] );
    175         $instance['max_members']    = strip_tags( $new_instance['max_members'] );
    176         $instance['member_default'] = strip_tags( $new_instance['member_default'] );
    177         $instance['link_title']     = (bool) $new_instance['link_title'];
    178 
    179         return $instance;
    180     }
    181 
    182     /**
    183      * Output the Members widget options form.
    184      *
    185      * @param array $instance Widget instance settings.
    186      *
    187      * @return void
    188      */
    189     public function form( $instance ) {
    190 
    191         // Get widget settings.
    192         $settings       = $this->parse_settings( $instance );
    193         $title          = strip_tags( $settings['title'] );
    194         $max_members    = strip_tags( $settings['max_members'] );
    195         $member_default = strip_tags( $settings['member_default'] );
    196         $link_title     = (bool) $settings['link_title']; ?>
    197 
    198         <p>
    199             <label for="<?php echo $this->get_field_id( 'title' ); ?>">
    200                 <?php esc_html_e( 'Title:', 'buddypress' ); ?>
    201                 <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%" />
    202             </label>
    203         </p>
    204 
    205         <p>
    206             <label for="<?php echo $this->get_field_id( 'link_title' ) ?>">
    207                 <input type="checkbox" name="<?php echo $this->get_field_name( 'link_title' ) ?>" id="<?php echo $this->get_field_id( 'link_title' ) ?>" value="1" <?php checked( $link_title ) ?> />
    208                 <?php esc_html_e( 'Link widget title to Members directory', 'buddypress' ); ?>
    209             </label>
    210         </p>
    211 
    212         <p>
    213             <label for="<?php echo $this->get_field_id( 'max_members' ); ?>">
    214                 <?php esc_html_e( 'Max members to show:', 'buddypress' ); ?>
    215                 <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%" />
    216             </label>
    217         </p>
    218 
    219         <p>
    220             <label for="<?php echo $this->get_field_id( 'member_default' ) ?>"><?php esc_html_e( 'Default members to show:', 'buddypress' ); ?></label>
    221             <select name="<?php echo $this->get_field_name( 'member_default' ) ?>" id="<?php echo $this->get_field_id( 'member_default' ) ?>">
    222                 <option value="newest"  <?php if ( 'newest'  === $member_default ) : ?>selected="selected"<?php endif; ?>><?php esc_html_e( 'Newest',  'buddypress' ); ?></option>
    223                 <option value="active"  <?php if ( 'active'  === $member_default ) : ?>selected="selected"<?php endif; ?>><?php esc_html_e( 'Active',  'buddypress' ); ?></option>
    224                 <option value="popular" <?php if ( 'popular' === $member_default ) : ?>selected="selected"<?php endif; ?>><?php esc_html_e( 'Popular', 'buddypress' ); ?></option>
    225             </select>
    226         </p>
    227 
    228     <?php
    229     }
    230 
    231     /**
    232      * Merge the widget settings into defaults array.
    233      *
    234      * @since 2.3.0
    235      *
    236      * @uses bp_parse_args() To merge widget settings into defaults.
    237      *
    238      * @param array $instance Widget instance settings.
    239      * @return array
    240      */
    241     public function parse_settings( $instance = array() ) {
    242         return bp_parse_args( $instance, array(
    243             'title'          => __( 'Members', 'buddypress' ),
    244             'max_members'    => 5,
    245             'member_default' => 'active',
    246             'link_title'     => false
    247         ), 'members_widget_settings' );
    248     }
    249 }
    250 
    251 /**
    252  * Who's Online Widget.
    253  *
    254  * @since 1.0.3
    255  */
    256 class BP_Core_Whos_Online_Widget extends WP_Widget {
    257 
    258     /**
    259      * Constructor method.
    260      */
    261     public function __construct() {
    262         $name        = _x( "(BuddyPress) Who's Online", 'widget name', 'buddypress' );
    263         $description = __( 'Profile photos of online users', 'buddypress' );
    264         parent::__construct( false, $name, array(
    265             'description' => $description,
    266             'classname' => 'widget_bp_core_whos_online_widget buddypress widget',
    267         ) );
    268     }
    269 
    270     /**
    271      * Display the Who's Online widget.
    272      *
    273      * @see WP_Widget::widget() for description of parameters.
    274      *
    275      * @param array $args     Widget arguments.
    276      * @param array $instance Widget settings, as saved by the user.
    277      */
    278     public function widget( $args, $instance ) {
    279 
    280         // Get widget settings.
    281         $settings = $this->parse_settings( $instance );
    282 
    283         /**
    284          * Filters the title of the Who's Online widget.
    285          *
    286          * @since 1.8.0
    287          * @since 2.3.0 Added 'instance' and 'id_base' to arguments passed to filter.
    288          *
    289          * @param string $title    The widget title.
    290          * @param array  $settings The settings for the particular instance of the widget.
    291          * @param string $id_base  Root ID for all widgets of this type.
    292          */
    293         $title = apply_filters( 'widget_title', $settings['title'], $settings, $this->id_base );
    294 
    295         echo $args['before_widget']
    296            . $args['before_title']
    297            . $title
    298            . $args['after_title'];
    299 
    300         // Setup args for querying members.
    301         $members_args = array(
    302             'user_id'         => 0,
    303             'type'            => 'online',
    304             'per_page'        => $settings['max_members'],
    305             'max'             => $settings['max_members'],
    306             'populate_extras' => true,
    307             'search_terms'    => false,
    308         ); ?>
    309 
    310         <?php if ( bp_has_members( $members_args ) ) : ?>
    311 
    312             <div class="avatar-block">
    313 
    314                 <?php while ( bp_members() ) : bp_the_member(); ?>
    315 
    316                     <div class="item-avatar">
    317                         <a href="<?php bp_member_permalink(); ?>" title="<?php bp_member_name(); ?>"><?php bp_member_avatar(); ?></a>
    318                     </div>
    319 
    320                 <?php endwhile; ?>
    321 
    322             </div>
    323 
    324         <?php else: ?>
    325 
    326             <div class="widget-error">
    327                 <?php esc_html_e( 'There are no users currently online', 'buddypress' ); ?>
    328             </div>
    329 
    330         <?php endif; ?>
    331 
    332         <?php echo $args['after_widget'];
    333     }
    334 
    335     /**
    336      * Update the Who's Online widget options.
    337      *
    338      * @param array $new_instance The new instance options.
    339      * @param array $old_instance The old instance options.
    340      * @return array $instance The parsed options to be saved.
    341      */
    342     public function update( $new_instance, $old_instance ) {
    343         $instance                = $old_instance;
    344         $instance['title']       = strip_tags( $new_instance['title'] );
    345         $instance['max_members'] = strip_tags( $new_instance['max_members'] );
    346 
    347         return $instance;
    348     }
    349 
    350     /**
    351      * Output the Who's Online widget options form.
    352      *
    353      * @param array $instance Widget instance settings.
    354      * @return void
    355      */
    356     public function form( $instance ) {
    357 
    358         // Get widget settings.
    359         $settings    = $this->parse_settings( $instance );
    360         $title       = strip_tags( $settings['title'] );
    361         $max_members = strip_tags( $settings['max_members'] ); ?>
    362 
    363         <p>
    364             <label for="<?php echo $this->get_field_id( 'title' ); ?>">
    365                 <?php esc_html_e( 'Title:', 'buddypress' ); ?>
    366                 <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%" />
    367             </label>
    368         </p>
    369 
    370         <p>
    371             <label for="<?php echo $this->get_field_id( 'max_members' ); ?>">
    372                 <?php esc_html_e( 'Max members to show:', 'buddypress' ); ?>
    373                 <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%" />
    374             </label>
    375         </p>
    376 
    377     <?php
    378     }
    379 
    380     /**
    381      * Merge the widget settings into defaults array.
    382      *
    383      * @since 2.3.0
    384      *
    385      * @uses bp_parse_args() To merge widget settings into defaults.
    386      *
    387      * @param array $instance Widget instance settings.
    388      * @return array
    389      */
    390     public function parse_settings( $instance = array() ) {
    391         return bp_parse_args( $instance, array(
    392             'title'          => __( "Who's Online", 'buddypress' ),
    393             'max_members'    => 15,
    394         ), 'members_widget_settings' );
    395     }
    396 }
    397 
    398 /**
    399  * Recently Active Members Widget.
    400  *
    401  * @since 1.0.3
    402  */
    403 class BP_Core_Recently_Active_Widget extends WP_Widget {
    404 
    405     /**
    406      * Constructor method.
    407      */
    408     public function __construct() {
    409         $name        = _x( '(BuddyPress) Recently Active Members', 'widget name', 'buddypress' );
    410         $description = __( 'Profile photos of recently active members', 'buddypress' );
    411         parent::__construct( false, $name, array(
    412             'description' => $description,
    413             'classname'   => 'widget_bp_core_recently_active_widget buddypress widget',
    414         ) );
    415     }
    416 
    417     /**
    418      * Display the Recently Active widget.
    419      *
    420      * @see WP_Widget::widget() for description of parameters.
    421      *
    422      * @param array $args     Widget arguments.
    423      * @param array $instance Widget settings, as saved by the user.
    424      */
    425     public function widget( $args, $instance ) {
    426 
    427         // Get widget settings.
    428         $settings = $this->parse_settings( $instance );
    429 
    430         /**
    431          * Filters the title of the Recently Active widget.
    432          *
    433          * @since 1.8.0
    434          * @since 2.3.0 Added 'instance' and 'id_base' to arguments passed to filter.
    435          *
    436          * @param string $title    The widget title.
    437          * @param array  $settings The settings for the particular instance of the widget.
    438          * @param string $id_base  Root ID for all widgets of this type.
    439          */
    440         $title = apply_filters( 'widget_title', $settings['title'], $settings, $this->id_base );
    441 
    442         echo $args['before_widget'];
    443         echo $args['before_title']
    444            . $title
    445            . $args['after_title'];
    446 
    447         // Setup args for querying members.
    448         $members_args = array(
    449             'user_id'         => 0,
    450             'type'            => 'active',
    451             'per_page'        => $settings['max_members'],
    452             'max'             => $settings['max_members'],
    453             'populate_extras' => true,
    454             'search_terms'    => false,
    455         ); ?>
    456 
    457         <?php if ( bp_has_members( $members_args ) ) : ?>
    458 
    459             <div class="avatar-block">
    460 
    461                 <?php while ( bp_members() ) : bp_the_member(); ?>
    462 
    463                     <div class="item-avatar">
    464                         <a href="<?php bp_member_permalink(); ?>" title="<?php bp_member_name(); ?>"><?php bp_member_avatar(); ?></a>
    465                     </div>
    466 
    467                 <?php endwhile; ?>
    468 
    469             </div>
    470 
    471         <?php else: ?>
    472 
    473             <div class="widget-error">
    474                 <?php esc_html_e( 'There are no recently active members', 'buddypress' ); ?>
    475             </div>
    476 
    477         <?php endif; ?>
    478 
    479         <?php echo $args['after_widget'];
    480     }
    481 
    482     /**
    483      * Update the Recently Active widget options.
    484      *
    485      * @param array $new_instance The new instance options.
    486      * @param array $old_instance The old instance options.
    487      * @return array $instance The parsed options to be saved.
    488      */
    489     public function update( $new_instance, $old_instance ) {
    490         $instance                = $old_instance;
    491         $instance['title']       = strip_tags( $new_instance['title'] );
    492         $instance['max_members'] = strip_tags( $new_instance['max_members'] );
    493 
    494         return $instance;
    495     }
    496 
    497     /**
    498      * Output the Recently Active widget options form.
    499      *
    500      * @param array $instance Widget instance settings.
    501      * @return void
    502      */
    503     public function form( $instance ) {
    504 
    505         // Get widget settings.
    506         $settings    = $this->parse_settings( $instance );
    507         $title       = strip_tags( $settings['title'] );
    508         $max_members = strip_tags( $settings['max_members'] ); ?>
    509 
    510         <p>
    511             <label for="<?php echo $this->get_field_id( 'title' ); ?>">
    512                 <?php esc_html_e( 'Title:', 'buddypress' ); ?>
    513                 <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%" />
    514             </label>
    515         </p>
    516 
    517         <p>
    518             <label for="<?php echo $this->get_field_id( 'max_members' ); ?>">
    519                 <?php esc_html_e( 'Max members to show:', 'buddypress' ); ?>
    520                 <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%" />
    521             </label>
    522         </p>
    523 
    524     <?php
    525     }
    526 
    527     /**
    528      * Merge the widget settings into defaults array.
    529      *
    530      * @since 2.3.0
    531      *
    532      * @uses bp_parse_args() To merge widget settings into defaults.
    533      *
    534      * @param array $instance Widget instance settings.
    535      * @return array
    536      */
    537     public function parse_settings( $instance = array() ) {
    538         return bp_parse_args( $instance, array(
    539             'title'          => __( 'Recently Active Members', 'buddypress' ),
    540             'max_members'    => 15,
    541         ), 'recently_active_members_widget_settings' );
    542     }
    543 }
    54430
    54531/**
Note: See TracChangeset for help on using the changeset viewer.