Changeset 10521 for trunk/src/bp-members/bp-members-widgets.php
- Timestamp:
- 02/05/2016 05:15:55 AM (10 years ago)
- File:
-
- 1 edited
-
trunk/src/bp-members/bp-members-widgets.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-members/bp-members-widgets.php
r10417 r10521 10 10 // Exit if accessed directly. 11 11 defined( 'ABSPATH' ) || exit; 12 13 require dirname( __FILE__ ) . '/classes/class-bp-core-members-widget.php'; 14 require dirname( __FILE__ ) . '/classes/class-bp-core-whos-online-widget.php'; 15 require dirname( __FILE__ ) . '/classes/class-bp-core-recently-active-widget.php'; 12 16 13 17 /** … … 24 28 } 25 29 add_action( 'bp_register_widgets', 'bp_members_register_widgets' ); 26 27 /**28 * Members Widget.29 *30 * @since 1.0.331 */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.072 * @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.085 *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 . $title94 . $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"><?php134 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 void188 */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 <?php229 }230 231 /**232 * Merge the widget settings into defaults array.233 *234 * @since 2.3.0235 *236 * @uses bp_parse_args() To merge widget settings into defaults.237 *238 * @param array $instance Widget instance settings.239 * @return array240 */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' => false247 ), 'members_widget_settings' );248 }249 }250 251 /**252 * Who's Online Widget.253 *254 * @since 1.0.3255 */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.0287 * @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 . $title298 . $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 void355 */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 <?php378 }379 380 /**381 * Merge the widget settings into defaults array.382 *383 * @since 2.3.0384 *385 * @uses bp_parse_args() To merge widget settings into defaults.386 *387 * @param array $instance Widget instance settings.388 * @return array389 */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.3402 */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.0434 * @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 . $title445 . $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 void502 */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 <?php525 }526 527 /**528 * Merge the widget settings into defaults array.529 *530 * @since 2.3.0531 *532 * @uses bp_parse_args() To merge widget settings into defaults.533 *534 * @param array $instance Widget instance settings.535 * @return array536 */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 30 545 31 /**
Note: See TracChangeset
for help on using the changeset viewer.