Skip to:
Content

BuddyPress.org


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

Move bp-members classes to their own files.

See #6870.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-members/classes/class-bp-core-recently-active-widget.php

    r10515 r10521  
    11<?php
    22/**
    3  * BuddyPress Members Widgets.
     3 * BuddyPress Members Recently Active widget.
    44 *
    55 * @package BuddyPress
    66 * @subpackage MembersWidgets
    7  * @since 2.2.0
     7 * @since 1.0.3
    88 */
    99
    1010// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    12 
    13 /**
    14  * Register bp-members widgets.
    15  *
    16  * Previously, these widgets were registered in bp-core.
    17  *
    18  * @since 2.2.0
    19  */
    20 function bp_members_register_widgets() {
    21         add_action( 'widgets_init', create_function( '', 'return register_widget("BP_Core_Members_Widget");'         ) );
    22         add_action( 'widgets_init', create_function( '', 'return register_widget("BP_Core_Whos_Online_Widget");'     ) );
    23         add_action( 'widgets_init', create_function( '', 'return register_widget("BP_Core_Recently_Active_Widget");' ) );
    24 }
    25 add_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 }
    39712
    39813/**
     
    542157        }
    543158}
    544 
    545 /**
    546  * AJAX request handler for Members widgets.
    547  *
    548  * @since 1.0.0
    549  *
    550  * @see BP_Core_Members_Widget
    551  */
    552 function bp_core_ajax_widget_members() {
    553 
    554         check_ajax_referer( 'bp_core_widget_members' );
    555 
    556         // Setup some variables to check.
    557         $filter      = ! empty( $_POST['filter']      ) ? $_POST['filter']                : 'recently-active-members';
    558         $max_members = ! empty( $_POST['max-members'] ) ? absint( $_POST['max-members'] ) : 5;
    559 
    560         // Determine the type of members query to perform.
    561         switch ( $filter ) {
    562 
    563                 // Newest activated.
    564                 case 'newest-members' :
    565                         $type = 'newest';
    566                         break;
    567 
    568                 // Popular by friends.
    569                 case 'popular-members' :
    570                         if ( bp_is_active( 'friends' ) ) {
    571                                 $type = 'popular';
    572                         } else {
    573                                 $type = 'active';
    574                         }
    575                         break;
    576 
    577                 // Default.
    578                 case 'recently-active-members' :
    579                 default :
    580                         $type = 'active';
    581                         break;
    582         }
    583 
    584         // Setup args for querying members.
    585         $members_args = array(
    586                 'user_id'         => 0,
    587                 'type'            => $type,
    588                 'per_page'        => $max_members,
    589                 'max'             => $max_members,
    590                 'populate_extras' => true,
    591                 'search_terms'    => false,
    592         );
    593 
    594         // Query for members.
    595         if ( bp_has_members( $members_args ) ) : ?>
    596                 <?php echo '0[[SPLIT]]'; // Return valid result. TODO: remove this. ?>
    597                 <?php while ( bp_members() ) : bp_the_member(); ?>
    598                         <li class="vcard">
    599                                 <div class="item-avatar">
    600                                         <a href="<?php bp_member_permalink(); ?>"><?php bp_member_avatar(); ?></a>
    601                                 </div>
    602 
    603                                 <div class="item">
    604                                         <div class="item-title fn"><a href="<?php bp_member_permalink(); ?>" title="<?php bp_member_name(); ?>"><?php bp_member_name(); ?></a></div>
    605                                         <?php if ( 'active' === $type ) : ?>
    606                                                 <div class="item-meta"><span class="activity"><?php bp_member_last_active(); ?></span></div>
    607                                         <?php elseif ( 'newest' === $type ) : ?>
    608                                                 <div class="item-meta"><span class="activity"><?php bp_member_registered(); ?></span></div>
    609                                         <?php elseif ( bp_is_active( 'friends' ) ) : ?>
    610                                                 <div class="item-meta"><span class="activity"><?php bp_member_total_friend_count(); ?></span></div>
    611                                         <?php endif; ?>
    612                                 </div>
    613                         </li>
    614 
    615                 <?php endwhile; ?>
    616 
    617         <?php else: ?>
    618                 <?php echo "-1[[SPLIT]]<li>"; ?>
    619                 <?php esc_html_e( 'There were no members found, please try another filter.', 'buddypress' ) ?>
    620                 <?php echo "</li>"; ?>
    621         <?php endif;
    622 }
    623 add_action( 'wp_ajax_widget_members',        'bp_core_ajax_widget_members' );
    624 add_action( 'wp_ajax_nopriv_widget_members', 'bp_core_ajax_widget_members' );
Note: See TracChangeset for help on using the changeset viewer.