Skip to:
Content

BuddyPress.org

Ticket #7448: bp-friends-template.php

File bp-friends-template.php, 22.8 KB (added by allianse, 8 years ago)

bp-friends-template.php

Line 
1<?php
2/**
3 * BuddyPress Friends Template Functions.
4 *
5 * @package BuddyPress
6 * @subpackage FriendsTemplate
7 * @since 1.5.0
8 */
9
10// Exit if accessed directly.
11defined( 'ABSPATH' ) || exit;
12
13/**
14 * Output the friends component slug.
15 *
16 * @since 1.5.0
17 *
18 */
19function bp_friends_slug() {
20        echo bp_get_friends_slug();
21}
22        /**
23         * Return the friends component slug.
24         *
25         * @since 1.5.0
26         *
27         * @return string
28         */
29        function bp_get_friends_slug() {
30
31                /**
32                 * Filters the friends component slug.
33                 *
34                 * @since 1.5.0
35                 *
36                 * @param string $value Friends component slug.
37                 */
38                return apply_filters( 'bp_get_friends_slug', buddypress()->friends->slug );
39        }
40
41/**
42 * Output the friends component root slug.
43 *
44 * @since 1.5.0
45 *
46 */
47function bp_friends_root_slug() {
48        echo bp_get_friends_root_slug();
49}
50        /**
51         * Return the friends component root slug.
52         *
53         * @since 1.5.0
54         *
55         * @return string
56         */
57        function bp_get_friends_root_slug() {
58
59                /**
60                 * Filters the friends component root slug.
61                 *
62                 * @since 1.5.0
63                 *
64                 * @param string $value Friends component root slug.
65                 */
66                return apply_filters( 'bp_get_friends_root_slug', buddypress()->friends->root_slug );
67        }
68
69/**
70 * Output a block of random friends.
71 *
72 * No longer used in BuddyPress.
73 *
74 * @todo Deprecate
75 */
76function bp_friends_random_friends() {
77
78        if ( !$friend_ids = wp_cache_get( 'friends_friend_ids_' . bp_displayed_user_id(), 'bp' ) ) {
79                $friend_ids = BP_Friends_Friendship::get_random_friends( bp_displayed_user_id() );
80                wp_cache_set( 'friends_friend_ids_' . bp_displayed_user_id(), $friend_ids, 'bp' );
81        } ?>
82
83        <div class="info-group">
84                <h4><?php bp_word_or_name( __( "My Friends", 'buddypress' ), __( "%s's Friends", 'buddypress' ) ) ?>  (<?php echo BP_Friends_Friendship::total_friend_count( bp_displayed_user_id() ) ?>) <span><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_friends_slug() ) ?>"><?php _e('See All', 'buddypress') ?></a></span></h4>
85
86                <?php if ( $friend_ids ) { ?>
87
88                        <ul class="horiz-gallery">
89
90                        <?php for ( $i = 0, $count = count( $friend_ids ); $i < $count; ++$i ) { ?>
91
92                                <li>
93                                        <a href="<?php echo bp_core_get_user_domain( $friend_ids[$i] ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $friend_ids[$i], 'type' => 'thumb' ) ) ?></a>
94                                        <h5><?php echo bp_core_get_userlink($friend_ids[$i]) ?></h5>
95                                </li>
96
97                        <?php } ?>
98
99                        </ul>
100
101                <?php } else { ?>
102
103                        <div id="message" class="info">
104                                <p><?php bp_word_or_name( __( "You haven't added any friend connections yet.", 'buddypress' ), __( "%s hasn't created any friend connections yet.", 'buddypress' ) ) ?></p>
105                        </div>
106
107                <?php } ?>
108
109                <div class="clear"></div>
110        </div>
111
112<?php
113}
114
115/**
116 * Pull up a group of random members, and display some profile data about them.
117 *
118 * This function is no longer used by BuddyPress core.
119 *
120 * @todo Deprecate
121 *
122 * @param int $total_members The number of members to retrieve.
123 */
124function bp_friends_random_members( $total_members = 5 ) {
125
126        if ( !$user_ids = wp_cache_get( 'friends_random_users', 'bp' ) ) {
127                $user_ids = BP_Core_User::get_users( 'random', $total_members );
128                wp_cache_set( 'friends_random_users', $user_ids, 'bp' );
129        }
130
131        ?>
132
133        <?php if ( $user_ids['users'] ) { ?>
134
135                <ul class="item-list" id="random-members-list">
136
137                <?php for ( $i = 0, $count = count( $user_ids['users'] ); $i < $count; ++$i ) { ?>
138
139                        <li>
140                                <a href="<?php echo bp_core_get_user_domain( $user_ids['users'][$i]->id ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $user_ids['users'][$i]->id, 'type' => 'thumb' ) ) ?></a>
141                                <h5><?php echo bp_core_get_userlink( $user_ids['users'][$i]->id ) ?></h5>
142
143                                <?php if ( bp_is_active( 'xprofile' ) ) { ?>
144
145                                        <?php $random_data = xprofile_get_random_profile_data( $user_ids['users'][$i]->id, true ); ?>
146
147                                        <div class="profile-data">
148                                                <p class="field-name"><?php echo $random_data[0]->name ?></p>
149
150                                                <?php echo $random_data[0]->value ?>
151
152                                        </div>
153
154                                <?php } ?>
155
156                                <div class="action">
157
158                                        <?php if ( bp_is_active( 'friends' ) ) { ?>
159
160                                                <?php bp_add_friend_button( $user_ids['users'][$i]->id ) ?>
161
162                                        <?php } ?>
163
164                                </div>
165                        </li>
166
167                <?php } ?>
168
169                </ul>
170
171        <?php } else { ?>
172
173                <div id="message" class="info">
174                        <p><?php _e( "There aren't enough site members to show a random sample just yet.", 'buddypress' ) ?></p>
175                </div>
176
177        <?php } ?>
178<?php
179}
180
181/**
182 * Display a Friends search form.
183 *
184 * No longer used in BuddyPress.
185 *
186 * @todo Deprecate
187 */
188function bp_friend_search_form() {
189
190        $action = bp_displayed_user_domain() . bp_get_friends_slug() . '/my-friends/search/';
191        $label  = __( 'Filter Friends', 'buddypress' ); ?>
192
193                <form action="<?php echo $action ?>" id="friend-search-form" method="post">
194
195                        <label for="friend-search-box" id="friend-search-label"><?php echo $label ?></label>
196                        <input type="search" name="friend-search-box" id="friend-search-box" value="<?php echo $value ?>"<?php echo $disabled ?> />
197
198                        <?php wp_nonce_field( 'friends_search', '_wpnonce_friend_search' ) ?>
199
200                        <input type="hidden" name="initiator" id="initiator" value="<?php echo esc_attr( bp_displayed_user_id() ) ?>" />
201
202                </form>
203
204        <?php
205}
206
207/**
208 * Output the "Add Friend" button in the member loop.
209 *
210 * @since 1.2.6
211 */
212function bp_member_add_friend_button() {
213        bp_add_friend_button( bp_get_member_user_id() );
214}
215add_action( 'bp_directory_members_actions', 'bp_member_add_friend_button' );
216
217/**
218 * Output the friend count for the current member in the loop.
219 *
220 * @since 1.2.0
221 */
222function bp_member_total_friend_count() {
223        echo bp_get_member_total_friend_count();
224}
225        /**
226         * Return the friend count for the current member in the loop.
227         *
228         * Return value is a string of the form "x friends".
229         *
230         * @since 1.2.0
231         *
232         * @return string A string of the form "x friends".
233         */
234        function bp_get_member_total_friend_count() {
235                global $members_template;
236
237                if ( 1 == (int) $members_template->member->total_friend_count ) {
238
239                        /**
240                         * Filters text used to denote total friend count.
241                         *
242                         * @since 1.2.0
243                         *
244                         * @param string $value String of the form "x friends".
245                         * @param int    $value Total friend count for current member in the loop.
246                         */
247                        return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friend', 'buddypress' ), (int) $members_template->member->total_friend_count ) );
248                } else {
249
250                        /** This filter is documented in bp-friends/bp-friends-template.php */
251                        return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friends', 'buddypress' ), (int) $members_template->member->total_friend_count ) );
252                }
253        }
254
255/**
256 * Output the ID of the current user in the friend request loop.
257 *
258 * @since 1.2.6
259 *
260 * @see bp_get_potential_friend_id() for a description of arguments.
261 *
262 * @param int $user_id See {@link bp_get_potential_friend_id()}.
263 */
264function bp_potential_friend_id( $user_id = 0 ) {
265        echo bp_get_potential_friend_id( $user_id );
266}
267        /**
268         * Return the ID of current user in the friend request loop.
269         *
270         * @since 1.2.6
271         *
272         * @global object $friends_template
273         *
274         * @param int $user_id Optional. If provided, the function will simply
275         *                     return this value.
276         * @return int ID of potential friend.
277         */
278        function bp_get_potential_friend_id( $user_id = 0 ) {
279                global $friends_template;
280
281                if ( empty( $user_id ) && isset( $friends_template->friendship->friend ) )
282                        $user_id = $friends_template->friendship->friend->id;
283                elseif ( empty( $user_id ) && !isset( $friends_template->friendship->friend ) )
284                        $user_id = bp_displayed_user_id();
285
286                /**
287                 * Filters the ID of current user in the friend request loop.
288                 *
289                 * @since 1.2.10
290                 *
291                 * @param int $user_id ID of current user in the friend request loop.
292                 */
293                return apply_filters( 'bp_get_potential_friend_id', (int) $user_id );
294        }
295
296/**
297 * Check whether a given user is a friend of the logged-in user.
298 *
299 * Returns - 'is_friend', 'not_friends', 'pending'.
300 *
301 * @since 1.2.6
302 *
303 * @param int $user_id ID of the potential friend. Default: the value of
304 *                     {@link bp_get_potential_friend_id()}.
305 * @return string 'is_friend', 'not_friends', or 'pending'.
306 */
307function bp_is_friend( $user_id = 0 ) {
308
309        if ( !is_user_logged_in() )
310                return false;
311
312        if ( empty( $user_id ) )
313                $user_id = bp_get_potential_friend_id( $user_id );
314
315        if ( bp_loggedin_user_id() == $user_id )
316                return false;
317
318        /**
319         * Filters the status of friendship between logged in user and given user.
320         *
321         * @since 1.2.10
322         *
323         * @param string $value String status of friendship. Possible values are 'is_friend', 'not_friends', 'pending'.
324         */
325        return apply_filters( 'bp_is_friend', friends_check_friendship_status( bp_loggedin_user_id(), $user_id ), $user_id );
326}
327
328/**
329 * Output the Add Friend button.
330 *
331 * @since 1.0.0
332 *
333 * @see bp_get_add_friend_button() for information on arguments.
334 *
335 * @param int      $potential_friend_id See {@link bp_get_add_friend_button()}.
336 * @param int|bool $friend_status       See {@link bp_get_add_friend_button()}.
337 */
338function bp_add_friend_button( $potential_friend_id = 0, $friend_status = false ) {
339        echo bp_get_add_friend_button( $potential_friend_id, $friend_status );
340}
341        /**
342         * Create the Add Friend button.
343         *
344         * @since 1.1.0
345         *
346         * @param int  $potential_friend_id ID of the user to whom the button
347         *                                  applies. Default: value of {@link bp_get_potential_friend_id()}.
348         * @param bool $friend_status       Not currently used.
349         * @return string HTML for the Add Friend button.
350         */
351        function bp_get_add_friend_button( $potential_friend_id = 0, $friend_status = false ) {
352
353                if ( empty( $potential_friend_id ) )
354                        $potential_friend_id = bp_get_potential_friend_id( $potential_friend_id );
355
356                $is_friend = bp_is_friend( $potential_friend_id );
357
358                if ( empty( $is_friend ) )
359                        return false;
360
361                switch ( $is_friend ) {
362                        case 'pending' :
363                                $button = array(
364                                        'id'                => 'pending',
365                                        'component'         => 'friends',
366                                        'must_be_logged_in' => true,
367                                        'block_self'        => true,
368                                        'wrapper_class'     => 'friendship-button pending_friend',
369                                        'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
370                                        'link_href'         => wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/cancel/' . $potential_friend_id . '/', 'friends_withdraw_friendship' ),
371                                        'link_text'         => __( 'Cancel Friendship Request', 'buddypress' ),
372                                        'link_id'           => 'friend-' . $potential_friend_id,
373                                        'link_rel'          => 'remove',
374                                        'link_class'        => 'friendship-button pending_friend requested'
375                                );
376                                break;
377
378                        case 'awaiting_response' :
379                                $button = array(
380                                        'id'                => 'awaiting_response',
381                                        'component'         => 'friends',
382                                        'must_be_logged_in' => true,
383                                        'block_self'        => true,
384                                        'wrapper_class'     => 'friendship-button awaiting_response_friend',
385                                        'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
386                                        'link_href'         => bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/',
387                                        'link_text'         => __( 'Friendship Requested', 'buddypress' ),
388                                        'link_id'           => 'friend-' . $potential_friend_id,
389                                        'link_rel'          => 'remove',
390                                        'link_class'        => 'friendship-button awaiting_response_friend requested'
391                                );
392                                break;
393
394                        case 'is_friend' :
395                                $button = array(
396                                        'id'                => 'is_friend',
397                                        'component'         => 'friends',
398                                        'must_be_logged_in' => true,
399                                        'block_self'        => false,
400                                        'wrapper_class'     => 'friendship-button is_friend',
401                                        'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
402                                        'link_href'         => wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/remove-friend/' . $potential_friend_id . '/', 'friends_remove_friend' ),
403                                        'link_text'         => __( 'Cancel Friendship', 'buddypress' ),
404                                        'link_id'           => 'friend-' . $potential_friend_id,
405                                        'link_rel'          => 'remove',
406                                        'link_class'        => 'friendship-button is_friend remove'
407                                );
408                                break;
409
410                        default:
411                                $button = array(
412                                        'id'                => 'not_friends',
413                                        'component'         => 'friends',
414                                        'must_be_logged_in' => true,
415                                        'block_self'        => true,
416                                        'wrapper_class'     => 'friendship-button not_friends',
417                                        'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
418                                        'link_href'         => wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/add-friend/' . $potential_friend_id . '/', 'friends_add_friend' ),
419                                        'link_text'         => __( 'Add Friend', 'buddypress' ),
420                                        'link_id'           => 'friend-' . $potential_friend_id,
421                                        'link_rel'          => 'add',
422                                        'link_class'        => 'friendship-button not_friends add'
423                                );
424                                break;
425                }
426
427                /**
428                 * Filters the HTML for the add friend button.
429                 *
430                 * @since 1.1.0
431                 *
432                 * @param string $button HTML markup for add friend button.
433                 */
434                return bp_get_button( apply_filters( 'bp_get_add_friend_button', $button ) );
435        }
436
437/**
438 * Get a comma-separated list of IDs of a user's friends.
439 *
440 * @since 1.2.0
441 *
442 * @param int $user_id Optional. Default: the displayed user's ID, or the
443 *                     logged-in user's ID.
444 * @return string|bool A comma-separated list of friend IDs if any are found,
445 *                     otherwise false.
446 */
447function bp_get_friend_ids( $user_id = 0 ) {
448
449        if ( empty( $user_id ) )
450                $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id();
451
452        $friend_ids = friends_get_friend_user_ids( $user_id );
453
454        if ( empty( $friend_ids ) )
455                return false;
456
457        return implode( ',', friends_get_friend_user_ids( $user_id ) );
458}
459
460/**
461 * Get a user's friendship requests.
462 *
463 * Note that we return a 0 if no pending requests are found. This is necessary
464 * because of the structure of the $include parameter in bp_has_members().
465 *
466 * @since 1.2.0
467 *
468 * @param int $user_id ID of the user whose requests are being retrieved.
469 *                     Defaults to displayed user.
470 * @return array|int An array of user IDs if found, or a 0 if none are found.
471 */
472function bp_get_friendship_requests( $user_id = 0 ) {
473        if ( !$user_id ) {
474                $user_id = bp_displayed_user_id();
475        }
476
477        if ( !$user_id ) {
478                return 0;
479        }
480
481        $requests = friends_get_friendship_request_user_ids( $user_id );
482
483        if ( !empty( $requests ) ) {
484                $requests = implode( ',', (array) $requests );
485        } else {
486                $requests = 0;
487        }
488
489        /**
490         * Filters the total pending friendship requests for a user.
491         *
492         * @since 1.2.0
493         * @since 2.6.0 Added the `$user_id` parameter.
494         *
495         * @param array|int $requests An array of user IDs if found, or a 0 if none are found.
496         * @param int       $user_id  ID of the queried user.
497         */
498        return apply_filters( 'bp_get_friendship_requests', $requests, $user_id );
499}
500
501/**
502 * Output the ID of the friendship between the logged-in user and the current user in the loop.
503 *
504 * @since 1.2.0
505 */
506function bp_friend_friendship_id() {
507        echo bp_get_friend_friendship_id();
508}
509        /**
510         * Return the ID of the friendship between the logged-in user and the current user in the loop.
511         *
512         * @since 1.2.0
513         *
514         * @return int ID of the friendship.
515         */
516        function bp_get_friend_friendship_id() {
517                global $members_template;
518
519                if ( !$friendship_id = wp_cache_get( 'friendship_id_' . $members_template->member->id . '_' . bp_loggedin_user_id() ) ) {
520                        $friendship_id = friends_get_friendship_id( $members_template->member->id, bp_loggedin_user_id() );
521                        wp_cache_set( 'friendship_id_' . $members_template->member->id . '_' . bp_loggedin_user_id(), $friendship_id, 'bp' );
522                }
523
524                /**
525                 * Filters the ID of the friendship between the logged in user and the current user in the loop.
526                 *
527                 * @since 1.2.0
528                 *
529                 * @param int $friendship_id ID of the friendship.
530                 */
531                return apply_filters( 'bp_get_friend_friendship_id', $friendship_id );
532        }
533
534/**
535 * Output the URL for accepting the current friendship request in the loop.
536 *
537 * @since 1.0.0
538 */
539function bp_friend_accept_request_link() {
540        echo bp_get_friend_accept_request_link();
541}
542        /**
543         * Return the URL for accepting the current friendship request in the loop.
544         *
545         * @since 1.0.0
546         *
547         * @return string accept-friendship URL.
548         */
549        function bp_get_friend_accept_request_link() {
550                global $members_template;
551
552                if ( !$friendship_id = wp_cache_get( 'friendship_id_' . $members_template->member->id . '_' . bp_loggedin_user_id() ) ) {
553                        $friendship_id = friends_get_friendship_id( $members_template->member->id, bp_loggedin_user_id() );
554                        wp_cache_set( 'friendship_id_' . $members_template->member->id . '_' . bp_loggedin_user_id(), $friendship_id, 'bp' );
555                }
556
557                /**
558                 * Filters the URL for accepting the current friendship request in the loop.
559                 *
560                 * @since 1.0.0
561                 * @since 2.6.0 Added the `$friendship_id` parameter.
562                 *
563                 * @param string $value         Accept-friendship URL.
564                 * @param int    $friendship_id ID of the friendship.
565                 */
566                /**
567                 * ORIGINAL SCRIPT
568                 */
569                 //return apply_filters( 'bp_get_friend_accept_request_link', wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/accept/' . $friendship_id, 'friends_accept_friendship' ), $friendship_id );
570               
571                /**
572                 * UPDATED SCRIPT (23-FEB-2017)
573                 * To avoid the Accept request URL issue
574                 */
575                 return apply_filters( 'bp_get_friend_accept_request_link', wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/accept/' . $friendship_id.'/', 'friends_accept_friendship' ), $friendship_id );
576        }
577
578/**
579 * Output the URL for rejecting the current friendship request in the loop.
580 *
581 * @since 1.0.0
582 */
583function bp_friend_reject_request_link() {
584        echo bp_get_friend_reject_request_link();
585}
586        /**
587         * Return the URL for rejecting the current friendship request in the loop.
588         *
589         * @since 1.0.0
590         *
591         * @return string reject-friendship URL.
592         */
593        function bp_get_friend_reject_request_link() {
594                global $members_template;
595
596                if ( !$friendship_id = wp_cache_get( 'friendship_id_' . $members_template->member->id . '_' . bp_loggedin_user_id() ) ) {
597                        $friendship_id = friends_get_friendship_id( $members_template->member->id, bp_loggedin_user_id() );
598                        wp_cache_set( 'friendship_id_' . $members_template->member->id . '_' . bp_loggedin_user_id(), $friendship_id, 'bp' );
599                }
600
601                /**
602                 * Filters the URL for rejecting the current friendship request in the loop.
603                 *
604                 * @since 1.0.0
605                 * @since 2.6.0 Added the `$friendship_id` parameter.
606                 *
607                 * @param string $value         Reject-friendship URL.
608                 * @param int    $friendship_id ID of the friendship.
609                 */
610                return apply_filters( 'bp_get_friend_reject_request_link', wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/reject/' . $friendship_id, 'friends_reject_friendship' ), $friendship_id );
611        }
612
613/**
614 * Output the total friend count for a given user.
615 *
616 * @since 1.2.0
617 *
618 * @param int $user_id See {@link friends_get_total_friend_count()}.
619 */
620function bp_total_friend_count( $user_id = 0 ) {
621        echo bp_get_total_friend_count( $user_id );
622}
623        /**
624         * Return the total friend count for a given user.
625         *
626         * @since 1.2.0
627         *
628         * @param int $user_id See {@link friends_get_total_friend_count()}.
629         * @return int Total friend count.
630         */
631        function bp_get_total_friend_count( $user_id = 0 ) {
632
633                /**
634                 * Filters the total friend count for a given user.
635                 *
636                 * @since 1.2.0
637                 * @since 2.6.0 Added the `$user_id` parameter.
638                 *
639                 * @param int $value   Total friend count.
640                 * @param int $user_id ID of the queried user.
641                 */
642                return apply_filters( 'bp_get_total_friend_count', friends_get_total_friend_count( $user_id ), $user_id );
643        }
644        add_filter( 'bp_get_total_friend_count', 'bp_core_number_format' );
645
646/**
647 * Output the total friendship request count for a given user.
648 *
649 * @since 1.2.0
650 *
651 * @see bp_friend_get_total_requests_count() for description of arguments.
652 *
653 * @param int $user_id See {@link bp_friend_get_total_requests_count().
654 */
655function bp_friend_total_requests_count( $user_id = 0 ) {
656        echo bp_friend_get_total_requests_count( $user_id );
657}
658        /**
659         * Return the total friendship request count for a given user.
660         *
661         * @since 1.2.0
662         *
663         * @param int $user_id ID of the user whose requests are being counted.
664         *                     Default: ID of the logged-in user.
665         * @return int Friend count.
666         */
667        function bp_friend_get_total_requests_count( $user_id = 0 ) {
668                if ( empty( $user_id ) )
669                        $user_id = bp_loggedin_user_id();
670
671                /**
672                 * Filters the total friendship request count for a given user.
673                 *
674                 * @since 1.2.0
675                 * @since 2.6.0 Added the `$user_id` parameter.
676                 *
677                 * @param int $value   Friendship request count.
678                 * @param int $user_id ID of the queried user.
679                 */
680                return apply_filters( 'bp_friend_get_total_requests_count', count( BP_Friends_Friendship::get_friend_user_ids( $user_id, true ) ), $user_id );
681        }
682
683/** Stats **********************************************************************/
684
685/**
686 * Display the number of friends in user's profile.
687 *
688 * @since 2.0.0
689 *
690 * @param array|string $args before|after|user_id.
691 */
692function bp_friends_profile_stats( $args = '' ) {
693        echo bp_friends_get_profile_stats( $args );
694}
695add_action( 'bp_members_admin_user_stats', 'bp_friends_profile_stats', 7, 1 );
696
697/**
698 * Return the number of friends in user's profile.
699 *
700 * @since 2.0.0
701 *
702 * @param array|string $args before|after|user_id.
703 * @return string HTML for stats output.
704 */
705function bp_friends_get_profile_stats( $args = '' ) {
706
707        // Parse the args.
708        $r = bp_parse_args( $args, array(
709                'before'  => '<li class="bp-friends-profile-stats">',
710                'after'   => '</li>',
711                'user_id' => bp_displayed_user_id(),
712                'friends' => 0,
713                'output'  => ''
714        ), 'friends_get_profile_stats' );
715
716        // Allow completely overloaded output.
717        if ( empty( $r['output'] ) ) {
718
719                // Only proceed if a user ID was passed.
720                if ( ! empty( $r['user_id'] ) ) {
721
722                        // Get the user's friends.
723                        if ( empty( $r['friends'] ) ) {
724                                $r['friends'] = absint( friends_get_total_friend_count( $r['user_id'] ) );
725                        }
726
727                        // If friends exist, show some formatted output.
728                        $r['output'] = $r['before'] . sprintf( _n( '%s friend', '%s friends', $r['friends'], 'buddypress' ), '<strong>' . $r['friends'] . '</strong>' ) . $r['after'];
729                }
730        }
731
732        /**
733         * Filters the number of friends in user's profile.
734         *
735         * @since 2.0.0
736         *
737         * @param string $value Formatted string displaying total friends count.
738         * @param array  $r     Array of arguments for string formatting and output.
739         */
740        return apply_filters( 'bp_friends_get_profile_stats', $r['output'], $r );
741}