Skip to:
Content

Ticket #5008: 5008.patch

File 5008.patch, 18.9 KB (added by williamsba1, 4 years ago)
  • bp-friends/bp-friends-loader.php

     
    3939                        'template', 
    4040                        'functions', 
    4141                        'notifications', 
     42                        'widgets' 
    4243                ); 
    4344 
    4445                parent::includes( $includes ); 
  • bp-friends/bp-friends-widgets.php

     
     1<?php 
     2/** 
     3 * BuddyPress Widgets 
     4 * 
     5 * @package BuddyPress 
     6 * @subpackage Friends 
     7 * @since 1.9.0 
     8 */ 
     9 
     10// Exit if accessed directly 
     11if ( ! defined( 'ABSPATH' ) ) exit; 
     12 
     13/* Register widgets for the core component */ 
     14function bp_friends_register_widgets() { 
     15         
     16        if( bp_is_active( 'friends' ) ) 
     17                add_action( 'widgets_init', create_function( '', 'return register_widget("BP_Core_Friends_Widget");' ) ); 
     18} 
     19 
     20add_action( 'bp_register_widgets', 'bp_friends_register_widgets' ); 
     21 
     22/*** MEMBER FRIENDS WIDGET *****************/ 
     23 
     24class BP_Core_Friends_Widget extends WP_Widget { 
     25 
     26        function __construct() { 
     27                $widget_ops = array( 
     28                        'description' => __( 'A dynamic list of recently active, popular, and newest Friends of the displayed member.  Widget is only shown when viewing a member profile.', 'buddypress' ), 
     29                        'classname' => 'widget_bp_core_friends_widget buddypress widget', 
     30                ); 
     31                parent::__construct( false, $name = _x( '(BuddyPress) Friends', 'widget name', 'buddypress' ), $widget_ops ); 
     32 
     33        } 
     34 
     35        function widget( $args, $instance ) { 
     36 
     37                 
     38                global $bp; 
     39                extract( $args ); 
     40 
     41                if ( bp_displayed_user_domain() ) { 
     42                         
     43                        $min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; 
     44                        wp_enqueue_script( 'bp_core_widget_friends-js', BP_PLUGIN_URL . "bp-friends/js/widget-friends{$min}.js", array( 'jquery' ), bp_get_version() ); 
     45 
     46                        $user_id = bp_displayed_user_id(); 
     47                        $link = bp_displayed_user_domain() .bp_get_friends_slug(); 
     48                        $instance['title'] = sprintf( __( '%s friends', 'buddypress' ), bp_get_displayed_user_fullname() ); 
     49                         
     50                } else { 
     51                        return; 
     52                } 
     53 
     54                if ( ! $instance['friend_default'] ) 
     55                        $instance['friend_default'] = 'active'; 
     56 
     57                $title = apply_filters( 'widget_title', $instance['title'] ); 
     58 
     59                echo $before_widget; 
     60 
     61                $title = $instance['link_title'] ? '<a href="' . esc_url( $link ) . '">' . esc_html( $title ) . '</a>' : esc_html( $title ); 
     62 
     63                echo $before_title . $title .$after_title;  
     64                ?> 
     65 
     66                <?php if ( bp_has_members( 'user_id=' . absint( $user_id ) . '&type=' . sanitize_text_field( $instance['friend_default'] ) . '&max=' . absint( $instance['max_friends'] ) . '&populate_extras=1' ) ) : ?> 
     67                        <div class="item-options" id="friends-list-options"> 
     68                                <a href="<?php bp_members_directory_permalink(); ?>" id="newest-friends" <?php if ( $instance['friend_default'] == 'newest' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></a> 
     69                                | <a href="<?php bp_members_directory_permalink(); ?>" id="recently-active-friends" <?php if ( $instance['friend_default'] == 'active' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></a> 
     70                                | <a href="<?php bp_members_directory_permalink(); ?>" id="popular-friends" <?php if ( $instance['friend_default'] == 'popular' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></a> 
     71                        </div> 
     72 
     73                        <ul id="friends-list" class="item-list"> 
     74                                <?php while ( bp_members() ) : bp_the_member(); ?> 
     75                                        <li class="vcard"> 
     76                                                <div class="item-avatar"> 
     77                                                        <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_avatar() ?></a> 
     78                                                </div> 
     79 
     80                                                <div class="item"> 
     81                                                        <div class="item-title fn"><a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_name() ?></a></div> 
     82                                                        <div class="item-meta"> 
     83                                                                <span class="activity"> 
     84                                                                <?php 
     85                                                                        if ( 'newest' == $instance['friend_default'] ) 
     86                                                                                bp_member_registered(); 
     87                                                                        if ( 'active' == $instance['friend_default'] ) 
     88                                                                                bp_member_last_active(); 
     89                                                                        if ( 'popular' == $instance['friend_default'] ) 
     90                                                                                bp_member_total_friend_count(); 
     91                                                                ?> 
     92                                                                </span> 
     93                                                        </div> 
     94                                                </div> 
     95                                        </li> 
     96 
     97                                <?php endwhile; ?> 
     98                        </ul> 
     99                        <?php wp_nonce_field( 'bp_core_widget_friends', '_wpnonce-friends' ); ?> 
     100                        <input type="hidden" name="friends_widget_max" id="friends_widget_max" value="<?php echo absint( $instance['max_friends'] ); ?>" /> 
     101 
     102                <?php else: ?> 
     103 
     104                        <div class="widget-error"> 
     105                                <?php _e( 'Sorry, no members were found.', 'buddypress' ); ?> 
     106                        </div> 
     107 
     108                <?php endif; ?> 
     109 
     110                <?php echo $after_widget; ?> 
     111        <?php 
     112        } 
     113 
     114        function update( $new_instance, $old_instance ) { 
     115                $instance = $old_instance; 
     116 
     117                $instance['max_friends']    = absint( $new_instance['max_friends'] ); 
     118                $instance['friend_default'] = sanitize_text_field( $new_instance['friend_default'] ); 
     119                $instance['link_title']     = (bool)$new_instance['link_title']; 
     120 
     121                return $instance; 
     122        } 
     123 
     124        function form( $instance ) { 
     125                $defaults = array( 
     126                        'max_friends'    => 5, 
     127                        'friend_default' => 'active', 
     128                        'link_title'     => false 
     129                ); 
     130                $instance = wp_parse_args( (array) $instance, $defaults ); 
     131 
     132                $max_friends    = $instance['max_friends']; 
     133                $friend_default = $instance['friend_default']; 
     134                $link_title     = (bool)$instance['link_title']; 
     135                ?> 
     136 
     137                <p><label for="<?php echo $this->get_field_name('link_title') ?>"><input type="checkbox" name="<?php echo $this->get_field_name('link_title') ?>" value="1" <?php checked( $link_title ) ?> /> <?php _e( 'Link widget title to Members directory', 'buddypress' ) ?></label></p> 
     138 
     139                <p><label for="bp-core-widget-friends-max"><?php _e( 'Max friends to show:', 'buddypress' ); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_friends' ); ?>" name="<?php echo $this->get_field_name( 'max_friends' ); ?>" type="text" value="<?php echo absint( $max_friends ); ?>" style="width: 30%" /></label></p> 
     140 
     141                <p> 
     142                        <label for="bp-core-widget-friends-default"><?php _e( 'Default friends to show:', 'buddypress' ); ?> 
     143                        <select name="<?php echo $this->get_field_name( 'friend_default' ) ?>"> 
     144                                <option value="newest" <?php selected( $friend_default, 'newest' ); ?>><?php _e( 'Newest', 'buddypress' ) ?></option> 
     145                                <option value="active" <?php selected( $friend_default, 'active' );?>><?php _e( 'Active', 'buddypress' ) ?></option> 
     146                                <option value="popular"  <?php selected( $friend_default, 'popular' ); ?>><?php _e( 'Popular', 'buddypress' ) ?></option> 
     147                        </select> 
     148                        </label> 
     149                </p> 
     150 
     151        <?php 
     152        } 
     153} 
     154 
     155/** Widget AJAX ******************/ 
     156 
     157function bp_core_ajax_widget_friends() { 
     158 
     159        global $bp; 
     160        check_ajax_referer( 'bp_core_widget_friends' ); 
     161 
     162        switch ( $_POST['filter'] ) { 
     163                case 'newest-friends': 
     164                        $type = 'newest'; 
     165                        break; 
     166 
     167                case 'recently-active-friends': 
     168                        $type = 'active'; 
     169                        break; 
     170 
     171                case 'popular-friends': 
     172                        $type = 'popular'; 
     173                        break; 
     174        } 
     175 
     176 
     177        $user_id = bp_displayed_user_id(); 
     178 
     179        if ( bp_has_members( 'user_id=' . absint( $user_id ) . '&type=' . $type . '&per_page=' . absint( $_POST['max-friends'] ) . '&max=' . absint( $_POST['max-friends'] ) . '&populate_extras=1' ) ) : ?> 
     180                <?php echo '0[[SPLIT]]'; // return valid result. TODO: remove this. ?> 
     181                <?php while ( bp_members() ) : bp_the_member(); ?> 
     182                        <li class="vcard"> 
     183                                <div class="item-avatar"> 
     184                                        <a href="<?php bp_member_permalink() ?>"><?php bp_member_avatar() ?></a> 
     185                                </div> 
     186 
     187                                <div class="item"> 
     188                                        <div class="item-title fn"><a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_name() ?></a></div> 
     189                                        <?php if ( 'active' == $type ) : ?> 
     190                                                <div class="item-meta"><span class="activity"><?php bp_member_last_active() ?></span></div> 
     191                                        <?php elseif ( 'newest' == $type ) : ?> 
     192                                                <div class="item-meta"><span class="activity"><?php bp_member_registered() ?></span></div> 
     193                                        <?php elseif ( bp_is_active( 'friends' ) ) : ?> 
     194                                                <div class="item-meta"><span class="activity"><?php bp_member_total_friend_count() ?></span></div> 
     195                                        <?php endif; ?> 
     196                                </div> 
     197                        </li> 
     198                <?php endwhile; ?> 
     199 
     200        <?php else: ?> 
     201                <?php echo "-1[[SPLIT]]<li>"; ?> 
     202                <?php _e( 'There were no members found, please try another filter.', 'buddypress' ) ?> 
     203                <?php echo "</li>"; ?> 
     204        <?php endif; 
     205} 
     206 
     207add_action( 'wp_ajax_widget_friends', 'bp_core_ajax_widget_friends' ); 
     208add_action( 'wp_ajax_nopriv_widget_friends', 'bp_core_ajax_widget_friends' ); 
     209 
  • bp-friends/js/widget-friends.js

     
     1jQuery(document).ready( function() { 
     2        jQuery(".widget div#friends-list-options a").on('click', 
     3                function() { 
     4                        var link = this; 
     5                        jQuery(link).addClass('loading'); 
     6 
     7                        jQuery(".widget div#friends-list-options a").removeClass("selected"); 
     8                        jQuery(this).addClass('selected'); 
     9 
     10                        jQuery.post( ajaxurl, { 
     11                                action: 'widget_friends', 
     12                                'cookie': encodeURIComponent(document.cookie), 
     13                                '_wpnonce': jQuery("input#_wpnonce-friends").val(), 
     14                                'max-friends': jQuery("input#friends_widget_max").val(), 
     15                                'filter': jQuery(this).attr('id') 
     16                        }, 
     17                        function(response) 
     18                        { 
     19                                jQuery(link).removeClass('loading'); 
     20                                friend_wiget_response(response); 
     21                        }); 
     22 
     23                        return false; 
     24                } 
     25        ); 
     26}); 
     27 
     28function friend_wiget_response(response) { 
     29        response = response.substr(0, response.length-1); 
     30        response = response.split('[[SPLIT]]'); 
     31 
     32        if ( response[0] != "-1" ) { 
     33                jQuery(".widget ul#friends-list").fadeOut(200, 
     34                        function() { 
     35                                jQuery(".widget ul#friends-list").html(response[1]); 
     36                                jQuery(".widget ul#friends-list").fadeIn(200); 
     37                        } 
     38                ); 
     39 
     40        } else { 
     41                jQuery(".widget ul#friends-list").fadeOut(200, 
     42                        function() { 
     43                                var message = '<p>' + response[1] + '</p>'; 
     44                                jQuery(".widget ul#friends-list").html(message); 
     45                                jQuery(".widget ul#friends-list").fadeIn(200); 
     46                        } 
     47                ); 
     48        } 
     49} 
     50 No newline at end of file 
  • bp-groups/bp-groups-widgets.php

     
    1313/* Register widgets for groups component */ 
    1414function groups_register_widgets() { 
    1515        add_action('widgets_init', create_function('', 'return register_widget("BP_Groups_Widget");') ); 
     16        add_action('widgets_init', create_function('', 'return register_widget("BP_Member_Groups_Widget");') ); 
    1617} 
    1718add_action( 'bp_register_widgets', 'groups_register_widgets' ); 
    1819 
     
    208209} 
    209210add_action( 'wp_ajax_widget_groups_list',        'groups_ajax_widget_groups_list' ); 
    210211add_action( 'wp_ajax_nopriv_widget_groups_list', 'groups_ajax_widget_groups_list' ); 
     212 
     213class BP_Member_Groups_Widget extends WP_Widget { 
     214 
     215        function __construct() { 
     216                $widget_ops = array( 
     217                        'description' => __( 'A dynamic list of recently active, popular, and newest groups of a loggedin/displayed member', 'buddypress' ), 
     218                        'classname' => 'widget_bp_member_groups_widget buddypress widget', 
     219                ); 
     220                parent::__construct( false, _x( '(BuddyPress) My Groups', 'widget name', 'buddypress' ), $widget_ops ); 
     221 
     222                if ( is_active_widget( false, false, $this->id_base ) && !is_admin() && !is_network_admin() ) { 
     223                        $min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; 
     224                        wp_enqueue_script( 'groups_widget_member_groups_list-js', BP_PLUGIN_URL . "bp-groups/js/widget-member-groups{$min}.js", array( 'jquery' ), bp_get_version() ); 
     225                } 
     226        } 
     227 
     228        function widget( $args, $instance ) { 
     229 
     230                global $bp; 
     231                extract( $args ); 
     232 
     233                if ( bp_displayed_user_domain() ) { 
     234                        $user_id = $bp->displayed_user->id; 
     235                        $link = str_replace( bp_displayed_user_domain(), bp_displayed_user_domain(), bp_get_groups_slug() ); 
     236                        $instance['title'] = sprintf( __( '%s Groups', 'buddypress' ), bp_get_displayed_user_fullname() ); 
     237 
     238                } elseif ( bp_loggedin_user_domain() ) { 
     239                        $user_id = $bp->loggedin_user->id; 
     240                        $link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ); 
     241                        $instance['title'] = __( 'My Groups', 'buddypress' ); 
     242 
     243                } else { 
     244                        return; 
     245                } 
     246 
     247                if ( empty( $instance['member_group_default'] ) ) 
     248                        $instance['member_group_default'] = 'popular'; 
     249 
     250                $title = apply_filters( 'widget_title', $instance['title'] ); 
     251 
     252                echo $before_widget; 
     253 
     254                $title = !empty( $instance['link_title'] ) ? '<a href="' . $link . '">' . $title . '</a>' : $title; 
     255 
     256                echo $before_title . $title . $after_title; ?> 
     257 
     258                <?php if ( bp_has_groups( 'user_id=' . $user_id . '&type=' . $instance['member_group_default'] . '&max=' . $instance['max_member_groups'] ) ) : ?> 
     259                        <div class="item-options" id="member-groups-list-options"> 
     260                                <a href="<?php bp_groups_directory_permalink(); ?>" id="newest-groups"<?php if ( $instance['member_group_default'] == 'newest' ) : ?> class="selected"<?php endif; ?>><?php _e("Newest", 'buddypress') ?></a> | 
     261                                <a href="<?php bp_groups_directory_permalink(); ?>" id="recently-active-groups"<?php if ( $instance['member_group_default'] == 'active' ) : ?> class="selected"<?php endif; ?>><?php _e("Active", 'buddypress') ?></a> | 
     262                                <a href="<?php bp_groups_directory_permalink(); ?>" id="popular-groups" <?php if ( $instance['member_group_default'] == 'popular' ) : ?> class="selected"<?php endif; ?>><?php _e("Popular", 'buddypress') ?></a> 
     263                        </div> 
     264 
     265                        <ul id="member-groups-list" class="item-list"> 
     266                                <?php while ( bp_groups() ) : bp_the_group(); ?> 
     267                                        <li> 
     268                                                <div class="item-avatar"> 
     269                                                        <a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_avatar_thumb() ?></a> 
     270                                                </div> 
     271 
     272                                                <div class="item"> 
     273                                                        <div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div> 
     274                                                        <div class="item-meta"> 
     275                                                                <span class="activity"> 
     276                                                                <?php 
     277                                                                        if ( 'newest' == $instance['member_group_default'] ) 
     278                                                                                printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() ); 
     279                                                                        if ( 'active' == $instance['member_group_default'] ) 
     280                                                                                printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); 
     281                                                                        else if ( 'popular' == $instance['member_group_default'] ) 
     282                                                                                bp_group_member_count(); 
     283                                                                ?> 
     284                                                                </span> 
     285                                                        </div> 
     286                                                </div> 
     287                                        </li> 
     288 
     289                                <?php endwhile; ?> 
     290                        </ul> 
     291                        <?php wp_nonce_field( 'groups_widget_member_groups_list', '_wpnonce-member-groups' ); ?> 
     292                        <input type="hidden" name="member_groups_widget_max" id="member_groups_widget_max" value="<?php echo esc_attr( $instance['max_member_groups'] ); ?>" /> 
     293 
     294                <?php else: ?> 
     295 
     296                        <div class="widget-error"> 
     297                                <?php _e('There are no groups to display.', 'buddypress') ?> 
     298                        </div> 
     299 
     300                <?php endif; ?> 
     301 
     302                <?php echo $after_widget; ?> 
     303        <?php 
     304        } 
     305 
     306        function update( $new_instance, $old_instance ) { 
     307                $instance = $old_instance; 
     308 
     309                $instance['max_member_groups']    = strip_tags( $new_instance['max_member_groups'] ); 
     310                $instance['member_group_default'] = strip_tags( $new_instance['member_group_default'] ); 
     311                $instance['link_title']    = (bool)$new_instance['link_title']; 
     312 
     313                return $instance; 
     314        } 
     315 
     316        function form( $instance ) { 
     317                $defaults = array( 
     318                        'max_member_groups'    => 5, 
     319                        'member_group_default' => 'active', 
     320                        'link_title'    => false 
     321                ); 
     322                $instance = wp_parse_args( (array) $instance, $defaults ); 
     323         
     324                $max_member_groups    = strip_tags( $instance['max_member_groups'] ); 
     325                $member_group_default = strip_tags( $instance['member_group_default'] ); 
     326                $link_title    = (bool)$instance['link_title']; 
     327                ?> 
     328 
     329                <p><label for="<?php echo $this->get_field_name('link_title') ?>"><input type="checkbox" name="<?php echo $this->get_field_name('link_title') ?>" value="1" <?php checked( $link_title ) ?> /> <?php _e( 'Link widget title to Groups directory', 'buddypress' ) ?></label></p> 
     330 
     331                <p><label for="bp-groups-widget-member-groups-max"><?php _e('Max groups to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_member_groups' ); ?>" name="<?php echo $this->get_field_name( 'max_member_groups' ); ?>" type="text" value="<?php echo esc_attr( $max_member_groups ); ?>" style="width: 30%" /></label></p> 
     332 
     333                <p> 
     334                        <label for="bp-groups-widget-member-groups-default"><?php _e('Default groups to show:', 'buddypress'); ?> 
     335                        <select name="<?php echo $this->get_field_name( 'member_group_default' ); ?>"> 
     336                                <option value="newest" <?php if ( $member_group_default == 'newest' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></option> 
     337                                <option value="active" <?php if ( $member_group_default == 'active' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></option> 
     338                                <option value="popular"  <?php if ( $member_group_default == 'popular' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></option> 
     339                        </select> 
     340                        </label> 
     341                </p> 
     342        <?php 
     343        } 
     344} 
     345 
     346function groups_ajax_widget_member_groups_list() { 
     347 
     348        check_ajax_referer('groups_widget_member_groups_list'); 
     349 
     350        switch ( $_POST['filter'] ) { 
     351                case 'newest-groups': 
     352                        $type = 'newest'; 
     353                break; 
     354                case 'recently-active-groups': 
     355                        $type = 'active'; 
     356                break; 
     357                case 'popular-groups': 
     358                        $type = 'popular'; 
     359                break; 
     360        } 
     361 
     362        if ( bp_has_groups( 'type=' . $type . '&per_page=' . $_POST['max_member_groups'] . '&max=' . $_POST['max_member_groups'] ) ) : ?> 
     363                <?php echo "0[[SPLIT]]"; ?> 
     364                <?php while ( bp_groups() ) : bp_the_group(); ?> 
     365                        <li> 
     366                                <div class="item-avatar"> 
     367                                        <a href="<?php bp_group_permalink() ?>"><?php bp_group_avatar_thumb() ?></a> 
     368                                </div> 
     369 
     370                                <div class="item"> 
     371                                        <div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div> 
     372                                        <div class="item-meta"> 
     373                                                <span class="activity"> 
     374                                                        <?php 
     375                                                        if ( 'newest-groups' == $_POST['filter'] ) { 
     376                                                                printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() ); 
     377                                                        } else if ( 'recently-active-groups' == $_POST['filter'] ) { 
     378                                                                printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); 
     379                                                        } else if ( 'popular-groups' == $_POST['filter'] ) { 
     380                                                                bp_group_member_count(); 
     381                                                        } 
     382                                                        ?> 
     383                                                </span> 
     384                                        </div> 
     385                                </div> 
     386                        </li> 
     387                <?php endwhile; ?> 
     388 
     389                <?php wp_nonce_field( 'groups_widget_member_groups_list', '_wpnonce-member-groups' ); ?> 
     390                <input type="hidden" name="member_groups_widget_max" id="member_groups_widget_max" value="<?php echo esc_attr( $_POST['max_member_groups'] ); ?>" /> 
     391 
     392        <?php else: ?> 
     393 
     394                <?php echo "-1[[SPLIT]]<li>" . __("No groups matched the current filter.", 'buddypress'); ?> 
     395 
     396        <?php endif; 
     397 
     398} 
     399add_action( 'wp_ajax_widget_member_groups_list',        'groups_ajax_widget_member_groups_list' ); 
     400add_action( 'wp_ajax_nopriv_widget_member_groups_list', 'groups_ajax_widget_member_groups_list' ); 
     401 No newline at end of file