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-members-widget.php

    r10515 r10521  
    11<?php
    22/**
    3  * BuddyPress Members Widgets.
     3 * BuddyPress Members 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' );
    2612
    2713/**
     
    248234        }
    249235}
    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 }
    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.