1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * BuddyPress Activity Template Functions |
---|
5 | * |
---|
6 | * @package BuddyPress |
---|
7 | * @subpackage ActivityTemplate |
---|
8 | */ |
---|
9 | |
---|
10 | // Exit if accessed directly |
---|
11 | if ( !defined( 'ABSPATH' ) ) exit; |
---|
12 | |
---|
13 | /** |
---|
14 | * Output the activity component slug |
---|
15 | * |
---|
16 | * @since BuddyPress (1.5) |
---|
17 | * |
---|
18 | * @uses bp_get_activity_slug() |
---|
19 | */ |
---|
20 | function bp_activity_slug() { |
---|
21 | echo bp_get_activity_slug(); |
---|
22 | } |
---|
23 | /** |
---|
24 | * Return the activity component slug |
---|
25 | * |
---|
26 | * @since BuddyPress (1.5) |
---|
27 | * |
---|
28 | * @global object $bp BuddyPress global settings |
---|
29 | * @uses apply_filters() To call the 'bp_get_activity_slug' hook |
---|
30 | */ |
---|
31 | function bp_get_activity_slug() { |
---|
32 | global $bp; |
---|
33 | return apply_filters( 'bp_get_activity_slug', $bp->activity->slug ); |
---|
34 | } |
---|
35 | |
---|
36 | /** |
---|
37 | * Output the activity component root slug |
---|
38 | * |
---|
39 | * @since BuddyPress (1.5) |
---|
40 | * |
---|
41 | * @uses bp_get_activity_root_slug() |
---|
42 | */ |
---|
43 | function bp_activity_root_slug() { |
---|
44 | echo bp_get_activity_root_slug(); |
---|
45 | } |
---|
46 | /** |
---|
47 | * Return the activity component root slug |
---|
48 | * |
---|
49 | * @since BuddyPress (1.5) |
---|
50 | * |
---|
51 | * @global object $bp BuddyPress global settings |
---|
52 | * @uses apply_filters() To call the 'bp_get_activity_root_slug' hook |
---|
53 | */ |
---|
54 | function bp_get_activity_root_slug() { |
---|
55 | global $bp; |
---|
56 | return apply_filters( 'bp_get_activity_root_slug', $bp->activity->root_slug ); |
---|
57 | } |
---|
58 | |
---|
59 | /** |
---|
60 | * Output member directory permalink |
---|
61 | * |
---|
62 | * @since BuddyPress (1.5) |
---|
63 | * |
---|
64 | * @uses bp_get_activity_directory_permalink() |
---|
65 | */ |
---|
66 | function bp_activity_directory_permalink() { |
---|
67 | echo bp_get_activity_directory_permalink(); |
---|
68 | } |
---|
69 | /** |
---|
70 | * Return member directory permalink |
---|
71 | * |
---|
72 | * @since BuddyPress (1.5) |
---|
73 | * |
---|
74 | * @uses traisingslashit() |
---|
75 | * @uses bp_get_root_domain() |
---|
76 | * @uses bp_get_activity_root_slug() |
---|
77 | * @uses apply_filters() To call the 'bp_get_activity_directory_permalink' hook |
---|
78 | * |
---|
79 | * @return string Activity directory permalink |
---|
80 | */ |
---|
81 | function bp_get_activity_directory_permalink() { |
---|
82 | return apply_filters( 'bp_get_activity_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_activity_root_slug() ) ); |
---|
83 | } |
---|
84 | |
---|
85 | /** |
---|
86 | * The main activity template loop |
---|
87 | * |
---|
88 | * This is responsible for loading a group of activity items and displaying them |
---|
89 | * |
---|
90 | * @since BuddyPress (1.0) |
---|
91 | */ |
---|
92 | class BP_Activity_Template { |
---|
93 | var $current_activity = -1; |
---|
94 | var $activity_count; |
---|
95 | var $total_activity_count; |
---|
96 | var $activities; |
---|
97 | var $activity; |
---|
98 | |
---|
99 | var $in_the_loop; |
---|
100 | |
---|
101 | var $pag_page; |
---|
102 | var $pag_num; |
---|
103 | var $pag_links; |
---|
104 | |
---|
105 | var $full_name; |
---|
106 | |
---|
107 | /** |
---|
108 | * Constructor method |
---|
109 | * |
---|
110 | * See definition of $defaults below, as well as $defaults in bp_has_activities(), for |
---|
111 | * description of $args array |
---|
112 | * |
---|
113 | * @param array $args |
---|
114 | */ |
---|
115 | function __construct( $args ) { |
---|
116 | global $bp; |
---|
117 | |
---|
118 | // Backward compatibility with old method of passing arguments |
---|
119 | if ( !is_array( $args ) || func_num_args() > 1 ) { |
---|
120 | _deprecated_argument( __METHOD__, '1.6', sprintf( __( 'Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress' ), __METHOD__, __FILE__ ) ); |
---|
121 | |
---|
122 | $old_args_keys = array( |
---|
123 | 0 => 'page', |
---|
124 | 1 => 'per_page', |
---|
125 | 2 => 'max', |
---|
126 | 3 => 'include', |
---|
127 | 4 => 'sort', |
---|
128 | 5 => 'filter', |
---|
129 | 6 => 'search_terms', |
---|
130 | 7 => 'display_comments', |
---|
131 | 8 => 'show_hidden', |
---|
132 | 9 => 'exclude', |
---|
133 | 10 => 'in', |
---|
134 | 11 => 'spam', |
---|
135 | 12 => 'page_arg' |
---|
136 | ); |
---|
137 | |
---|
138 | $func_args = func_get_args(); |
---|
139 | $args = bp_core_parse_args_array( $old_args_keys, $func_args ); |
---|
140 | } |
---|
141 | |
---|
142 | $defaults = array( |
---|
143 | 'page' => 1, |
---|
144 | 'per_page' => 20, |
---|
145 | 'page_arg' => 'acpage', |
---|
146 | 'max' => false, |
---|
147 | 'sort' => false, |
---|
148 | 'include' => false, |
---|
149 | 'exclude' => false, |
---|
150 | 'in' => false, |
---|
151 | 'filter' => false, |
---|
152 | 'search_terms' => false, |
---|
153 | 'display_comments' => 'threaded', |
---|
154 | 'show_hidden' => false, |
---|
155 | 'spam' => 'ham_only', |
---|
156 | ); |
---|
157 | $r = wp_parse_args( $args, $defaults ); |
---|
158 | extract( $r ); |
---|
159 | |
---|
160 | $this->pag_page = isset( $_REQUEST[$page_arg] ) ? intval( $_REQUEST[$page_arg] ) : $page; |
---|
161 | $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; |
---|
162 | |
---|
163 | // Check if blog/forum replies are disabled |
---|
164 | $this->disable_blogforum_replies = isset( $bp->site_options['bp-disable-blogforum-comments'] ) ? $bp->site_options['bp-disable-blogforum-comments'] : false; |
---|
165 | |
---|
166 | // Get an array of the logged in user's favorite activities |
---|
167 | $this->my_favs = maybe_unserialize( bp_get_user_meta( bp_loggedin_user_id(), 'bp_favorite_activities', true ) ); |
---|
168 | |
---|
169 | // Fetch specific activity items based on ID's |
---|
170 | if ( !empty( $include ) ) |
---|
171 | $this->activities = bp_activity_get_specific( array( 'activity_ids' => explode( ',', $include ), 'max' => $max, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'sort' => $sort, 'display_comments' => $display_comments, 'show_hidden' => $show_hidden, 'spam' => $spam ) ); |
---|
172 | |
---|
173 | // Fetch all activity items |
---|
174 | else |
---|
175 | $this->activities = bp_activity_get( array( 'display_comments' => $display_comments, 'max' => $max, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'sort' => $sort, 'search_terms' => $search_terms, 'filter' => $filter, 'show_hidden' => $show_hidden, 'exclude' => $exclude, 'in' => $in, 'spam' => $spam ) ); |
---|
176 | |
---|
177 | if ( !$max || $max >= (int) $this->activities['total'] ) |
---|
178 | $this->total_activity_count = (int) $this->activities['total']; |
---|
179 | else |
---|
180 | $this->total_activity_count = (int) $max; |
---|
181 | |
---|
182 | $this->activities = $this->activities['activities']; |
---|
183 | |
---|
184 | if ( $max ) { |
---|
185 | if ( $max >= count($this->activities) ) { |
---|
186 | $this->activity_count = count( $this->activities ); |
---|
187 | } else { |
---|
188 | $this->activity_count = (int) $max; |
---|
189 | } |
---|
190 | } else { |
---|
191 | $this->activity_count = count( $this->activities ); |
---|
192 | } |
---|
193 | |
---|
194 | $this->full_name = bp_get_displayed_user_fullname(); |
---|
195 | |
---|
196 | // Fetch parent content for activity comments so we do not have to query in the loop |
---|
197 | foreach ( (array) $this->activities as $activity ) { |
---|
198 | if ( 'activity_comment' != $activity->type ) |
---|
199 | continue; |
---|
200 | |
---|
201 | $parent_ids[] = $activity->item_id; |
---|
202 | } |
---|
203 | |
---|
204 | if ( !empty( $parent_ids ) ) |
---|
205 | $activity_parents = bp_activity_get_specific( array( 'activity_ids' => $parent_ids ) ); |
---|
206 | |
---|
207 | if ( !empty( $activity_parents['activities'] ) ) { |
---|
208 | foreach( $activity_parents['activities'] as $parent ) |
---|
209 | $this->activity_parents[$parent->id] = $parent; |
---|
210 | |
---|
211 | unset( $activity_parents ); |
---|
212 | } |
---|
213 | |
---|
214 | if ( (int) $this->total_activity_count && (int) $this->pag_num ) { |
---|
215 | $this->pag_links = paginate_links( array( |
---|
216 | 'base' => add_query_arg( $page_arg, '%#%' ), |
---|
217 | 'format' => '', |
---|
218 | 'total' => ceil( (int) $this->total_activity_count / (int) $this->pag_num ), |
---|
219 | 'current' => (int) $this->pag_page, |
---|
220 | 'prev_text' => _x( '←', 'Activity pagination previous text', 'buddypress' ), |
---|
221 | 'next_text' => _x( '→', 'Activity pagination next text', 'buddypress' ), |
---|
222 | 'mid_size' => 1 |
---|
223 | ) ); |
---|
224 | } |
---|
225 | } |
---|
226 | |
---|
227 | function has_activities() { |
---|
228 | if ( $this->activity_count ) |
---|
229 | return true; |
---|
230 | |
---|
231 | return false; |
---|
232 | } |
---|
233 | |
---|
234 | function next_activity() { |
---|
235 | $this->current_activity++; |
---|
236 | $this->activity = $this->activities[$this->current_activity]; |
---|
237 | |
---|
238 | return $this->activity; |
---|
239 | } |
---|
240 | |
---|
241 | function rewind_activities() { |
---|
242 | $this->current_activity = -1; |
---|
243 | if ( $this->activity_count > 0 ) { |
---|
244 | $this->activity = $this->activities[0]; |
---|
245 | } |
---|
246 | } |
---|
247 | |
---|
248 | function user_activities() { |
---|
249 | if ( $this->current_activity + 1 < $this->activity_count ) { |
---|
250 | return true; |
---|
251 | } elseif ( $this->current_activity + 1 == $this->activity_count ) { |
---|
252 | do_action('activity_loop_end'); |
---|
253 | // Do some cleaning up after the loop |
---|
254 | $this->rewind_activities(); |
---|
255 | } |
---|
256 | |
---|
257 | $this->in_the_loop = false; |
---|
258 | return false; |
---|
259 | } |
---|
260 | |
---|
261 | function the_activity() { |
---|
262 | |
---|
263 | $this->in_the_loop = true; |
---|
264 | $this->activity = $this->next_activity(); |
---|
265 | |
---|
266 | if ( is_array( $this->activity ) ) |
---|
267 | $this->activity = (object) $this->activity; |
---|
268 | |
---|
269 | if ( $this->current_activity == 0 ) // loop has just started |
---|
270 | do_action('activity_loop_start'); |
---|
271 | } |
---|
272 | } |
---|
273 | |
---|
274 | /** |
---|
275 | * Initializes the activity loop. |
---|
276 | * |
---|
277 | * Based on the $args passed, bp_has_activities() populates the $activities_template global. |
---|
278 | * |
---|
279 | * @since BuddyPress (1.0) |
---|
280 | * |
---|
281 | * @param array $args Arguments for limiting the contents of the activity loop. Can be passed as an associative array or as a URL argument string |
---|
282 | * |
---|
283 | * @global object $activities_template {@link BP_Activity_Template} |
---|
284 | * @global object $bp BuddyPress global settings |
---|
285 | * @uses groups_is_user_member() |
---|
286 | * @uses bp_current_action() |
---|
287 | * @uses bp_is_current_action() |
---|
288 | * @uses bp_get_activity_slug() |
---|
289 | * @uses bp_action_variable() |
---|
290 | * @uses wp_parse_args() |
---|
291 | * @uses bp_is_active() |
---|
292 | * @uses friends_get_friend_user_ids() |
---|
293 | * @uses groups_get_user_groups() |
---|
294 | * @uses bp_activity_get_user_favorites() |
---|
295 | * @uses apply_filters() To call the 'bp_has_activities' hook |
---|
296 | * |
---|
297 | * @return bool Returns true when activities are found |
---|
298 | */ |
---|
299 | function bp_has_activities( $args = '' ) { |
---|
300 | global $activities_template, $bp; |
---|
301 | |
---|
302 | /*** |
---|
303 | * Set the defaults based on the current page. Any of these will be overridden |
---|
304 | * if arguments are directly passed into the loop. Custom plugins should always |
---|
305 | * pass their parameters directly to the loop. |
---|
306 | */ |
---|
307 | $user_id = false; |
---|
308 | $include = false; |
---|
309 | $exclude = false; |
---|
310 | $in = false; |
---|
311 | $show_hidden = false; |
---|
312 | $object = false; |
---|
313 | $primary_id = false; |
---|
314 | |
---|
315 | // User filtering |
---|
316 | if ( bp_displayed_user_id() ) |
---|
317 | $user_id = bp_displayed_user_id(); |
---|
318 | |
---|
319 | // Group filtering |
---|
320 | if ( !empty( $bp->groups->current_group ) ) { |
---|
321 | $object = $bp->groups->id; |
---|
322 | $primary_id = $bp->groups->current_group->id; |
---|
323 | |
---|
324 | if ( ( 'public' != $bp->groups->current_group->status ) && ( groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) || bp_current_user_can( 'bp_moderate' ) ) ) |
---|
325 | $show_hidden = true; |
---|
326 | } |
---|
327 | |
---|
328 | // The default scope should recognize custom slugs |
---|
329 | if ( array_key_exists( bp_current_action(), (array) $bp->loaded_components ) ) { |
---|
330 | $scope = $bp->loaded_components[bp_current_action()]; |
---|
331 | } |
---|
332 | else |
---|
333 | $scope = bp_current_action(); |
---|
334 | |
---|
335 | // Support for permalinks on single item pages: /groups/my-group/activity/124/ |
---|
336 | if ( bp_is_current_action( bp_get_activity_slug() ) ) |
---|
337 | $include = bp_action_variable( 0 ); |
---|
338 | |
---|
339 | // Note: any params used for filtering can be a single value, or multiple values comma separated. |
---|
340 | $defaults = array( |
---|
341 | 'display_comments' => 'threaded', // false for none, stream/threaded - show comments in the stream or threaded under items |
---|
342 | 'include' => $include, // pass an activity_id or string of IDs comma-separated |
---|
343 | 'exclude' => $exclude, // pass an activity_id or string of IDs comma-separated |
---|
344 | 'in' => $in, // comma-separated list or array of activity IDs among which to search |
---|
345 | 'sort' => 'DESC', // sort DESC or ASC |
---|
346 | 'page' => 1, // which page to load |
---|
347 | 'per_page' => 20, // number of items per page |
---|
348 | 'max' => false, // max number to return |
---|
349 | 'show_hidden' => $show_hidden, // Show activity items that are hidden site-wide? |
---|
350 | 'spam' => 'ham_only', // Hide spammed items |
---|
351 | |
---|
352 | 'page_arg' => 'acpage', // See https://buddypress.trac.wordpress.org/ticket/3679 |
---|
353 | |
---|
354 | // Scope - pre-built activity filters for a user (friends/groups/favorites/mentions) |
---|
355 | 'scope' => $scope, |
---|
356 | |
---|
357 | // Filtering |
---|
358 | 'user_id' => $user_id, // user_id to filter on |
---|
359 | 'object' => $object, // object to filter on e.g. groups, profile, status, friends |
---|
360 | 'action' => false, // action to filter on e.g. activity_update, new_forum_post, profile_updated |
---|
361 | 'primary_id' => $primary_id, // object ID to filter on e.g. a group_id or forum_id or blog_id etc. |
---|
362 | 'secondary_id' => false, // secondary object ID to filter on e.g. a post_id |
---|
363 | |
---|
364 | // Searching |
---|
365 | 'search_terms' => false // specify terms to search on |
---|
366 | ); |
---|
367 | |
---|
368 | $r = wp_parse_args( $args, $defaults ); |
---|
369 | extract( $r ); |
---|
370 | |
---|
371 | if ( empty( $search_terms ) && ! empty( $_REQUEST['s'] ) ) |
---|
372 | $search_terms = $_REQUEST['s']; |
---|
373 | |
---|
374 | // If you have passed a "scope" then this will override any filters you have passed. |
---|
375 | if ( 'just-me' == $scope || 'friends' == $scope || 'groups' == $scope || 'favorites' == $scope || 'mentions' == $scope ) { |
---|
376 | if ( 'just-me' == $scope ) |
---|
377 | $display_comments = 'stream'; |
---|
378 | |
---|
379 | // determine which user_id applies |
---|
380 | if ( empty( $user_id ) ) |
---|
381 | $user_id = bp_displayed_user_id() ? bp_displayed_user_id() : bp_loggedin_user_id(); |
---|
382 | |
---|
383 | // are we displaying user specific activity? |
---|
384 | if ( is_numeric( $user_id ) ) { |
---|
385 | $show_hidden = ( $user_id == bp_loggedin_user_id() && $scope != 'friends' ) ? 1 : 0; |
---|
386 | |
---|
387 | switch ( $scope ) { |
---|
388 | case 'friends': |
---|
389 | if ( bp_is_active( 'friends' ) ) |
---|
390 | $friends = friends_get_friend_user_ids( $user_id ); |
---|
391 | if ( empty( $friends ) ) |
---|
392 | return false; |
---|
393 | |
---|
394 | $user_id = implode( ',', (array) $friends ); |
---|
395 | break; |
---|
396 | case 'groups': |
---|
397 | if ( bp_is_active( 'groups' ) ) { |
---|
398 | $groups = groups_get_user_groups( $user_id ); |
---|
399 | if ( empty( $groups['groups'] ) ) |
---|
400 | return false; |
---|
401 | |
---|
402 | $object = $bp->groups->id; |
---|
403 | $primary_id = implode( ',', (array) $groups['groups'] ); |
---|
404 | |
---|
405 | $user_id = 0; |
---|
406 | } |
---|
407 | break; |
---|
408 | case 'favorites': |
---|
409 | $favs = bp_activity_get_user_favorites( $user_id ); |
---|
410 | if ( empty( $favs ) ) |
---|
411 | return false; |
---|
412 | |
---|
413 | $in = implode( ',', (array) $favs ); |
---|
414 | $display_comments = true; |
---|
415 | $user_id = 0; |
---|
416 | break; |
---|
417 | case 'mentions': |
---|
418 | |
---|
419 | // Start search at @ symbol and stop search at closing tag delimiter. |
---|
420 | $search_terms = '@' . bp_core_get_username( $user_id ) . '<'; |
---|
421 | $display_comments = 'stream'; |
---|
422 | $user_id = 0; |
---|
423 | break; |
---|
424 | } |
---|
425 | } |
---|
426 | } |
---|
427 | |
---|
428 | // Do not exceed the maximum per page |
---|
429 | if ( !empty( $max ) && ( (int) $per_page > (int) $max ) ) |
---|
430 | $per_page = $max; |
---|
431 | |
---|
432 | // Support for basic filters in earlier BP versions is disabled by default. To enable, put |
---|
433 | // add_filter( 'bp_activity_enable_afilter_support', '__return_true' ); |
---|
434 | // into bp-custom.php or your theme's functions.php |
---|
435 | if ( isset( $_GET['afilter'] ) && apply_filters( 'bp_activity_enable_afilter_support', false ) ) |
---|
436 | $filter = array( 'object' => $_GET['afilter'] ); |
---|
437 | else if ( !empty( $user_id ) || !empty( $object ) || !empty( $action ) || !empty( $primary_id ) || !empty( $secondary_id ) ) |
---|
438 | $filter = array( 'user_id' => $user_id, 'object' => $object, 'action' => $action, 'primary_id' => $primary_id, 'secondary_id' => $secondary_id ); |
---|
439 | else |
---|
440 | $filter = false; |
---|
441 | |
---|
442 | // If specific activity items have been requested, override the $hide_spam argument. This prevents backpat errors with AJAX. |
---|
443 | if ( !empty( $include ) && ( 'ham_only' == $spam ) ) |
---|
444 | $spam = 'all'; |
---|
445 | |
---|
446 | $template_args = array( |
---|
447 | 'page' => $page, |
---|
448 | 'per_page' => $per_page, |
---|
449 | 'page_arg' => $page_arg, |
---|
450 | 'max' => $max, |
---|
451 | 'sort' => $sort, |
---|
452 | 'include' => $include, |
---|
453 | 'exclude' => $exclude, |
---|
454 | 'in' => $in, |
---|
455 | 'filter' => $filter, |
---|
456 | 'search_terms' => $search_terms, |
---|
457 | 'display_comments' => $display_comments, |
---|
458 | 'show_hidden' => $show_hidden, |
---|
459 | 'spam' => $spam |
---|
460 | ); |
---|
461 | |
---|
462 | $activities_template = new BP_Activity_Template( $template_args ); |
---|
463 | |
---|
464 | return apply_filters( 'bp_has_activities', $activities_template->has_activities(), $activities_template, $template_args ); |
---|
465 | } |
---|
466 | |
---|
467 | /** |
---|
468 | * Determines if there are still activities left in the loop. |
---|
469 | * |
---|
470 | * @since BuddyPress (1.0) |
---|
471 | * |
---|
472 | * @global object $activities_template {@link BP_Activity_Template} |
---|
473 | * @uses BP_Activity_Template::user_activities() {@link BP_Activity_Template::user_activities()} |
---|
474 | * |
---|
475 | * @return bool Returns true when activities are found |
---|
476 | */ |
---|
477 | function bp_activities() { |
---|
478 | global $activities_template; |
---|
479 | return $activities_template->user_activities(); |
---|
480 | } |
---|
481 | |
---|
482 | /** |
---|
483 | * Gets the current activity object in the loop |
---|
484 | * |
---|
485 | * @since BuddyPress (1.0) |
---|
486 | * |
---|
487 | * @global object $activities_template {@link BP_Activity_Template} |
---|
488 | * @uses BP_Activity_Template::the_activity() {@link BP_Activity_Template::the_activity()} |
---|
489 | * |
---|
490 | * @return object The current activity within the loop |
---|
491 | */ |
---|
492 | function bp_the_activity() { |
---|
493 | global $activities_template; |
---|
494 | return $activities_template->the_activity(); |
---|
495 | } |
---|
496 | |
---|
497 | /** |
---|
498 | * Outputs the activity pagination count |
---|
499 | * |
---|
500 | * @since BuddyPress (1.0) |
---|
501 | * |
---|
502 | * @global object $activities_template {@link BP_Activity_Template} |
---|
503 | * @uses BP_Activity_Template::the_activity() {@link BP_Activity_Template::the_activity()} |
---|
504 | */ |
---|
505 | function bp_activity_pagination_count() { |
---|
506 | echo bp_get_activity_pagination_count(); |
---|
507 | } |
---|
508 | |
---|
509 | /** |
---|
510 | * Returns the activity pagination count |
---|
511 | * |
---|
512 | * @since BuddyPress (1.2) |
---|
513 | * |
---|
514 | * @global object $activities_template {@link BP_Activity_Template} |
---|
515 | * @uses bp_core_number_format() |
---|
516 | * |
---|
517 | * @return string The pagination text |
---|
518 | */ |
---|
519 | function bp_get_activity_pagination_count() { |
---|
520 | global $activities_template; |
---|
521 | |
---|
522 | $start_num = intval( ( $activities_template->pag_page - 1 ) * $activities_template->pag_num ) + 1; |
---|
523 | $from_num = bp_core_number_format( $start_num ); |
---|
524 | $to_num = bp_core_number_format( ( $start_num + ( $activities_template->pag_num - 1 ) > $activities_template->total_activity_count ) ? $activities_template->total_activity_count : $start_num + ( $activities_template->pag_num - 1 ) ); |
---|
525 | $total = bp_core_number_format( $activities_template->total_activity_count ); |
---|
526 | |
---|
527 | return sprintf( __( 'Viewing item %1$s to %2$s (of %3$s items)', 'buddypress' ), $from_num, $to_num, $total ); |
---|
528 | } |
---|
529 | |
---|
530 | /** |
---|
531 | * Outputs the activity pagination links |
---|
532 | * |
---|
533 | * @since BuddyPress (1.0) |
---|
534 | * |
---|
535 | * @uses bp_get_activity_pagination_links() |
---|
536 | */ |
---|
537 | function bp_activity_pagination_links() { |
---|
538 | echo bp_get_activity_pagination_links(); |
---|
539 | } |
---|
540 | |
---|
541 | /** |
---|
542 | * Outputs the activity pagination links |
---|
543 | * |
---|
544 | * @since BuddyPress (1.0) |
---|
545 | * |
---|
546 | * @global object $activities_template {@link BP_Activity_Template} |
---|
547 | * @uses apply_filters() To call the 'bp_get_activity_pagination_links' hook |
---|
548 | * |
---|
549 | * @return string The pagination links |
---|
550 | */ |
---|
551 | function bp_get_activity_pagination_links() { |
---|
552 | global $activities_template; |
---|
553 | |
---|
554 | return apply_filters( 'bp_get_activity_pagination_links', $activities_template->pag_links ); |
---|
555 | } |
---|
556 | |
---|
557 | /** |
---|
558 | * Returns true when there are more activity items to be shown than currently appear |
---|
559 | * |
---|
560 | * @since BuddyPress (1.5) |
---|
561 | * |
---|
562 | * @global object $activities_template {@link BP_Activity_Template} |
---|
563 | * @uses apply_filters() To call the 'bp_activity_has_more_items' hook |
---|
564 | * |
---|
565 | * @return bool $has_more_items True if more items, false if not |
---|
566 | */ |
---|
567 | function bp_activity_has_more_items() { |
---|
568 | global $activities_template; |
---|
569 | |
---|
570 | $remaining_pages = floor( ( $activities_template->total_activity_count - 1 ) / ( $activities_template->pag_num * $activities_template->pag_page ) ); |
---|
571 | $has_more_items = (int) $remaining_pages ? true : false; |
---|
572 | |
---|
573 | return apply_filters( 'bp_activity_has_more_items', $has_more_items ); |
---|
574 | } |
---|
575 | |
---|
576 | /** |
---|
577 | * Outputs the activity count |
---|
578 | * |
---|
579 | * @since BuddyPress (1.2) |
---|
580 | * |
---|
581 | * @uses bp_get_activity_count() |
---|
582 | */ |
---|
583 | function bp_activity_count() { |
---|
584 | echo bp_get_activity_count(); |
---|
585 | } |
---|
586 | |
---|
587 | /** |
---|
588 | * Returns the activity count |
---|
589 | * |
---|
590 | * @since BuddyPress (1.2) |
---|
591 | * |
---|
592 | * @global object $activities_template {@link BP_Activity_Template} |
---|
593 | * @uses apply_filters() To call the 'bp_get_activity_count' hook |
---|
594 | * |
---|
595 | * @return int The activity count |
---|
596 | */ |
---|
597 | function bp_get_activity_count() { |
---|
598 | global $activities_template; |
---|
599 | |
---|
600 | return apply_filters( 'bp_get_activity_count', (int) $activities_template->activity_count ); |
---|
601 | } |
---|
602 | |
---|
603 | /** |
---|
604 | * Outputs the number of activities per page |
---|
605 | * |
---|
606 | * @since BuddyPress (1.2) |
---|
607 | * |
---|
608 | * @uses bp_get_activity_per_page() |
---|
609 | */ |
---|
610 | function bp_activity_per_page() { |
---|
611 | echo bp_get_activity_per_page(); |
---|
612 | } |
---|
613 | |
---|
614 | /** |
---|
615 | * Returns the number of activities per page |
---|
616 | * |
---|
617 | * @since BuddyPress (1.2) |
---|
618 | * |
---|
619 | * @global object $activities_template {@link BP_Activity_Template} |
---|
620 | * @uses apply_filters() To call the 'bp_get_activity_per_page' hook |
---|
621 | * |
---|
622 | * @return int The activities per page |
---|
623 | */ |
---|
624 | function bp_get_activity_per_page() { |
---|
625 | global $activities_template; |
---|
626 | |
---|
627 | return apply_filters( 'bp_get_activity_per_page', (int) $activities_template->pag_num ); |
---|
628 | } |
---|
629 | |
---|
630 | /** |
---|
631 | * Outputs the activities title |
---|
632 | * |
---|
633 | * @since BuddyPress (1.0) |
---|
634 | * |
---|
635 | * @uses bp_get_activities_title() |
---|
636 | */ |
---|
637 | function bp_activities_title() { |
---|
638 | echo bp_get_activities_title(); |
---|
639 | } |
---|
640 | |
---|
641 | /** |
---|
642 | * Returns the activities title |
---|
643 | * |
---|
644 | * @since BuddyPress (1.0) |
---|
645 | * |
---|
646 | * @global string $bp_activity_title |
---|
647 | * @uses apply_filters() To call the 'bp_get_activities_title' hook |
---|
648 | * |
---|
649 | * @return int The activities title |
---|
650 | */ |
---|
651 | function bp_get_activities_title() { |
---|
652 | global $bp_activity_title; |
---|
653 | |
---|
654 | return apply_filters( 'bp_get_activities_title', $bp_activity_title ); |
---|
655 | } |
---|
656 | |
---|
657 | /** |
---|
658 | * {@internal Missing Description} |
---|
659 | * |
---|
660 | * @since BuddyPress (1.0) |
---|
661 | * |
---|
662 | * @uses bp_get_activities_no_activity() |
---|
663 | */ |
---|
664 | function bp_activities_no_activity() { |
---|
665 | echo bp_get_activities_no_activity(); |
---|
666 | } |
---|
667 | |
---|
668 | /** |
---|
669 | * {@internal Missing Description} |
---|
670 | * |
---|
671 | * @since BuddyPress (1.0) |
---|
672 | * |
---|
673 | * @global string $bp_activity_no_activity |
---|
674 | * @uses apply_filters() To call the 'bp_get_activities_no_activity' hook |
---|
675 | * |
---|
676 | * @return unknown_type |
---|
677 | */ |
---|
678 | function bp_get_activities_no_activity() { |
---|
679 | global $bp_activity_no_activity; |
---|
680 | |
---|
681 | return apply_filters( 'bp_get_activities_no_activity', $bp_activity_no_activity ); |
---|
682 | } |
---|
683 | |
---|
684 | /** |
---|
685 | * Outputs the activity id |
---|
686 | * |
---|
687 | * @since BuddyPress (1.2) |
---|
688 | * |
---|
689 | * @uses bp_get_activity_id() |
---|
690 | */ |
---|
691 | function bp_activity_id() { |
---|
692 | echo bp_get_activity_id(); |
---|
693 | } |
---|
694 | |
---|
695 | /** |
---|
696 | * Returns the activity id |
---|
697 | * |
---|
698 | * @since BuddyPress (1.2) |
---|
699 | * |
---|
700 | * @global object $activities_template {@link BP_Activity_Template} |
---|
701 | * @uses apply_filters() To call the 'bp_get_activity_id' hook |
---|
702 | * |
---|
703 | * @return int The activity id |
---|
704 | */ |
---|
705 | function bp_get_activity_id() { |
---|
706 | global $activities_template; |
---|
707 | return apply_filters( 'bp_get_activity_id', $activities_template->activity->id ); |
---|
708 | } |
---|
709 | |
---|
710 | /** |
---|
711 | * Outputs the activity item id |
---|
712 | * |
---|
713 | * @since BuddyPress (1.2) |
---|
714 | * |
---|
715 | * @uses bp_get_activity_item_id() |
---|
716 | */ |
---|
717 | function bp_activity_item_id() { |
---|
718 | echo bp_get_activity_item_id(); |
---|
719 | } |
---|
720 | |
---|
721 | /** |
---|
722 | * Returns the activity item id |
---|
723 | * |
---|
724 | * @since BuddyPress (1.2) |
---|
725 | * |
---|
726 | * @global object $activities_template {@link BP_Activity_Template} |
---|
727 | * @uses apply_filters() To call the 'bp_get_activity_item_id' hook |
---|
728 | * |
---|
729 | * @return int The activity item id |
---|
730 | */ |
---|
731 | function bp_get_activity_item_id() { |
---|
732 | global $activities_template; |
---|
733 | return apply_filters( 'bp_get_activity_item_id', $activities_template->activity->item_id ); |
---|
734 | } |
---|
735 | |
---|
736 | /** |
---|
737 | * Outputs the activity secondary item id |
---|
738 | * |
---|
739 | * @since BuddyPress (1.2) |
---|
740 | * |
---|
741 | * @uses bp_get_activity_secondary_item_id() |
---|
742 | */ |
---|
743 | function bp_activity_secondary_item_id() { |
---|
744 | echo bp_get_activity_secondary_item_id(); |
---|
745 | } |
---|
746 | |
---|
747 | /** |
---|
748 | * Returns the activity secondary item id |
---|
749 | * |
---|
750 | * @since BuddyPress (1.2) |
---|
751 | * |
---|
752 | * @global object $activities_template {@link BP_Activity_Template} |
---|
753 | * @uses apply_filters() To call the 'bp_get_activity_secondary_item_id' hook |
---|
754 | * |
---|
755 | * @return int The activity secondary item id |
---|
756 | */ |
---|
757 | function bp_get_activity_secondary_item_id() { |
---|
758 | global $activities_template; |
---|
759 | return apply_filters( 'bp_get_activity_secondary_item_id', $activities_template->activity->secondary_item_id ); |
---|
760 | } |
---|
761 | |
---|
762 | /** |
---|
763 | * Outputs the date the activity was recorded |
---|
764 | * |
---|
765 | * @since BuddyPress (1.2) |
---|
766 | * |
---|
767 | * @uses bp_get_activity_date_recorded() |
---|
768 | */ |
---|
769 | function bp_activity_date_recorded() { |
---|
770 | echo bp_get_activity_date_recorded(); |
---|
771 | } |
---|
772 | |
---|
773 | /** |
---|
774 | * Returns the date the activity was recorded |
---|
775 | * |
---|
776 | * @since BuddyPress (1.2) |
---|
777 | * |
---|
778 | * @global object $activities_template {@link BP_Activity_Template} |
---|
779 | * @uses apply_filters() To call the 'bp_get_activity_date_recorded' hook |
---|
780 | * |
---|
781 | * @return string The date the activity was recorded |
---|
782 | */ |
---|
783 | function bp_get_activity_date_recorded() { |
---|
784 | global $activities_template; |
---|
785 | return apply_filters( 'bp_get_activity_date_recorded', $activities_template->activity->date_recorded ); |
---|
786 | } |
---|
787 | |
---|
788 | /** |
---|
789 | * Outputs the activity object name |
---|
790 | * |
---|
791 | * @since BuddyPress (1.2) |
---|
792 | * |
---|
793 | * @uses bp_get_activity_object_name() |
---|
794 | */ |
---|
795 | function bp_activity_object_name() { |
---|
796 | echo bp_get_activity_object_name(); |
---|
797 | } |
---|
798 | |
---|
799 | /** |
---|
800 | * Returns the activity object name |
---|
801 | * |
---|
802 | * @since BuddyPress (1.2) |
---|
803 | * |
---|
804 | * @global object $activities_template {@link BP_Activity_Template} |
---|
805 | * @uses apply_filters() To call the 'bp_get_activity_object_name' hook |
---|
806 | * |
---|
807 | * @return string The activity object name |
---|
808 | */ |
---|
809 | function bp_get_activity_object_name() { |
---|
810 | global $activities_template; |
---|
811 | return apply_filters( 'bp_get_activity_object_name', $activities_template->activity->component ); |
---|
812 | } |
---|
813 | |
---|
814 | /** |
---|
815 | * Outputs the activity type |
---|
816 | * |
---|
817 | * @since BuddyPress (1.2) |
---|
818 | * |
---|
819 | * @uses bp_get_activity_type() |
---|
820 | */ |
---|
821 | function bp_activity_type() { |
---|
822 | echo bp_get_activity_type(); |
---|
823 | } |
---|
824 | |
---|
825 | /** |
---|
826 | * Returns the activity type |
---|
827 | * |
---|
828 | * @since BuddyPress (1.2) |
---|
829 | * |
---|
830 | * @global object $activities_template {@link BP_Activity_Template} |
---|
831 | * @uses apply_filters() To call the 'bp_get_activity_type' hook |
---|
832 | * |
---|
833 | * @return string The activity type |
---|
834 | */ |
---|
835 | function bp_get_activity_type() { |
---|
836 | global $activities_template; |
---|
837 | return apply_filters( 'bp_get_activity_type', $activities_template->activity->type ); |
---|
838 | } |
---|
839 | |
---|
840 | /** |
---|
841 | * Outputs the activity action name |
---|
842 | * |
---|
843 | * Just a wrapper for bp_activity_type() |
---|
844 | * |
---|
845 | * @since BuddyPress (1.2) |
---|
846 | * @deprecated BuddyPress (1.5) |
---|
847 | * |
---|
848 | * @todo Properly deprecate in favor of bp_activity_type() and |
---|
849 | * remove redundant echo |
---|
850 | * |
---|
851 | * @uses bp_activity_type() |
---|
852 | */ |
---|
853 | function bp_activity_action_name() { echo bp_activity_type(); } |
---|
854 | |
---|
855 | /** |
---|
856 | * Returns the activity type |
---|
857 | * |
---|
858 | * Just a wrapper for bp_get_activity_type() |
---|
859 | * |
---|
860 | * @since BuddyPress (1.2) |
---|
861 | * @deprecated BuddyPress (1.5) |
---|
862 | * |
---|
863 | * @todo Properly deprecate in favor of bp_get_activity_type() |
---|
864 | * |
---|
865 | * @uses bp_get_activity_type() |
---|
866 | * |
---|
867 | * @return string The activity type |
---|
868 | */ |
---|
869 | function bp_get_activity_action_name() { return bp_get_activity_type(); } |
---|
870 | |
---|
871 | /** |
---|
872 | * Outputs the activity user id |
---|
873 | * |
---|
874 | * @since BuddyPress (1.1) |
---|
875 | * |
---|
876 | * @uses bp_get_activity_user_id() |
---|
877 | */ |
---|
878 | function bp_activity_user_id() { |
---|
879 | echo bp_get_activity_user_id(); |
---|
880 | } |
---|
881 | |
---|
882 | /** |
---|
883 | * Returns the activity user id |
---|
884 | * |
---|
885 | * @since BuddyPress (1.1) |
---|
886 | * |
---|
887 | * @global object $activities_template {@link BP_Activity_Template} |
---|
888 | * @uses apply_filters() To call the 'bp_get_activity_user_id' hook |
---|
889 | * |
---|
890 | * @return int The activity user id |
---|
891 | */ |
---|
892 | function bp_get_activity_user_id() { |
---|
893 | global $activities_template; |
---|
894 | return apply_filters( 'bp_get_activity_user_id', $activities_template->activity->user_id ); |
---|
895 | } |
---|
896 | |
---|
897 | /** |
---|
898 | * Outputs the activity user link |
---|
899 | * |
---|
900 | * @since BuddyPress (1.2) |
---|
901 | * |
---|
902 | * @uses bp_get_activity_user_link() |
---|
903 | */ |
---|
904 | function bp_activity_user_link() { |
---|
905 | echo bp_get_activity_user_link(); |
---|
906 | } |
---|
907 | |
---|
908 | /** |
---|
909 | * Returns the activity user link |
---|
910 | * |
---|
911 | * @since BuddyPress (1.2) |
---|
912 | * |
---|
913 | * @global object $activities_template {@link BP_Activity_Template} |
---|
914 | * @uses bp_core_get_user_domain() |
---|
915 | * @uses apply_filters() To call the 'bp_get_activity_user_link' hook |
---|
916 | * |
---|
917 | * @return string $link The activity user link |
---|
918 | */ |
---|
919 | function bp_get_activity_user_link() { |
---|
920 | global $activities_template; |
---|
921 | |
---|
922 | if ( empty( $activities_template->activity->user_id ) ) |
---|
923 | $link = $activities_template->activity->primary_link; |
---|
924 | else |
---|
925 | $link = bp_core_get_user_domain( $activities_template->activity->user_id, $activities_template->activity->user_nicename, $activities_template->activity->user_login ); |
---|
926 | |
---|
927 | return apply_filters( 'bp_get_activity_user_link', $link ); |
---|
928 | } |
---|
929 | |
---|
930 | /** |
---|
931 | * Output the avatar of the user that performed the action |
---|
932 | * |
---|
933 | * @since BuddyPress (1.1) |
---|
934 | * |
---|
935 | * @param array $args |
---|
936 | * |
---|
937 | * @uses bp_get_activity_avatar() |
---|
938 | */ |
---|
939 | function bp_activity_avatar( $args = '' ) { |
---|
940 | echo bp_get_activity_avatar( $args ); |
---|
941 | } |
---|
942 | /** |
---|
943 | * Return the avatar of the user that performed the action |
---|
944 | * |
---|
945 | * @since BuddyPress (1.1) |
---|
946 | * |
---|
947 | * @param array $args optional |
---|
948 | * |
---|
949 | * @global object $activities_template {@link BP_Activity_Template} |
---|
950 | * @global object $bp BuddyPress global settings |
---|
951 | * @uses bp_is_single_activity() |
---|
952 | * @uses wp_parse_args() |
---|
953 | * @uses apply_filters() To call the 'bp_get_activity_avatar_object_' . $current_activity_item->component hook |
---|
954 | * @uses apply_filters() To call the 'bp_get_activity_avatar_item_id' hook |
---|
955 | * @uses bp_core_fetch_avatar() |
---|
956 | * @uses apply_filters() To call the 'bp_get_activity_avatar' hook |
---|
957 | * |
---|
958 | * @return string User avatar |
---|
959 | */ |
---|
960 | function bp_get_activity_avatar( $args = '' ) { |
---|
961 | global $activities_template; |
---|
962 | |
---|
963 | $bp = buddypress(); |
---|
964 | |
---|
965 | // On activity permalink pages, default to the full-size avatar |
---|
966 | $type_default = bp_is_single_activity() ? 'full' : 'thumb'; |
---|
967 | |
---|
968 | // Within the activity comment loop, the current activity should be set |
---|
969 | // to current_comment. Otherwise, just use activity. |
---|
970 | $current_activity_item = isset( $activities_template->activity->current_comment ) ? $activities_template->activity->current_comment : $activities_template->activity; |
---|
971 | |
---|
972 | // Activity user display name |
---|
973 | $dn_default = isset( $current_activity_item->display_name ) ? $current_activity_item->display_name : ''; |
---|
974 | |
---|
975 | // Prepend some descriptive text to alt |
---|
976 | $alt_default = !empty( $dn_default ) ? sprintf( __( 'Profile picture of %s', 'buddypress' ), $dn_default ) : __( 'Profile picture', 'buddypress' ); |
---|
977 | |
---|
978 | $defaults = array( |
---|
979 | 'alt' => $alt_default, |
---|
980 | 'class' => 'avatar', |
---|
981 | 'email' => false, |
---|
982 | 'type' => $type_default, |
---|
983 | 'user_id' => false |
---|
984 | ); |
---|
985 | |
---|
986 | $r = wp_parse_args( $args, $defaults ); |
---|
987 | extract( $r, EXTR_SKIP ); |
---|
988 | |
---|
989 | if ( !isset( $height ) && !isset( $width ) ) { |
---|
990 | |
---|
991 | // Backpat |
---|
992 | if ( isset( $bp->avatar->full->height ) || isset( $bp->avatar->thumb->height ) ) { |
---|
993 | $height = ( 'full' == $type ) ? $bp->avatar->full->height : $bp->avatar->thumb->height; |
---|
994 | } else { |
---|
995 | $height = 20; |
---|
996 | } |
---|
997 | |
---|
998 | // Backpat |
---|
999 | if ( isset( $bp->avatar->full->width ) || isset( $bp->avatar->thumb->width ) ) { |
---|
1000 | $width = ( 'full' == $type ) ? $bp->avatar->full->width : $bp->avatar->thumb->width; |
---|
1001 | } else { |
---|
1002 | $width = 20; |
---|
1003 | } |
---|
1004 | } |
---|
1005 | |
---|
1006 | // Primary activity avatar is always a user, but can be modified via a filter |
---|
1007 | $object = apply_filters( 'bp_get_activity_avatar_object_' . $current_activity_item->component, 'user' ); |
---|
1008 | $item_id = !empty( $user_id ) ? $user_id : $current_activity_item->user_id; |
---|
1009 | $item_id = apply_filters( 'bp_get_activity_avatar_item_id', $item_id ); |
---|
1010 | |
---|
1011 | // If this is a user object pass the users' email address for Gravatar so we don't have to refetch it. |
---|
1012 | if ( 'user' == $object && empty( $user_id ) && empty( $email ) && isset( $current_activity_item->user_email ) ) |
---|
1013 | $email = $current_activity_item->user_email; |
---|
1014 | |
---|
1015 | return apply_filters( 'bp_get_activity_avatar', bp_core_fetch_avatar( array( |
---|
1016 | 'item_id' => $item_id, |
---|
1017 | 'object' => $object, |
---|
1018 | 'type' => $type, |
---|
1019 | 'alt' => $alt, |
---|
1020 | 'class' => $class, |
---|
1021 | 'width' => $width, |
---|
1022 | 'height' => $height, |
---|
1023 | 'email' => $email |
---|
1024 | ) ) ); |
---|
1025 | } |
---|
1026 | |
---|
1027 | /** |
---|
1028 | * Output the avatar of the object that action was performed on |
---|
1029 | * |
---|
1030 | * @since BuddyPress (1.2) |
---|
1031 | * |
---|
1032 | * @param array $args optional |
---|
1033 | * |
---|
1034 | * @uses bp_get_activity_secondary_avatar() |
---|
1035 | */ |
---|
1036 | function bp_activity_secondary_avatar( $args = '' ) { |
---|
1037 | echo bp_get_activity_secondary_avatar( $args ); |
---|
1038 | } |
---|
1039 | |
---|
1040 | /** |
---|
1041 | * Return the avatar of the object that action was performed on |
---|
1042 | * |
---|
1043 | * @since BuddyPress (1.2) |
---|
1044 | * |
---|
1045 | * @param array $args optional |
---|
1046 | * |
---|
1047 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1048 | * @uses wp_parse_args() |
---|
1049 | * @uses get_blog_option() |
---|
1050 | * @uses apply_filters() To call the 'bp_get_activity_secondary_avatar_object_' . $activities_template->activity->component hook |
---|
1051 | * @uses apply_filters() To call the 'bp_get_activity_secondary_avatar_item_id' hook |
---|
1052 | * @uses bp_core_fetch_avatar() |
---|
1053 | * @uses apply_filters() To call the 'bp_get_activity_secondary_avatar' hook |
---|
1054 | * |
---|
1055 | * @return string The secondary avatar |
---|
1056 | */ |
---|
1057 | function bp_get_activity_secondary_avatar( $args = '' ) { |
---|
1058 | global $activities_template; |
---|
1059 | |
---|
1060 | $r = wp_parse_args( $args, array( |
---|
1061 | 'alt' => '', |
---|
1062 | 'type' => 'thumb', |
---|
1063 | 'width' => 20, |
---|
1064 | 'height' => 20, |
---|
1065 | 'class' => 'avatar', |
---|
1066 | 'link_class' => '', |
---|
1067 | 'linked' => true, |
---|
1068 | 'email' => false |
---|
1069 | ) ); |
---|
1070 | extract( $r, EXTR_SKIP ); |
---|
1071 | |
---|
1072 | // Set item_id and object (default to user) |
---|
1073 | switch ( $activities_template->activity->component ) { |
---|
1074 | case 'groups' : |
---|
1075 | $object = 'group'; |
---|
1076 | $item_id = $activities_template->activity->item_id; |
---|
1077 | |
---|
1078 | // Only if groups is active |
---|
1079 | if ( bp_is_active( 'groups' ) ) { |
---|
1080 | $group = groups_get_group( array( 'group_id' => $item_id ) ); |
---|
1081 | $link = bp_get_group_permalink( $group ); |
---|
1082 | $name = $group->name; |
---|
1083 | } else { |
---|
1084 | $name = ''; |
---|
1085 | } |
---|
1086 | |
---|
1087 | if ( empty( $alt ) ) { |
---|
1088 | $alt = __( 'Group logo', 'buddypress' ); |
---|
1089 | |
---|
1090 | if ( ! empty( $name ) ) { |
---|
1091 | $alt = sprintf( __( 'Group logo of %s', 'buddypress' ), $name ); |
---|
1092 | } |
---|
1093 | } |
---|
1094 | |
---|
1095 | break; |
---|
1096 | case 'blogs' : |
---|
1097 | $object = 'blog'; |
---|
1098 | $item_id = $activities_template->activity->item_id; |
---|
1099 | $link = home_url(); |
---|
1100 | |
---|
1101 | if ( empty( $alt ) ) { |
---|
1102 | $alt = sprintf( __( 'Profile picture of the author of the site %s', 'buddypress' ), get_blog_option( $item_id, 'blogname' ) ); |
---|
1103 | } |
---|
1104 | |
---|
1105 | break; |
---|
1106 | case 'friends' : |
---|
1107 | $object = 'user'; |
---|
1108 | $item_id = $activities_template->activity->secondary_item_id; |
---|
1109 | $link = bp_core_get_userlink( $item_id, false, true ); |
---|
1110 | |
---|
1111 | if ( empty( $alt ) ) { |
---|
1112 | $alt = sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $activities_template->activity->secondary_item_id ) ); |
---|
1113 | } |
---|
1114 | |
---|
1115 | break; |
---|
1116 | default : |
---|
1117 | $object = 'user'; |
---|
1118 | $item_id = $activities_template->activity->user_id; |
---|
1119 | $email = $activities_template->activity->user_email; |
---|
1120 | $link = bp_core_get_userlink( $item_id, false, true ); |
---|
1121 | |
---|
1122 | if ( empty( $alt ) ) { |
---|
1123 | $alt = sprintf( __( 'Profile picture of %s', 'buddypress' ), $activities_template->activity->display_name ); |
---|
1124 | } |
---|
1125 | |
---|
1126 | break; |
---|
1127 | } |
---|
1128 | |
---|
1129 | // Allow object, item_id, and link to be filtered |
---|
1130 | $object = apply_filters( 'bp_get_activity_secondary_avatar_object_' . $activities_template->activity->component, $object ); |
---|
1131 | $item_id = apply_filters( 'bp_get_activity_secondary_avatar_item_id', $item_id ); |
---|
1132 | |
---|
1133 | // If we have no item_id or object, there is no avatar to display |
---|
1134 | if ( empty( $item_id ) || empty( $object ) ) { |
---|
1135 | return false; |
---|
1136 | } |
---|
1137 | |
---|
1138 | // Get the avatar |
---|
1139 | $avatar = bp_core_fetch_avatar( array( |
---|
1140 | 'item_id' => $item_id, |
---|
1141 | 'object' => $object, |
---|
1142 | 'type' => $type, |
---|
1143 | 'alt' => $alt, |
---|
1144 | 'class' => $class, |
---|
1145 | 'width' => $width, |
---|
1146 | 'height' => $height, |
---|
1147 | 'email' => $email |
---|
1148 | ) ); |
---|
1149 | |
---|
1150 | if ( !empty( $linked ) ) { |
---|
1151 | $link = apply_filters( 'bp_get_activity_secondary_avatar_link', $link, $activities_template->activity->component ); |
---|
1152 | |
---|
1153 | return sprintf( '<a href="%s" class="%s">%s</a>', |
---|
1154 | $link, |
---|
1155 | $link_class, |
---|
1156 | apply_filters( 'bp_get_activity_secondary_avatar', $avatar ) |
---|
1157 | ); |
---|
1158 | } |
---|
1159 | |
---|
1160 | // else |
---|
1161 | return apply_filters( 'bp_get_activity_secondary_avatar', $avatar ); |
---|
1162 | } |
---|
1163 | |
---|
1164 | /** |
---|
1165 | * Output the activity action |
---|
1166 | * |
---|
1167 | * @since BuddyPress (1.2) |
---|
1168 | * |
---|
1169 | * @param array $args See bp_get_activity_action() |
---|
1170 | * @uses bp_get_activity_action() |
---|
1171 | */ |
---|
1172 | function bp_activity_action( $args = array() ) { |
---|
1173 | echo bp_get_activity_action( $args ); |
---|
1174 | } |
---|
1175 | |
---|
1176 | /** |
---|
1177 | * Return the activity action |
---|
1178 | * |
---|
1179 | * @since BuddyPress (1.2) |
---|
1180 | * |
---|
1181 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1182 | * @param array $args Only parameter is "no_timestamp". If true, timestamp is shown in output. |
---|
1183 | * @uses apply_filters_ref_array() To call the 'bp_get_activity_action_pre_meta' hook |
---|
1184 | * @uses bp_insert_activity_meta() |
---|
1185 | * @uses apply_filters_ref_array() To call the 'bp_get_activity_action' hook |
---|
1186 | * |
---|
1187 | * @return string The activity action |
---|
1188 | */ |
---|
1189 | function bp_get_activity_action( $args = array() ) { |
---|
1190 | global $activities_template; |
---|
1191 | |
---|
1192 | $defaults = array( |
---|
1193 | 'no_timestamp' => false, |
---|
1194 | ); |
---|
1195 | |
---|
1196 | $args = wp_parse_args( $args, $defaults ); |
---|
1197 | extract( $args, EXTR_SKIP ); |
---|
1198 | |
---|
1199 | $action = $activities_template->activity->action; |
---|
1200 | $action = apply_filters_ref_array( 'bp_get_activity_action_pre_meta', array( $action, &$activities_template->activity, $args ) ); |
---|
1201 | |
---|
1202 | if ( ! empty( $action ) && ! $no_timestamp ) |
---|
1203 | $action = bp_insert_activity_meta( $action ); |
---|
1204 | |
---|
1205 | return apply_filters_ref_array( 'bp_get_activity_action', array( $action, &$activities_template->activity, $args ) ); |
---|
1206 | } |
---|
1207 | |
---|
1208 | /** |
---|
1209 | * Output the activity content body |
---|
1210 | * |
---|
1211 | * @since BuddyPress (1.2) |
---|
1212 | * |
---|
1213 | * @uses bp_get_activity_content_body() |
---|
1214 | */ |
---|
1215 | function bp_activity_content_body() { |
---|
1216 | echo bp_get_activity_content_body(); |
---|
1217 | } |
---|
1218 | |
---|
1219 | /** |
---|
1220 | * Return the activity content body |
---|
1221 | * |
---|
1222 | * @since BuddyPress (1.2) |
---|
1223 | * |
---|
1224 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1225 | * @uses bp_insert_activity_meta() |
---|
1226 | * @uses apply_filters_ref_array() To call the 'bp_get_activity_content_body' hook |
---|
1227 | * |
---|
1228 | * @return string The activity content body |
---|
1229 | */ |
---|
1230 | function bp_get_activity_content_body() { |
---|
1231 | global $activities_template; |
---|
1232 | |
---|
1233 | // Backwards compatibility if action is not being used |
---|
1234 | if ( empty( $activities_template->activity->action ) && !empty( $activities_template->activity->content ) ) |
---|
1235 | $activities_template->activity->content = bp_insert_activity_meta( $activities_template->activity->content ); |
---|
1236 | |
---|
1237 | return apply_filters_ref_array( 'bp_get_activity_content_body', array( $activities_template->activity->content, &$activities_template->activity ) ); |
---|
1238 | } |
---|
1239 | |
---|
1240 | /** |
---|
1241 | * Does the activity have content? |
---|
1242 | * |
---|
1243 | * @since BuddyPress (1.2) |
---|
1244 | * |
---|
1245 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1246 | * |
---|
1247 | * @return bool True if activity has content, false otherwise |
---|
1248 | */ |
---|
1249 | function bp_activity_has_content() { |
---|
1250 | global $activities_template; |
---|
1251 | |
---|
1252 | if ( !empty( $activities_template->activity->content ) ) |
---|
1253 | return true; |
---|
1254 | |
---|
1255 | return false; |
---|
1256 | } |
---|
1257 | |
---|
1258 | /** |
---|
1259 | * Output the activity content |
---|
1260 | * |
---|
1261 | * @since BuddyPress (1.0) |
---|
1262 | * @deprecated BuddyPress (1.5) |
---|
1263 | * |
---|
1264 | * @todo properly deprecate this function |
---|
1265 | * |
---|
1266 | * @uses bp_get_activity_content() |
---|
1267 | */ |
---|
1268 | function bp_activity_content() { |
---|
1269 | echo bp_get_activity_content(); |
---|
1270 | } |
---|
1271 | |
---|
1272 | /** |
---|
1273 | * Return the activity content |
---|
1274 | * |
---|
1275 | * @since BuddyPress (1.0) |
---|
1276 | * @deprecated BuddyPress (1.5) |
---|
1277 | * |
---|
1278 | * @todo properly deprecate this function |
---|
1279 | * |
---|
1280 | * @uses bp_get_activity_action() |
---|
1281 | * @uses bp_get_activity_content_body() |
---|
1282 | * @uses apply_filters() To call the 'bp_get_activity_content' hook |
---|
1283 | * |
---|
1284 | * @return string The activity content |
---|
1285 | */ |
---|
1286 | function bp_get_activity_content() { |
---|
1287 | /** |
---|
1288 | * If you want to filter activity update content, please use |
---|
1289 | * the filter 'bp_get_activity_content_body' |
---|
1290 | * |
---|
1291 | * This function is mainly for backwards comptibility. |
---|
1292 | */ |
---|
1293 | |
---|
1294 | $content = bp_get_activity_action() . ' ' . bp_get_activity_content_body(); |
---|
1295 | return apply_filters( 'bp_get_activity_content', $content ); |
---|
1296 | } |
---|
1297 | |
---|
1298 | /** |
---|
1299 | * Insert activity meta |
---|
1300 | * |
---|
1301 | * @since BuddyPress (1.2) |
---|
1302 | * |
---|
1303 | * @param string $content |
---|
1304 | * |
---|
1305 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1306 | * @uses bp_core_time_since() |
---|
1307 | * @uses apply_filters_ref_array() To call the 'bp_activity_time_since' hook |
---|
1308 | * @uses bp_is_single_activity() |
---|
1309 | * @uses bp_activity_get_permalink() |
---|
1310 | * @uses esc_attr__() |
---|
1311 | * @uses apply_filters_ref_array() To call the 'bp_activity_permalink' hook |
---|
1312 | * @uses apply_filters() To call the 'bp_insert_activity_meta' hook |
---|
1313 | * |
---|
1314 | * @return string The activity content |
---|
1315 | */ |
---|
1316 | function bp_insert_activity_meta( $content ) { |
---|
1317 | global $activities_template; |
---|
1318 | |
---|
1319 | // Strip any legacy time since placeholders from BP 1.0-1.1 |
---|
1320 | $content = str_replace( '<span class="time-since">%s</span>', '', $content ); |
---|
1321 | |
---|
1322 | // Insert the time since. |
---|
1323 | $time_since = apply_filters_ref_array( 'bp_activity_time_since', array( '<span class="time-since">' . bp_core_time_since( $activities_template->activity->date_recorded ) . '</span>', &$activities_template->activity ) ); |
---|
1324 | |
---|
1325 | // Insert the permalink |
---|
1326 | if ( !bp_is_single_activity() ) |
---|
1327 | $content = apply_filters_ref_array( 'bp_activity_permalink', array( sprintf( '%1$s <a href="%2$s" class="view activity-time-since" title="%3$s">%4$s</a>', $content, bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ), esc_attr__( 'View Discussion', 'buddypress' ), $time_since ), &$activities_template->activity ) ); |
---|
1328 | else |
---|
1329 | $content .= str_pad( $time_since, strlen( $time_since ) + 2, ' ', STR_PAD_BOTH ); |
---|
1330 | |
---|
1331 | return apply_filters( 'bp_insert_activity_meta', $content ); |
---|
1332 | } |
---|
1333 | |
---|
1334 | /** |
---|
1335 | * Determine if the current user can delete an activity item |
---|
1336 | * |
---|
1337 | * @since BuddyPress (1.2) |
---|
1338 | * |
---|
1339 | * @param object $activity Optional |
---|
1340 | * |
---|
1341 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1342 | * @uses apply_filters() To call the 'bp_activity_user_can_delete' hook |
---|
1343 | * |
---|
1344 | * @return bool True if can delete, false otherwise |
---|
1345 | */ |
---|
1346 | function bp_activity_user_can_delete( $activity = false ) { |
---|
1347 | global $activities_template; |
---|
1348 | |
---|
1349 | if ( !$activity ) |
---|
1350 | $activity = $activities_template->activity; |
---|
1351 | |
---|
1352 | if ( isset( $activity->current_comment ) ) |
---|
1353 | $activity = $activity->current_comment; |
---|
1354 | |
---|
1355 | $can_delete = false; |
---|
1356 | |
---|
1357 | if ( bp_current_user_can( 'bp_moderate' ) ) |
---|
1358 | $can_delete = true; |
---|
1359 | |
---|
1360 | if ( is_user_logged_in() && $activity->user_id == bp_loggedin_user_id() ) |
---|
1361 | $can_delete = true; |
---|
1362 | |
---|
1363 | if ( bp_is_item_admin() && bp_is_single_item() ) |
---|
1364 | $can_delete = true; |
---|
1365 | |
---|
1366 | return apply_filters( 'bp_activity_user_can_delete', $can_delete ); |
---|
1367 | } |
---|
1368 | |
---|
1369 | /** |
---|
1370 | * Output the activity parent content |
---|
1371 | * |
---|
1372 | * @since BuddyPress (1.2) |
---|
1373 | * |
---|
1374 | * @param array $args Optional |
---|
1375 | * |
---|
1376 | * @uses bp_get_activity_parent_content() |
---|
1377 | */ |
---|
1378 | function bp_activity_parent_content( $args = '' ) { |
---|
1379 | echo bp_get_activity_parent_content($args); |
---|
1380 | } |
---|
1381 | |
---|
1382 | /** |
---|
1383 | * Return the activity content |
---|
1384 | * |
---|
1385 | * @since BuddyPress (1.2) |
---|
1386 | * |
---|
1387 | * @param array $args Optional |
---|
1388 | * |
---|
1389 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1390 | * @uses wp_parse_args() |
---|
1391 | * @uses apply_filters() To call the 'bp_get_activity_parent_content' hook |
---|
1392 | * |
---|
1393 | * @return mixed False on failure, otherwise the activity parent content |
---|
1394 | */ |
---|
1395 | function bp_get_activity_parent_content( $args = '' ) { |
---|
1396 | global $activities_template; |
---|
1397 | |
---|
1398 | $defaults = array( |
---|
1399 | 'hide_user' => false |
---|
1400 | ); |
---|
1401 | |
---|
1402 | $r = wp_parse_args( $args, $defaults ); |
---|
1403 | extract( $r, EXTR_SKIP ); |
---|
1404 | |
---|
1405 | // Get the ID of the parent activity content |
---|
1406 | if ( !$parent_id = $activities_template->activity->item_id ) |
---|
1407 | return false; |
---|
1408 | |
---|
1409 | // Bail if no parent content |
---|
1410 | if ( empty( $activities_template->activity_parents[$parent_id] ) ) |
---|
1411 | return false; |
---|
1412 | |
---|
1413 | // Bail if no action |
---|
1414 | if ( empty( $activities_template->activity_parents[$parent_id]->action ) ) |
---|
1415 | return false; |
---|
1416 | |
---|
1417 | // Content always includes action |
---|
1418 | $content = $activities_template->activity_parents[$parent_id]->action; |
---|
1419 | |
---|
1420 | // Maybe append activity content, if it exists |
---|
1421 | if ( ! empty( $activities_template->activity_parents[$parent_id]->content ) ) |
---|
1422 | $content .= ' ' . $activities_template->activity_parents[$parent_id]->content; |
---|
1423 | |
---|
1424 | // Remove the time since content for backwards compatibility |
---|
1425 | $content = str_replace( '<span class="time-since">%s</span>', '', $content ); |
---|
1426 | |
---|
1427 | // Remove images |
---|
1428 | $content = preg_replace( '/<img[^>]*>/Ui', '', $content ); |
---|
1429 | |
---|
1430 | return apply_filters( 'bp_get_activity_parent_content', $content ); |
---|
1431 | } |
---|
1432 | |
---|
1433 | /** |
---|
1434 | * Output the parent activity's user ID |
---|
1435 | * |
---|
1436 | * @since BuddyPress (1.7) |
---|
1437 | */ |
---|
1438 | function bp_activity_parent_user_id() { |
---|
1439 | echo bp_get_activity_parent_user_id(); |
---|
1440 | } |
---|
1441 | |
---|
1442 | /** |
---|
1443 | * Return the parent activity's user ID |
---|
1444 | * |
---|
1445 | * @global BP_Activity_Template $activities_template |
---|
1446 | * @return bool|int False if parent activity can't be found, otherwise returns the parent activity's user ID |
---|
1447 | * @since BuddyPress (1.7) |
---|
1448 | */ |
---|
1449 | function bp_get_activity_parent_user_id() { |
---|
1450 | global $activities_template; |
---|
1451 | |
---|
1452 | // Bail if no activity on no item ID |
---|
1453 | if ( empty( $activities_template->activity ) || empty( $activities_template->activity->item_id ) ) |
---|
1454 | return false; |
---|
1455 | |
---|
1456 | // Get the ID of the parent activity content |
---|
1457 | if ( !$parent_id = $activities_template->activity->item_id ) |
---|
1458 | return false; |
---|
1459 | |
---|
1460 | // Bail if no parent item |
---|
1461 | if ( empty( $activities_template->activity_parents[$parent_id] ) ) |
---|
1462 | return false; |
---|
1463 | |
---|
1464 | // Bail if no parent user ID |
---|
1465 | if ( empty( $activities_template->activity_parents[$parent_id]->user_id ) ) |
---|
1466 | return false; |
---|
1467 | |
---|
1468 | $retval = $activities_template->activity_parents[$parent_id]->user_id; |
---|
1469 | |
---|
1470 | return (int) apply_filters( 'bp_get_activity_parent_user_id', $retval ); |
---|
1471 | } |
---|
1472 | |
---|
1473 | /** |
---|
1474 | * Output whether or not the current activity is in a current user's favorites |
---|
1475 | * |
---|
1476 | * @since BuddyPress (1.2) |
---|
1477 | * |
---|
1478 | * @uses bp_get_activity_is_favorite() |
---|
1479 | */ |
---|
1480 | function bp_activity_is_favorite() { |
---|
1481 | echo bp_get_activity_is_favorite(); |
---|
1482 | } |
---|
1483 | |
---|
1484 | /** |
---|
1485 | * Return whether or not the current activity is in a current user's favorites |
---|
1486 | * |
---|
1487 | * @since BuddyPress (1.2) |
---|
1488 | * |
---|
1489 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1490 | * @uses apply_filters() To call the 'bp_get_activity_is_favorite' hook |
---|
1491 | * |
---|
1492 | * @return bool True if user favorite, false otherwise |
---|
1493 | */ |
---|
1494 | function bp_get_activity_is_favorite() { |
---|
1495 | global $activities_template; |
---|
1496 | |
---|
1497 | return apply_filters( 'bp_get_activity_is_favorite', in_array( $activities_template->activity->id, (array) $activities_template->my_favs ) ); |
---|
1498 | } |
---|
1499 | |
---|
1500 | /** |
---|
1501 | * Echoes the comment markup for an activity item |
---|
1502 | * |
---|
1503 | * @since BuddyPress (1.2) |
---|
1504 | * |
---|
1505 | * @todo deprecate $args param |
---|
1506 | * |
---|
1507 | * @param string $args Unused. Appears to be left over from an earlier implementation. |
---|
1508 | */ |
---|
1509 | function bp_activity_comments( $args = '' ) { |
---|
1510 | echo bp_activity_get_comments( $args ); |
---|
1511 | } |
---|
1512 | |
---|
1513 | /** |
---|
1514 | * Gets the comment markup for an activity item |
---|
1515 | * |
---|
1516 | * @since BuddyPress (1.2) |
---|
1517 | * |
---|
1518 | * @todo deprecate $args param |
---|
1519 | * |
---|
1520 | * @todo Given that checks for children already happen in bp_activity_recurse_comments(), |
---|
1521 | * this function can probably be streamlined or removed. |
---|
1522 | * |
---|
1523 | * @param string $args Unused. Appears to be left over from an earlier implementation. |
---|
1524 | * |
---|
1525 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1526 | * @uses bp_activity_recurse_comments() |
---|
1527 | */ |
---|
1528 | function bp_activity_get_comments( $args = '' ) { |
---|
1529 | global $activities_template; |
---|
1530 | |
---|
1531 | if ( !isset( $activities_template->activity->children ) || !$activities_template->activity->children ) |
---|
1532 | return false; |
---|
1533 | |
---|
1534 | bp_activity_recurse_comments( $activities_template->activity ); |
---|
1535 | } |
---|
1536 | |
---|
1537 | /** |
---|
1538 | * Loops through a level of activity comments and loads the template for each |
---|
1539 | * |
---|
1540 | * Note: The recursion itself used to happen entirely in this function. Now it is |
---|
1541 | * split between here and the comment.php template. |
---|
1542 | * |
---|
1543 | * @since BuddyPress (1.2) |
---|
1544 | * |
---|
1545 | * @todo remove $counter global |
---|
1546 | * |
---|
1547 | * @param object $comment The activity object currently being recursed |
---|
1548 | * |
---|
1549 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1550 | * @uses locate_template() |
---|
1551 | */ |
---|
1552 | function bp_activity_recurse_comments( $comment ) { |
---|
1553 | global $activities_template; |
---|
1554 | |
---|
1555 | if ( empty( $comment ) ) |
---|
1556 | return false; |
---|
1557 | |
---|
1558 | if ( empty( $comment->children ) ) |
---|
1559 | return false; |
---|
1560 | |
---|
1561 | echo apply_filters( 'bp_activity_recurse_comments_start_ul', '<ul>'); |
---|
1562 | foreach ( (array) $comment->children as $comment_child ) { |
---|
1563 | // Put the comment into the global so it's available to filters |
---|
1564 | $activities_template->activity->current_comment = $comment_child; |
---|
1565 | |
---|
1566 | $template = bp_locate_template( 'activity/comment.php', false, false ); |
---|
1567 | |
---|
1568 | // Backward compatibility. In older versions of BP, the markup was |
---|
1569 | // generated in the PHP instead of a template. This ensures that |
---|
1570 | // older themes (which are not children of bp-default and won't |
---|
1571 | // have the new template) will still work. |
---|
1572 | if ( !$template ) { |
---|
1573 | $template = BP_PLUGIN_DIR . '/bp-themes/bp-default/activity/comment.php'; |
---|
1574 | } |
---|
1575 | |
---|
1576 | load_template( $template, false ); |
---|
1577 | |
---|
1578 | unset( $activities_template->activity->current_comment ); |
---|
1579 | } |
---|
1580 | echo apply_filters( 'bp_activity_recurse_comments_end_ul', '</ul>'); |
---|
1581 | } |
---|
1582 | |
---|
1583 | /** |
---|
1584 | * Utility function that returns the comment currently being recursed |
---|
1585 | * |
---|
1586 | * @since BuddyPress (1.5) |
---|
1587 | * |
---|
1588 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1589 | * @uses apply_filters() To call the 'bp_activity_current_comment' hook |
---|
1590 | * |
---|
1591 | * @return object|bool $current_comment The activity comment currently being displayed. False on failure |
---|
1592 | */ |
---|
1593 | function bp_activity_current_comment() { |
---|
1594 | global $activities_template; |
---|
1595 | |
---|
1596 | $current_comment = !empty( $activities_template->activity->current_comment ) ? $activities_template->activity->current_comment : false; |
---|
1597 | |
---|
1598 | return apply_filters( 'bp_activity_current_comment', $current_comment ); |
---|
1599 | } |
---|
1600 | |
---|
1601 | |
---|
1602 | /** |
---|
1603 | * Echoes the id of the activity comment currently being displayed |
---|
1604 | * |
---|
1605 | * @since BuddyPress (1.5) |
---|
1606 | * |
---|
1607 | * @uses bp_get_activity_comment_id() |
---|
1608 | */ |
---|
1609 | function bp_activity_comment_id() { |
---|
1610 | echo bp_get_activity_comment_id(); |
---|
1611 | } |
---|
1612 | |
---|
1613 | /** |
---|
1614 | * Gets the id of the activity comment currently being displayed |
---|
1615 | * |
---|
1616 | * @since BuddyPress (1.5) |
---|
1617 | * |
---|
1618 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1619 | * @uses apply_filters() To call the 'bp_activity_comment_id' hook |
---|
1620 | * |
---|
1621 | * @return int $comment_id The id of the activity comment currently being displayed |
---|
1622 | */ |
---|
1623 | function bp_get_activity_comment_id() { |
---|
1624 | global $activities_template; |
---|
1625 | |
---|
1626 | $comment_id = isset( $activities_template->activity->current_comment->id ) ? $activities_template->activity->current_comment->id : false; |
---|
1627 | |
---|
1628 | return apply_filters( 'bp_activity_comment_id', $comment_id ); |
---|
1629 | } |
---|
1630 | |
---|
1631 | /** |
---|
1632 | * Echoes the user_id of the author of the activity comment currently being displayed |
---|
1633 | * |
---|
1634 | * @since BuddyPress (1.5) |
---|
1635 | * |
---|
1636 | * @uses bp_get_activity_comment_user_id() |
---|
1637 | */ |
---|
1638 | function bp_activity_comment_user_id() { |
---|
1639 | echo bp_get_activity_comment_user_id(); |
---|
1640 | } |
---|
1641 | |
---|
1642 | /** |
---|
1643 | * Gets the user_id of the author of the activity comment currently being displayed |
---|
1644 | * |
---|
1645 | * @since BuddyPress (1.5) |
---|
1646 | * |
---|
1647 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1648 | * @uses apply_filters() To call the 'bp_activity_comment_user_id' hook |
---|
1649 | * |
---|
1650 | * @return int|bool $user_id The user_id of the author of the displayed activity comment. False on failure |
---|
1651 | */ |
---|
1652 | function bp_get_activity_comment_user_id() { |
---|
1653 | global $activities_template; |
---|
1654 | |
---|
1655 | $user_id = isset( $activities_template->activity->current_comment->user_id ) ? $activities_template->activity->current_comment->user_id : false; |
---|
1656 | |
---|
1657 | return apply_filters( 'bp_activity_comment_user_id', $user_id ); |
---|
1658 | } |
---|
1659 | |
---|
1660 | /** |
---|
1661 | * Echoes the author link for the activity comment currently being displayed |
---|
1662 | * |
---|
1663 | * @since BuddyPress (1.5) |
---|
1664 | * |
---|
1665 | * @uses bp_get_activity_comment_user_link() |
---|
1666 | */ |
---|
1667 | function bp_activity_comment_user_link() { |
---|
1668 | echo bp_get_activity_comment_user_link(); |
---|
1669 | } |
---|
1670 | |
---|
1671 | /** |
---|
1672 | * Gets the author link for the activity comment currently being displayed |
---|
1673 | * |
---|
1674 | * @since BuddyPress (1.5) |
---|
1675 | * |
---|
1676 | * @uses bp_core_get_user_domain() |
---|
1677 | * @uses bp_get_activity_comment_user_id() |
---|
1678 | * @uses apply_filters() To call the 'bp_activity_comment_user_link' hook |
---|
1679 | * |
---|
1680 | * @return string $user_link The URL of the activity comment author's profile |
---|
1681 | */ |
---|
1682 | function bp_get_activity_comment_user_link() { |
---|
1683 | $user_link = bp_core_get_user_domain( bp_get_activity_comment_user_id() ); |
---|
1684 | |
---|
1685 | return apply_filters( 'bp_activity_comment_user_link', $user_link ); |
---|
1686 | } |
---|
1687 | |
---|
1688 | /** |
---|
1689 | * Echoes the author name for the activity comment currently being displayed |
---|
1690 | * |
---|
1691 | * @since BuddyPress (1.5) |
---|
1692 | * |
---|
1693 | * @uses bp_get_activity_comment_name() |
---|
1694 | */ |
---|
1695 | function bp_activity_comment_name() { |
---|
1696 | echo bp_get_activity_comment_name(); |
---|
1697 | } |
---|
1698 | |
---|
1699 | /** |
---|
1700 | * Gets the author name for the activity comment currently being displayed |
---|
1701 | * |
---|
1702 | * The use of the bp_acomment_name filter is deprecated. Please use bp_activity_comment_name |
---|
1703 | * |
---|
1704 | * @since BuddyPress (1.5) |
---|
1705 | * |
---|
1706 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1707 | * @uses apply_filters() To call the 'bp_acomment_name' hook |
---|
1708 | * @uses apply_filters() To call the 'bp_activity_comment_name' hook |
---|
1709 | * |
---|
1710 | * @return string $name The full name of the activity comment author |
---|
1711 | */ |
---|
1712 | function bp_get_activity_comment_name() { |
---|
1713 | global $activities_template; |
---|
1714 | |
---|
1715 | if ( isset( $activities_template->activity->current_comment->user_fullname ) ) |
---|
1716 | $name = apply_filters( 'bp_acomment_name', $activities_template->activity->current_comment->user_fullname, $activities_template->activity->current_comment ); // backward compatibility |
---|
1717 | else |
---|
1718 | $name = $activities_template->activity->current_comment->display_name; |
---|
1719 | |
---|
1720 | return apply_filters( 'bp_activity_comment_name', $name ); |
---|
1721 | } |
---|
1722 | |
---|
1723 | /** |
---|
1724 | * Echoes the date_recorded of the activity comment currently being displayed |
---|
1725 | * |
---|
1726 | * @since BuddyPress (1.5) |
---|
1727 | * |
---|
1728 | * @uses bp_get_activity_comment_date_recorded() |
---|
1729 | */ |
---|
1730 | function bp_activity_comment_date_recorded() { |
---|
1731 | echo bp_get_activity_comment_date_recorded(); |
---|
1732 | } |
---|
1733 | |
---|
1734 | /** |
---|
1735 | * Gets the date_recorded for the activity comment currently being displayed |
---|
1736 | * |
---|
1737 | * @since BuddyPress (1.5) |
---|
1738 | * |
---|
1739 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1740 | * @uses bp_core_time_since() |
---|
1741 | * @uses apply_filters() To call the 'bp_activity_comment_date_recorded' hook |
---|
1742 | * |
---|
1743 | * @return string|bool $date_recorded Time since the activity was recorded, of the form "%s ago". False on failure |
---|
1744 | */ |
---|
1745 | function bp_get_activity_comment_date_recorded() { |
---|
1746 | global $activities_template; |
---|
1747 | |
---|
1748 | if ( empty( $activities_template->activity->current_comment->date_recorded ) ) |
---|
1749 | return false; |
---|
1750 | |
---|
1751 | $date_recorded = bp_core_time_since( $activities_template->activity->current_comment->date_recorded ); |
---|
1752 | |
---|
1753 | return apply_filters( 'bp_activity_comment_date_recorded', $date_recorded ); |
---|
1754 | } |
---|
1755 | |
---|
1756 | /** |
---|
1757 | * Echoes the 'delete' URL for the activity comment currently being displayed |
---|
1758 | * |
---|
1759 | * @since BuddyPress (1.5) |
---|
1760 | * |
---|
1761 | * @uses bp_get_activity_comment_delete_link() |
---|
1762 | */ |
---|
1763 | function bp_activity_comment_delete_link() { |
---|
1764 | echo bp_get_activity_comment_delete_link(); |
---|
1765 | } |
---|
1766 | |
---|
1767 | /** |
---|
1768 | * Gets the 'delete' URL for the activity comment currently being displayed |
---|
1769 | * |
---|
1770 | * @since BuddyPress (1.5) |
---|
1771 | * |
---|
1772 | * @uses wp_nonce_url() |
---|
1773 | * @uses bp_get_root_domain() |
---|
1774 | * @uses bp_get_activity_slug() |
---|
1775 | * @uses bp_get_activity_comment_id() |
---|
1776 | * @uses apply_filters() To call the 'bp_activity_comment_delete_link' hook |
---|
1777 | * |
---|
1778 | * @return string $link The nonced URL for deleting the current activity comment |
---|
1779 | */ |
---|
1780 | function bp_get_activity_comment_delete_link() { |
---|
1781 | $link = wp_nonce_url( bp_get_root_domain() . '/' . bp_get_activity_slug() . '/delete/' . bp_get_activity_comment_id() . '?cid=' . bp_get_activity_comment_id(), 'bp_activity_delete_link' ); |
---|
1782 | |
---|
1783 | return apply_filters( 'bp_activity_comment_delete_link', $link ); |
---|
1784 | } |
---|
1785 | |
---|
1786 | /** |
---|
1787 | * Echoes the content of the activity comment currently being displayed |
---|
1788 | * |
---|
1789 | * @since BuddyPress (1.5) |
---|
1790 | * |
---|
1791 | * @uses bp_get_activity_comment_content() |
---|
1792 | */ |
---|
1793 | function bp_activity_comment_content() { |
---|
1794 | echo bp_get_activity_comment_content(); |
---|
1795 | } |
---|
1796 | |
---|
1797 | /** |
---|
1798 | * Gets the content of the activity comment currently being displayed |
---|
1799 | * |
---|
1800 | * The content is run through two filters. bp_get_activity_content will apply all filters |
---|
1801 | * applied to activity items in general. Use bp_activity_comment_content to modify the |
---|
1802 | * content of activity comments only. |
---|
1803 | * |
---|
1804 | * @since BuddyPress (1.5) |
---|
1805 | * |
---|
1806 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1807 | * @uses apply_filters() To call the 'bp_get_activity_content' hook |
---|
1808 | * @uses apply_filters() To call the 'bp_activity_comment_content' hook |
---|
1809 | * |
---|
1810 | * @return string $content The content of the current activity comment |
---|
1811 | */ |
---|
1812 | function bp_get_activity_comment_content() { |
---|
1813 | global $activities_template; |
---|
1814 | |
---|
1815 | $content = apply_filters( 'bp_get_activity_content', $activities_template->activity->current_comment->content ); |
---|
1816 | |
---|
1817 | return apply_filters( 'bp_activity_comment_content', $content ); |
---|
1818 | } |
---|
1819 | |
---|
1820 | /** |
---|
1821 | * Echoes the activity comment count |
---|
1822 | * |
---|
1823 | * @since BuddyPress (1.2) |
---|
1824 | * |
---|
1825 | * @uses bp_activity_get_comment_count() |
---|
1826 | */ |
---|
1827 | function bp_activity_comment_count() { |
---|
1828 | echo bp_activity_get_comment_count(); |
---|
1829 | } |
---|
1830 | |
---|
1831 | /** |
---|
1832 | * Gets the content of the activity comment currently being displayed |
---|
1833 | * |
---|
1834 | * The content is run through two filters. bp_get_activity_content will apply all filters |
---|
1835 | * applied to activity items in general. Use bp_activity_comment_content to modify the |
---|
1836 | * content of activity comments only. |
---|
1837 | * |
---|
1838 | * @since BuddyPress (1.2) |
---|
1839 | * |
---|
1840 | * @todo deprecate $args |
---|
1841 | * |
---|
1842 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1843 | * @uses bp_activity_recurse_comment_count() |
---|
1844 | * @uses apply_filters() To call the 'bp_activity_get_comment_count' hook |
---|
1845 | * |
---|
1846 | * @return int $count The activity comment count. Defaults to zero |
---|
1847 | */ |
---|
1848 | function bp_activity_get_comment_count( $args = '' ) { |
---|
1849 | global $activities_template; |
---|
1850 | |
---|
1851 | if ( !isset( $activities_template->activity->children ) || !$activities_template->activity->children ) |
---|
1852 | return 0; |
---|
1853 | |
---|
1854 | $count = bp_activity_recurse_comment_count( $activities_template->activity ); |
---|
1855 | |
---|
1856 | return apply_filters( 'bp_activity_get_comment_count', (int) $count ); |
---|
1857 | } |
---|
1858 | |
---|
1859 | /** |
---|
1860 | * Gets the content of the activity comment currently being displayed |
---|
1861 | * |
---|
1862 | * The content is run through two filters. bp_get_activity_content will apply all filters |
---|
1863 | * applied to activity items in general. Use bp_activity_comment_content to modify the |
---|
1864 | * content of activity comments only. |
---|
1865 | * |
---|
1866 | * @since BuddyPress (1.2) |
---|
1867 | * |
---|
1868 | * @todo investigate why bp_activity_recurse_comment_count() is used while being declared |
---|
1869 | * |
---|
1870 | * @param object $comment Activity comments object |
---|
1871 | * |
---|
1872 | * @uses bp_activity_recurse_comment_count() |
---|
1873 | * @uses apply_filters() To call the 'bp_activity_get_comment_count' hook |
---|
1874 | * |
---|
1875 | * @return int $count The activity comment count. |
---|
1876 | */ |
---|
1877 | function bp_activity_recurse_comment_count( $comment, $count = 0 ) { |
---|
1878 | |
---|
1879 | if ( empty( $comment->children ) ) |
---|
1880 | return $count; |
---|
1881 | |
---|
1882 | foreach ( (array) $comment->children as $comment ) { |
---|
1883 | $count++; |
---|
1884 | $count = bp_activity_recurse_comment_count( $comment, $count ); |
---|
1885 | } |
---|
1886 | |
---|
1887 | return $count; |
---|
1888 | } |
---|
1889 | |
---|
1890 | /** |
---|
1891 | * Echoes the activity comment link |
---|
1892 | * |
---|
1893 | * @since BuddyPress (1.2) |
---|
1894 | * |
---|
1895 | * @uses bp_get_activity_comment_link() |
---|
1896 | */ |
---|
1897 | function bp_activity_comment_link() { |
---|
1898 | echo bp_get_activity_comment_link(); |
---|
1899 | } |
---|
1900 | |
---|
1901 | /** |
---|
1902 | * Gets the activity comment link |
---|
1903 | * |
---|
1904 | * @since BuddyPress (1.2) |
---|
1905 | * |
---|
1906 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1907 | * @uses apply_filters() To call the 'bp_get_activity_comment_link' hook |
---|
1908 | * |
---|
1909 | * @return string The activity comment link |
---|
1910 | */ |
---|
1911 | function bp_get_activity_comment_link() { |
---|
1912 | global $activities_template; |
---|
1913 | return apply_filters( 'bp_get_activity_comment_link', '?ac=' . $activities_template->activity->id . '/#ac-form-' . $activities_template->activity->id ); |
---|
1914 | } |
---|
1915 | |
---|
1916 | /** |
---|
1917 | * Echoes the activity comment form no javascript display CSS |
---|
1918 | * |
---|
1919 | * @since BuddyPress (1.2) |
---|
1920 | * |
---|
1921 | * @uses bp_get_activity_comment_form_nojs_display() |
---|
1922 | */ |
---|
1923 | function bp_activity_comment_form_nojs_display() { |
---|
1924 | echo bp_get_activity_comment_form_nojs_display(); |
---|
1925 | } |
---|
1926 | |
---|
1927 | /** |
---|
1928 | * Gets the activity comment form no javascript display CSS |
---|
1929 | * |
---|
1930 | * @since BuddyPress (1.2) |
---|
1931 | * |
---|
1932 | * @global object $activities_template {@link BP_Activity_Template} |
---|
1933 | * |
---|
1934 | * @return string|bool The activity comment form no javascript display CSS. False on failure |
---|
1935 | */ |
---|
1936 | function bp_get_activity_comment_form_nojs_display() { |
---|
1937 | global $activities_template; |
---|
1938 | if ( isset( $_GET['ac'] ) && $_GET['ac'] == $activities_template->activity->id . '/' ) |
---|
1939 | return 'style="display: block"'; |
---|
1940 | |
---|
1941 | return false; |
---|
1942 | } |
---|
1943 | |
---|
1944 | /** |
---|
1945 | * Echoes the activity comment form action |
---|
1946 | * |
---|
1947 | * @since BuddyPress (1.2) |
---|
1948 | * |
---|
1949 | * @uses bp_get_activity_comment_form_action() |
---|
1950 | */ |
---|
1951 | function bp_activity_comment_form_action() { |
---|
1952 | echo bp_get_activity_comment_form_action(); |
---|
1953 | } |
---|
1954 | |
---|
1955 | /** |
---|
1956 | * Gets the activity comment form action |
---|
1957 | * |
---|
1958 | * @since BuddyPress (1.2) |
---|
1959 | * |
---|
1960 | * @uses home_url() |
---|
1961 | * @uses bp_get_activity_root_slug() |
---|
1962 | * @uses apply_filters() To call the 'bp_get_activity_comment_form_action' hook |
---|
1963 | * |
---|
1964 | * @return string The activity comment form action |
---|
1965 | */ |
---|
1966 | function bp_get_activity_comment_form_action() { |
---|
1967 | return apply_filters( 'bp_get_activity_comment_form_action', home_url( bp_get_activity_root_slug() . '/reply/' ) ); |
---|
1968 | } |
---|
1969 | |
---|
1970 | /** |
---|
1971 | * Echoes the activity permalink id |
---|
1972 | * |
---|
1973 | * @since BuddyPress (1.2) |
---|
1974 | * |
---|
1975 | * @uses bp_get_activity_permalink_id() |
---|
1976 | */ |
---|
1977 | function bp_activity_permalink_id() { |
---|
1978 | echo bp_get_activity_permalink_id(); |
---|
1979 | } |
---|
1980 | |
---|
1981 | /** |
---|
1982 | * Gets the activity permalink id |
---|
1983 | * |
---|
1984 | * @since BuddyPress (1.2) |
---|
1985 | * |
---|
1986 | * @uses apply_filters() To call the 'bp_get_activity_permalink_id' hook |
---|
1987 | * |
---|
1988 | * @return string The activity permalink id |
---|
1989 | */ |
---|
1990 | function bp_get_activity_permalink_id() { |
---|
1991 | return apply_filters( 'bp_get_activity_permalink_id', bp_current_action() ); |
---|
1992 | } |
---|
1993 | |
---|
1994 | /** |
---|
1995 | * Echoes the activity thread permalink |
---|
1996 | * |
---|
1997 | * @since BuddyPress (1.2) |
---|
1998 | * |
---|
1999 | * @uses bp_get_activity_permalink_id() |
---|
2000 | */ |
---|
2001 | function bp_activity_thread_permalink() { |
---|
2002 | echo bp_get_activity_thread_permalink(); |
---|
2003 | } |
---|
2004 | |
---|
2005 | /** |
---|
2006 | * Gets the activity thread permalink |
---|
2007 | * |
---|
2008 | * @since BuddyPress (1.2) |
---|
2009 | * |
---|
2010 | * @uses bp_activity_get_permalink() |
---|
2011 | * @uses apply_filters() To call the 'bp_get_activity_thread_permalink' hook |
---|
2012 | * |
---|
2013 | * @return string $link The activity thread permalink |
---|
2014 | */ |
---|
2015 | function bp_get_activity_thread_permalink() { |
---|
2016 | global $activities_template; |
---|
2017 | |
---|
2018 | $link = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ); |
---|
2019 | |
---|
2020 | return apply_filters( 'bp_get_activity_thread_permalink', $link ); |
---|
2021 | } |
---|
2022 | |
---|
2023 | /** |
---|
2024 | * Echoes the activity favorite link |
---|
2025 | * |
---|
2026 | * @since BuddyPress (1.2) |
---|
2027 | * |
---|
2028 | * @uses bp_get_activity_favorite_link() |
---|
2029 | */ |
---|
2030 | function bp_activity_favorite_link() { |
---|
2031 | echo bp_get_activity_favorite_link(); |
---|
2032 | } |
---|
2033 | |
---|
2034 | /** |
---|
2035 | * Gets the activity favorite link |
---|
2036 | * |
---|
2037 | * @since BuddyPress (1.2) |
---|
2038 | * |
---|
2039 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2040 | * @uses wp_nonce_url() |
---|
2041 | * @uses home_url() |
---|
2042 | * @uses bp_get_activity_root_slug() |
---|
2043 | * @uses apply_filters() To call the 'bp_get_activity_favorite_link' hook |
---|
2044 | * |
---|
2045 | * @return string The activity favorite link |
---|
2046 | */ |
---|
2047 | function bp_get_activity_favorite_link() { |
---|
2048 | global $activities_template; |
---|
2049 | return apply_filters( 'bp_get_activity_favorite_link', wp_nonce_url( home_url( bp_get_activity_root_slug() . '/favorite/' . $activities_template->activity->id . '/' ), 'mark_favorite' ) ); |
---|
2050 | } |
---|
2051 | |
---|
2052 | /** |
---|
2053 | * Echoes the activity unfavorite link |
---|
2054 | * |
---|
2055 | * @since BuddyPress (1.2) |
---|
2056 | * |
---|
2057 | * @uses bp_get_activity_unfavorite_link() |
---|
2058 | */ |
---|
2059 | function bp_activity_unfavorite_link() { |
---|
2060 | echo bp_get_activity_unfavorite_link(); |
---|
2061 | } |
---|
2062 | |
---|
2063 | /** |
---|
2064 | * Gets the activity unfavorite link |
---|
2065 | * |
---|
2066 | * @since BuddyPress (1.2) |
---|
2067 | * |
---|
2068 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2069 | * @uses wp_nonce_url() |
---|
2070 | * @uses home_url() |
---|
2071 | * @uses bp_get_activity_root_slug() |
---|
2072 | * @uses apply_filters() To call the 'bp_get_activity_unfavorite_link' hook |
---|
2073 | * |
---|
2074 | * @return string The activity unfavorite link |
---|
2075 | */ |
---|
2076 | function bp_get_activity_unfavorite_link() { |
---|
2077 | global $activities_template; |
---|
2078 | return apply_filters( 'bp_get_activity_unfavorite_link', wp_nonce_url( home_url( bp_get_activity_root_slug() . '/unfavorite/' . $activities_template->activity->id . '/' ), 'unmark_favorite' ) ); |
---|
2079 | } |
---|
2080 | |
---|
2081 | /** |
---|
2082 | * Echoes the activity CSS class |
---|
2083 | * |
---|
2084 | * @since BuddyPress (1.0) |
---|
2085 | * |
---|
2086 | * @uses bp_get_activity_css_class() |
---|
2087 | */ |
---|
2088 | function bp_activity_css_class() { |
---|
2089 | echo bp_get_activity_css_class(); |
---|
2090 | } |
---|
2091 | |
---|
2092 | /** |
---|
2093 | * Gets the activity CSS class |
---|
2094 | * |
---|
2095 | * @since BuddyPress (1.0) |
---|
2096 | * |
---|
2097 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2098 | * @uses apply_filters() To call the 'bp_activity_mini_activity_types' hook |
---|
2099 | * @uses bp_activity_get_comment_count() |
---|
2100 | * @uses bp_activity_can_comment() |
---|
2101 | * @uses apply_filters() To call the 'bp_get_activity_css_class' hook |
---|
2102 | * |
---|
2103 | * @return string The activity css class |
---|
2104 | */ |
---|
2105 | function bp_get_activity_css_class() { |
---|
2106 | global $activities_template; |
---|
2107 | |
---|
2108 | $mini_activity_actions = apply_filters( 'bp_activity_mini_activity_types', array( |
---|
2109 | 'friendship_accepted', |
---|
2110 | 'friendship_created', |
---|
2111 | 'new_blog', |
---|
2112 | 'joined_group', |
---|
2113 | 'created_group', |
---|
2114 | 'new_member' |
---|
2115 | ) ); |
---|
2116 | |
---|
2117 | $class = ' activity-item'; |
---|
2118 | |
---|
2119 | if ( in_array( $activities_template->activity->type, (array) $mini_activity_actions ) || empty( $activities_template->activity->content ) ) |
---|
2120 | $class .= ' mini'; |
---|
2121 | |
---|
2122 | if ( bp_activity_get_comment_count() && bp_activity_can_comment() ) |
---|
2123 | $class .= ' has-comments'; |
---|
2124 | |
---|
2125 | return apply_filters( 'bp_get_activity_css_class', $activities_template->activity->component . ' ' . $activities_template->activity->type . $class ); |
---|
2126 | } |
---|
2127 | |
---|
2128 | /** |
---|
2129 | * Display the activity delete link. |
---|
2130 | * |
---|
2131 | * @since BuddyPress (1.1) |
---|
2132 | * |
---|
2133 | * @uses bp_get_activity_delete_link() |
---|
2134 | */ |
---|
2135 | function bp_activity_delete_link() { |
---|
2136 | echo bp_get_activity_delete_link(); |
---|
2137 | } |
---|
2138 | |
---|
2139 | /** |
---|
2140 | * Return the activity delete link. |
---|
2141 | * |
---|
2142 | * @since BuddyPress (1.1) |
---|
2143 | * |
---|
2144 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2145 | * @uses bp_get_root_domain() |
---|
2146 | * @uses bp_get_activity_root_slug() |
---|
2147 | * @uses bp_is_activity_component() |
---|
2148 | * @uses bp_current_action() |
---|
2149 | * @uses add_query_arg() |
---|
2150 | * @uses wp_get_referer() |
---|
2151 | * @uses wp_nonce_url() |
---|
2152 | * @uses apply_filters() To call the 'bp_get_activity_delete_link' hook |
---|
2153 | * |
---|
2154 | * @return string $link Activity delete link. Contains $redirect_to arg if on single activity page. |
---|
2155 | */ |
---|
2156 | function bp_get_activity_delete_link() { |
---|
2157 | global $activities_template; |
---|
2158 | |
---|
2159 | $url = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/delete/' . $activities_template->activity->id; |
---|
2160 | $class = 'delete-activity'; |
---|
2161 | |
---|
2162 | // Determine if we're on a single activity page, and customize accordingly |
---|
2163 | if ( bp_is_activity_component() && is_numeric( bp_current_action() ) ) { |
---|
2164 | $url = add_query_arg( array( 'redirect_to' => wp_get_referer() ), $url ); |
---|
2165 | $class = 'delete-activity-single'; |
---|
2166 | } |
---|
2167 | |
---|
2168 | $link = '<a href="' . wp_nonce_url( $url, 'bp_activity_delete_link' ) . '" class="button item-button bp-secondary-action ' . $class . ' confirm" rel="nofollow">' . __( 'Delete', 'buddypress' ) . '</a>'; |
---|
2169 | return apply_filters( 'bp_get_activity_delete_link', $link ); |
---|
2170 | } |
---|
2171 | |
---|
2172 | /** |
---|
2173 | * Display the activity latest update link. |
---|
2174 | * |
---|
2175 | * @since BuddyPress (1.2) |
---|
2176 | * |
---|
2177 | * @param int $user_id Defaults to 0 |
---|
2178 | * |
---|
2179 | * @uses bp_get_activity_latest_update() |
---|
2180 | */ |
---|
2181 | function bp_activity_latest_update( $user_id = 0 ) { |
---|
2182 | echo bp_get_activity_latest_update( $user_id ); |
---|
2183 | } |
---|
2184 | |
---|
2185 | /** |
---|
2186 | * Return the activity latest update link. |
---|
2187 | * |
---|
2188 | * @since BuddyPress (1.2) |
---|
2189 | * |
---|
2190 | * @param int $user_id Defaults to 0 |
---|
2191 | * |
---|
2192 | * @uses bp_is_user_inactive() |
---|
2193 | * @uses bp_core_is_user_deleted() |
---|
2194 | * @uses bp_get_user_meta() |
---|
2195 | * @uses apply_filters() To call the 'bp_get_activity_latest_update_excerpt' hook |
---|
2196 | * @uses bp_create_excerpt() |
---|
2197 | * @uses bp_get_root_domain() |
---|
2198 | * @uses bp_get_activity_root_slug() |
---|
2199 | * @uses apply_filters() To call the 'bp_get_activity_latest_update' hook |
---|
2200 | * |
---|
2201 | * @return string|bool $latest_update The activity latest update link. False on failure |
---|
2202 | */ |
---|
2203 | function bp_get_activity_latest_update( $user_id = 0 ) { |
---|
2204 | |
---|
2205 | if ( empty( $user_id ) ) |
---|
2206 | $user_id = bp_displayed_user_id(); |
---|
2207 | |
---|
2208 | if ( bp_is_user_inactive( $user_id ) ) |
---|
2209 | return false; |
---|
2210 | |
---|
2211 | if ( !$update = bp_get_user_meta( $user_id, 'bp_latest_update', true ) ) |
---|
2212 | return false; |
---|
2213 | |
---|
2214 | $latest_update = apply_filters( 'bp_get_activity_latest_update_excerpt', trim( strip_tags( bp_create_excerpt( $update['content'], 358 ) ) ) ); |
---|
2215 | $latest_update .= ' <a href="' . bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $update['id'] . '/"> ' . __( 'View', 'buddypress' ) . '</a>'; |
---|
2216 | |
---|
2217 | return apply_filters( 'bp_get_activity_latest_update', $latest_update ); |
---|
2218 | } |
---|
2219 | |
---|
2220 | /** |
---|
2221 | * Display the activity filter links. |
---|
2222 | * |
---|
2223 | * @since BuddyPress (1.1) |
---|
2224 | * |
---|
2225 | * @param array $args Defaults to false |
---|
2226 | * |
---|
2227 | * @uses bp_get_activity_filter_links() |
---|
2228 | */ |
---|
2229 | function bp_activity_filter_links( $args = false ) { |
---|
2230 | echo bp_get_activity_filter_links( $args ); |
---|
2231 | } |
---|
2232 | |
---|
2233 | /** |
---|
2234 | * Return the activity filter links. |
---|
2235 | * |
---|
2236 | * @since BuddyPress (1.1) |
---|
2237 | * |
---|
2238 | * @param array $args Defaults to false |
---|
2239 | * |
---|
2240 | * @uses wp_parse_args() |
---|
2241 | * @uses BP_Activity_Activity::get_recorded_components() {@link BP_Activity_Activity} |
---|
2242 | * @uses esc_attr() |
---|
2243 | * @uses add_query_arg() |
---|
2244 | * @uses remove_query_arg() |
---|
2245 | * @uses apply_filters() To call the 'bp_get_activity_filter_link_href' hook |
---|
2246 | * @uses apply_filters() To call the 'bp_get_activity_filter_links' hook |
---|
2247 | * |
---|
2248 | * @return string|bool $component_links The activity filter links. False on failure |
---|
2249 | */ |
---|
2250 | function bp_get_activity_filter_links( $args = false ) { |
---|
2251 | |
---|
2252 | $defaults = array( |
---|
2253 | 'style' => 'list' |
---|
2254 | ); |
---|
2255 | |
---|
2256 | $r = wp_parse_args( $args, $defaults ); |
---|
2257 | extract( $r, EXTR_SKIP ); |
---|
2258 | |
---|
2259 | // Define local variable |
---|
2260 | $component_links = array(); |
---|
2261 | |
---|
2262 | // Fetch the names of components that have activity recorded in the DB |
---|
2263 | $components = BP_Activity_Activity::get_recorded_components(); |
---|
2264 | |
---|
2265 | if ( empty( $components ) ) |
---|
2266 | return false; |
---|
2267 | |
---|
2268 | foreach ( (array) $components as $component ) { |
---|
2269 | |
---|
2270 | // Skip the activity comment filter |
---|
2271 | if ( 'activity' == $component ) |
---|
2272 | continue; |
---|
2273 | |
---|
2274 | if ( isset( $_GET['afilter'] ) && $component == $_GET['afilter'] ) |
---|
2275 | $selected = ' class="selected"'; |
---|
2276 | else |
---|
2277 | unset($selected); |
---|
2278 | |
---|
2279 | $component = esc_attr( $component ); |
---|
2280 | |
---|
2281 | switch ( $style ) { |
---|
2282 | case 'list': |
---|
2283 | $tag = 'li'; |
---|
2284 | $before = '<li id="afilter-' . $component . '"' . $selected . '>'; |
---|
2285 | $after = '</li>'; |
---|
2286 | break; |
---|
2287 | case 'paragraph': |
---|
2288 | $tag = 'p'; |
---|
2289 | $before = '<p id="afilter-' . $component . '"' . $selected . '>'; |
---|
2290 | $after = '</p>'; |
---|
2291 | break; |
---|
2292 | case 'span': |
---|
2293 | $tag = 'span'; |
---|
2294 | $before = '<span id="afilter-' . $component . '"' . $selected . '>'; |
---|
2295 | $after = '</span>'; |
---|
2296 | break; |
---|
2297 | } |
---|
2298 | |
---|
2299 | $link = add_query_arg( 'afilter', $component ); |
---|
2300 | $link = remove_query_arg( 'acpage' , $link ); |
---|
2301 | $link = apply_filters( 'bp_get_activity_filter_link_href', $link, $component ); |
---|
2302 | |
---|
2303 | $component_links[] = $before . '<a href="' . esc_attr( $link ) . '">' . ucwords( $component ) . '</a>' . $after; |
---|
2304 | } |
---|
2305 | |
---|
2306 | $link = remove_query_arg( 'afilter' , $link ); |
---|
2307 | |
---|
2308 | if ( isset( $_GET['afilter'] ) ) |
---|
2309 | $component_links[] = '<' . $tag . ' id="afilter-clear"><a href="' . esc_attr( $link ) . '">' . __( 'Clear Filter', 'buddypress' ) . '</a></' . $tag . '>'; |
---|
2310 | |
---|
2311 | return apply_filters( 'bp_get_activity_filter_links', implode( "\n", $component_links ) ); |
---|
2312 | } |
---|
2313 | |
---|
2314 | /** |
---|
2315 | * Determine if a comment can be made on an activity item |
---|
2316 | * |
---|
2317 | * @since BuddyPress (1.2) |
---|
2318 | * |
---|
2319 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2320 | * @uses bp_get_activity_action_name() |
---|
2321 | * @uses apply_filters() To call the 'bp_activity_can_comment' hook |
---|
2322 | * |
---|
2323 | * @return bool $can_comment Defaults to true |
---|
2324 | */ |
---|
2325 | function bp_activity_can_comment() { |
---|
2326 | global $activities_template; |
---|
2327 | |
---|
2328 | $can_comment = true; |
---|
2329 | |
---|
2330 | if ( false === $activities_template->disable_blogforum_replies || (int) $activities_template->disable_blogforum_replies ) { |
---|
2331 | if ( 'new_blog_post' == bp_get_activity_action_name() || 'new_blog_comment' == bp_get_activity_action_name() || 'new_forum_topic' == bp_get_activity_action_name() || 'new_forum_post' == bp_get_activity_action_name() ) |
---|
2332 | $can_comment = false; |
---|
2333 | } |
---|
2334 | |
---|
2335 | if ( 'activity_comment' == bp_get_activity_action_name() ) |
---|
2336 | $can_comment = false; |
---|
2337 | |
---|
2338 | return apply_filters( 'bp_activity_can_comment', $can_comment ); |
---|
2339 | } |
---|
2340 | |
---|
2341 | /** |
---|
2342 | * Determine if a comment can be made on an activity reply item |
---|
2343 | * |
---|
2344 | * @since BuddyPress (1.5) |
---|
2345 | * |
---|
2346 | * @param object $comment Activity comment |
---|
2347 | * |
---|
2348 | * @uses apply_filters() To call the 'bp_activity_can_comment_reply' hook |
---|
2349 | * |
---|
2350 | * @return bool $can_comment Defaults to true |
---|
2351 | */ |
---|
2352 | function bp_activity_can_comment_reply( $comment ) { |
---|
2353 | $can_comment = true; |
---|
2354 | |
---|
2355 | return apply_filters( 'bp_activity_can_comment_reply', $can_comment, $comment ); |
---|
2356 | } |
---|
2357 | |
---|
2358 | /** |
---|
2359 | * Determine if an favorites are allowed |
---|
2360 | * |
---|
2361 | * @since BuddyPress (1.5) |
---|
2362 | * |
---|
2363 | * @uses apply_filters() To call the 'bp_activity_can_favorite' hook |
---|
2364 | * |
---|
2365 | * @return bool $can_favorite Defaults to true |
---|
2366 | */ |
---|
2367 | function bp_activity_can_favorite() { |
---|
2368 | $can_favorite = true; |
---|
2369 | |
---|
2370 | return apply_filters( 'bp_activity_can_favorite', $can_favorite ); |
---|
2371 | } |
---|
2372 | |
---|
2373 | /** |
---|
2374 | * Echoes the total favorite count for a specified user |
---|
2375 | * |
---|
2376 | * @since BuddyPress (1.2) |
---|
2377 | * |
---|
2378 | * @param int $user_id Defaults to 0 |
---|
2379 | * |
---|
2380 | * @uses bp_get_total_favorite_count_for_user() |
---|
2381 | */ |
---|
2382 | function bp_total_favorite_count_for_user( $user_id = 0 ) { |
---|
2383 | echo bp_get_total_favorite_count_for_user( $user_id ); |
---|
2384 | } |
---|
2385 | |
---|
2386 | /** |
---|
2387 | * Returns the total favorite count for a specified user |
---|
2388 | * |
---|
2389 | * @since BuddyPress (1.2) |
---|
2390 | * |
---|
2391 | * @param int $user_id Defaults to 0 |
---|
2392 | * |
---|
2393 | * @uses bp_activity_total_favorites_for_user() |
---|
2394 | * @uses apply_filters() To call the 'bp_get_total_favorite_count_for_user' hook |
---|
2395 | * |
---|
2396 | * @return int The total favorite count for a specified user |
---|
2397 | */ |
---|
2398 | function bp_get_total_favorite_count_for_user( $user_id = 0 ) { |
---|
2399 | return apply_filters( 'bp_get_total_favorite_count_for_user', bp_activity_total_favorites_for_user( $user_id ) ); |
---|
2400 | } |
---|
2401 | |
---|
2402 | /** |
---|
2403 | * Echoes the total mention count for a specified user |
---|
2404 | * |
---|
2405 | * @since BuddyPress (1.2) |
---|
2406 | * |
---|
2407 | * @param int $user_id Defaults to 0 |
---|
2408 | * |
---|
2409 | * @uses bp_get_total_favorite_count_for_user() |
---|
2410 | */ |
---|
2411 | function bp_total_mention_count_for_user( $user_id = 0 ) { |
---|
2412 | echo bp_get_total_favorite_count_for_user( $user_id ); |
---|
2413 | } |
---|
2414 | |
---|
2415 | /** |
---|
2416 | * Returns the total mention count for a specified user |
---|
2417 | * |
---|
2418 | * @since BuddyPress (1.2) |
---|
2419 | * |
---|
2420 | * @param int $user_id Defaults to 0 |
---|
2421 | * @uses bp_get_user_meta() |
---|
2422 | * @uses apply_filters() To call the 'bp_get_total_mention_count_for_user' hook |
---|
2423 | * @return int The total mention count for a specified user |
---|
2424 | */ |
---|
2425 | function bp_get_total_mention_count_for_user( $user_id = 0 ) { |
---|
2426 | return apply_filters( 'bp_get_total_mention_count_for_user', bp_get_user_meta( $user_id, 'bp_new_mention_count', true ) ); |
---|
2427 | } |
---|
2428 | |
---|
2429 | /** |
---|
2430 | * Echoes the public message link for displayed user |
---|
2431 | * |
---|
2432 | * @since BuddyPress (1.2) |
---|
2433 | * |
---|
2434 | * @uses bp_get_send_public_message_link() |
---|
2435 | */ |
---|
2436 | function bp_send_public_message_link() { |
---|
2437 | echo bp_get_send_public_message_link(); |
---|
2438 | } |
---|
2439 | |
---|
2440 | /** |
---|
2441 | * Returns the public message link for displayed user |
---|
2442 | * |
---|
2443 | * @since BuddyPress (1.2) |
---|
2444 | * |
---|
2445 | * @global object $bp BuddyPress global settings |
---|
2446 | * @uses bp_is_my_profile() |
---|
2447 | * @uses is_user_logged_in() |
---|
2448 | * @uses wp_nonce_url() |
---|
2449 | * @uses bp_loggedin_user_domain() |
---|
2450 | * @uses bp_get_activity_slug() |
---|
2451 | * @uses bp_core_get_username() |
---|
2452 | * @uses apply_filters() To call the 'bp_get_send_public_message_link' hook |
---|
2453 | * |
---|
2454 | * @return string The public message link for displayed user |
---|
2455 | */ |
---|
2456 | function bp_get_send_public_message_link() { |
---|
2457 | global $bp; |
---|
2458 | |
---|
2459 | if ( bp_is_my_profile() || !is_user_logged_in() ) |
---|
2460 | return false; |
---|
2461 | |
---|
2462 | return apply_filters( 'bp_get_send_public_message_link', wp_nonce_url( bp_loggedin_user_domain() . bp_get_activity_slug() . '/?r=' . bp_core_get_username( bp_displayed_user_id(), bp_get_displayed_user_username(), $bp->displayed_user->userdata->user_login ) ) ); |
---|
2463 | } |
---|
2464 | |
---|
2465 | /** |
---|
2466 | * Echoes the mentioned user display name |
---|
2467 | * |
---|
2468 | * @since BuddyPress (1.2) |
---|
2469 | * |
---|
2470 | * @param int|string User id or username |
---|
2471 | * |
---|
2472 | * @uses bp_get_mentioned_user_display_name() |
---|
2473 | */ |
---|
2474 | function bp_mentioned_user_display_name( $user_id_or_username ) { |
---|
2475 | echo bp_get_mentioned_user_display_name( $user_id_or_username ); |
---|
2476 | } |
---|
2477 | |
---|
2478 | /** |
---|
2479 | * Returns the mentioned user display name |
---|
2480 | * |
---|
2481 | * @since BuddyPress (1.2) |
---|
2482 | * |
---|
2483 | * @param int|string User id or username |
---|
2484 | * |
---|
2485 | * @uses bp_core_get_user_displayname() |
---|
2486 | * @uses apply_filters() To call the 'bp_get_mentioned_user_display_name' hook |
---|
2487 | * |
---|
2488 | * @return string The mentioned user display name |
---|
2489 | */ |
---|
2490 | function bp_get_mentioned_user_display_name( $user_id_or_username ) { |
---|
2491 | if ( !$name = bp_core_get_user_displayname( $user_id_or_username ) ) |
---|
2492 | $name = __( 'a user', 'buddypress' ); |
---|
2493 | |
---|
2494 | return apply_filters( 'bp_get_mentioned_user_display_name', $name, $user_id_or_username ); |
---|
2495 | } |
---|
2496 | |
---|
2497 | /** |
---|
2498 | * Output button for sending a public message |
---|
2499 | * |
---|
2500 | * @since BuddyPress (1.2) |
---|
2501 | * |
---|
2502 | * @param array $args Optional |
---|
2503 | * |
---|
2504 | * @uses bp_get_send_public_message_button() |
---|
2505 | */ |
---|
2506 | function bp_send_public_message_button( $args = '' ) { |
---|
2507 | echo bp_get_send_public_message_button( $args ); |
---|
2508 | } |
---|
2509 | |
---|
2510 | /** |
---|
2511 | * Return button for sending a public message |
---|
2512 | * |
---|
2513 | * @since BuddyPress (1.2) |
---|
2514 | * |
---|
2515 | * @param array $args Optional |
---|
2516 | * |
---|
2517 | * @uses bp_get_send_public_message_link() |
---|
2518 | * @uses wp_parse_args() |
---|
2519 | * @uses bp_get_button() |
---|
2520 | * @uses apply_filters() To call the 'bp_get_send_public_message_button' hook |
---|
2521 | * |
---|
2522 | * @return string The button for sending a public message |
---|
2523 | */ |
---|
2524 | function bp_get_send_public_message_button( $args = '' ) { |
---|
2525 | $defaults = array( |
---|
2526 | 'id' => 'public_message', |
---|
2527 | 'component' => 'activity', |
---|
2528 | 'must_be_logged_in' => true, |
---|
2529 | 'block_self' => true, |
---|
2530 | 'wrapper_id' => 'post-mention', |
---|
2531 | 'link_href' => bp_get_send_public_message_link(), |
---|
2532 | 'link_title' => __( 'Send a public message on your activity stream.', 'buddypress' ), |
---|
2533 | 'link_text' => __( 'Public Message', 'buddypress' ), |
---|
2534 | 'link_class' => 'activity-button mention' |
---|
2535 | ); |
---|
2536 | |
---|
2537 | $button = wp_parse_args( $args, $defaults ); |
---|
2538 | |
---|
2539 | // Filter and return the HTML button |
---|
2540 | return bp_get_button( apply_filters( 'bp_get_send_public_message_button', $button ) ); |
---|
2541 | } |
---|
2542 | |
---|
2543 | /** |
---|
2544 | * Outputs the activity post form action |
---|
2545 | * |
---|
2546 | * @since BuddyPress (1.2) |
---|
2547 | * |
---|
2548 | * @uses bp_get_activity_post_form_action() |
---|
2549 | */ |
---|
2550 | function bp_activity_post_form_action() { |
---|
2551 | echo bp_get_activity_post_form_action(); |
---|
2552 | } |
---|
2553 | |
---|
2554 | /** |
---|
2555 | * Returns the activity post form action |
---|
2556 | * |
---|
2557 | * @since BuddyPress (1.2) |
---|
2558 | * |
---|
2559 | * @uses home_url() |
---|
2560 | * @uses bp_get_activity_root_slug() |
---|
2561 | * @uses apply_filters() To call the 'bp_get_activity_post_form_action' hook |
---|
2562 | * |
---|
2563 | * @return string The activity post form action |
---|
2564 | */ |
---|
2565 | function bp_get_activity_post_form_action() { |
---|
2566 | return apply_filters( 'bp_get_activity_post_form_action', home_url( bp_get_activity_root_slug() . '/post/' ) ); |
---|
2567 | } |
---|
2568 | |
---|
2569 | /** |
---|
2570 | * Looks at all the activity comments on the current activity item, and prints the comments' authors's avatar wrapped in <LI> tags. |
---|
2571 | * |
---|
2572 | * Use this function to easily output activity comment authors' avatars. |
---|
2573 | * |
---|
2574 | * @param array $args See {@link bp_core_fetch_avatar} for accepted values |
---|
2575 | * @since BuddyPress (1.7) |
---|
2576 | */ |
---|
2577 | function bp_activity_comments_user_avatars( $args = array() ) { |
---|
2578 | $defaults = array( |
---|
2579 | 'height' => false, |
---|
2580 | 'html' => true, |
---|
2581 | 'type' => 'thumb', |
---|
2582 | 'width' => false, |
---|
2583 | ); |
---|
2584 | |
---|
2585 | $args = wp_parse_args( $args, $defaults ); |
---|
2586 | extract( $args, EXTR_SKIP ); |
---|
2587 | |
---|
2588 | // Get the user IDs of everyone who has left a comment to the current activity item |
---|
2589 | $user_ids = bp_activity_get_comments_user_ids(); |
---|
2590 | |
---|
2591 | $output = array(); |
---|
2592 | foreach ( (array) $user_ids as $user_id ) { |
---|
2593 | $profile_link = bp_core_get_user_domain( $user_id ); |
---|
2594 | $image_html = bp_core_fetch_avatar( array( 'item_id' => $user_id, 'height' => $height, 'html' => $html, 'type' => $type, 'width' => $width, ) ); |
---|
2595 | |
---|
2596 | $output[] = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $profile_link ), $image_html ); |
---|
2597 | } |
---|
2598 | |
---|
2599 | echo apply_filters( 'bp_activity_comments_user_avatars', '<li>' . implode( '</li><li>', $output ) . '</li>', $args, $output ); |
---|
2600 | } |
---|
2601 | |
---|
2602 | /** |
---|
2603 | * Returns the user IDs of everyone who's written an activity comment on the current activity item. |
---|
2604 | * |
---|
2605 | * @return bool|array Returns false if there is no current activity items |
---|
2606 | * @since BuddyPress (1.7) |
---|
2607 | */ |
---|
2608 | function bp_activity_get_comments_user_ids() { |
---|
2609 | if ( empty( $GLOBALS['activities_template']->activity ) || empty( $GLOBALS['activities_template']->activity->children ) ) |
---|
2610 | return false; |
---|
2611 | |
---|
2612 | $user_ids = (array) bp_activity_recurse_comments_user_ids( $GLOBALS['activities_template']->activity->children ); |
---|
2613 | return apply_filters( 'bp_activity_get_comments_user_ids', array_unique( $user_ids ) ); |
---|
2614 | } |
---|
2615 | |
---|
2616 | /** |
---|
2617 | * Recurse through all activity comments and collect the IDs of the users who wrote them. |
---|
2618 | * |
---|
2619 | * @param array $comments Array of {@link BP_Activity_Activity} items |
---|
2620 | * @return array Array of user IDs |
---|
2621 | * @since BuddyPress (1.7) |
---|
2622 | */ |
---|
2623 | function bp_activity_recurse_comments_user_ids( array $comments ) { |
---|
2624 | $user_ids = array(); |
---|
2625 | |
---|
2626 | foreach ( $comments as $comment ) { |
---|
2627 | // If a user is a spammer, their activity items will have been automatically marked as spam. Skip these. |
---|
2628 | if ( $comment->is_spam ) |
---|
2629 | continue; |
---|
2630 | |
---|
2631 | $user_ids[] = $comment->user_id; |
---|
2632 | |
---|
2633 | // Check for commentception |
---|
2634 | if ( ! empty( $comment->children ) ) |
---|
2635 | $user_ids = array_merge( $user_ids, bp_activity_recurse_comments_user_ids( $comment->children ) ); |
---|
2636 | } |
---|
2637 | |
---|
2638 | return $user_ids; |
---|
2639 | } |
---|
2640 | |
---|
2641 | |
---|
2642 | /** |
---|
2643 | * Renders a list of all the registered activity types for use in a <select> element, or as <input type="checkbox">. |
---|
2644 | * |
---|
2645 | * @param string $output Optional. Either 'select' or 'checkbox'. Defaults to select. |
---|
2646 | * @param string|array $args Optional extra arguments: |
---|
2647 | * checkbox_name - Used when type=checkbox. Sets the item's name property. |
---|
2648 | * selected - Array of strings of activity types to mark as selected/checked. |
---|
2649 | * @since BuddyPress (1.7) |
---|
2650 | */ |
---|
2651 | function bp_activity_types_list( $output = 'select', $args = '' ) { |
---|
2652 | $defaults = array( |
---|
2653 | 'checkbox_name' => 'bp_activity_types', |
---|
2654 | 'selected' => array(), |
---|
2655 | ); |
---|
2656 | $args = wp_parse_args( $args, $defaults ); |
---|
2657 | |
---|
2658 | $activities = bp_activity_get_types(); |
---|
2659 | natsort( $activities ); |
---|
2660 | |
---|
2661 | // Loop through the activity types and output markup |
---|
2662 | foreach ( $activities as $type => $description ) { |
---|
2663 | |
---|
2664 | // See if we need to preselect the current type |
---|
2665 | $checked = checked( true, in_array( $type, (array) $args['selected'] ), false ); |
---|
2666 | $selected = selected( true, in_array( $type, (array) $args['selected'] ), false ); |
---|
2667 | |
---|
2668 | if ( 'select' == $output ) |
---|
2669 | printf( '<option value="%1$s" %2$s>%3$s</option>', esc_attr( $type ), $selected, esc_html( $description ) ); |
---|
2670 | |
---|
2671 | elseif ( 'checkbox' == $output ) |
---|
2672 | printf( '<label style="">%1$s<input type="checkbox" name="%2$s[]" value="%3$s" %4$s/></label>', esc_html( $description ), esc_attr( $args['checkbox_name'] ), esc_attr( $type ), $checked ); |
---|
2673 | |
---|
2674 | // Allow custom markup |
---|
2675 | do_action( 'bp_activity_types_list_' . $output, $args, $type, $description ); |
---|
2676 | } |
---|
2677 | |
---|
2678 | // Backpat with BP-Default for dropdown boxes only |
---|
2679 | if ( 'select' == $output ) |
---|
2680 | do_action( 'bp_activity_filter_options' ); |
---|
2681 | } |
---|
2682 | |
---|
2683 | |
---|
2684 | /* RSS Feed Template Tags ****************************************************/ |
---|
2685 | |
---|
2686 | /** |
---|
2687 | * Outputs the sitewide activity feed link |
---|
2688 | * |
---|
2689 | * @since BuddyPress (1.0) |
---|
2690 | * |
---|
2691 | * @uses bp_get_sitewide_activity_feed_link() |
---|
2692 | */ |
---|
2693 | function bp_sitewide_activity_feed_link() { |
---|
2694 | echo bp_get_sitewide_activity_feed_link(); |
---|
2695 | } |
---|
2696 | |
---|
2697 | /** |
---|
2698 | * Returns the sitewide activity feed link |
---|
2699 | * |
---|
2700 | * @since BuddyPress (1.0) |
---|
2701 | * |
---|
2702 | * @uses home_url() |
---|
2703 | * @uses bp_get_activity_root_slug() |
---|
2704 | * @uses apply_filters() To call the 'bp_get_sitewide_activity_feed_link' hook |
---|
2705 | * |
---|
2706 | * @return string The sitewide activity feed link |
---|
2707 | */ |
---|
2708 | function bp_get_sitewide_activity_feed_link() { |
---|
2709 | return apply_filters( 'bp_get_sitewide_activity_feed_link', bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/feed/' ); |
---|
2710 | } |
---|
2711 | |
---|
2712 | /** |
---|
2713 | * Outputs the member activity feed link |
---|
2714 | * |
---|
2715 | * @since BuddyPress (1.2) |
---|
2716 | * |
---|
2717 | * @uses bp_get_member_activity_feed_link() |
---|
2718 | */ |
---|
2719 | function bp_member_activity_feed_link() { |
---|
2720 | echo bp_get_member_activity_feed_link(); |
---|
2721 | } |
---|
2722 | |
---|
2723 | /** |
---|
2724 | * Outputs the member activity feed link |
---|
2725 | * |
---|
2726 | * @since BuddyPress (1.0) |
---|
2727 | * @deprecated BuddyPress (1.2) |
---|
2728 | * |
---|
2729 | * @todo properly deprecated in favor of bp_member_activity_feed_link() |
---|
2730 | * |
---|
2731 | * @uses bp_get_member_activity_feed_link() |
---|
2732 | */ |
---|
2733 | function bp_activities_member_rss_link() { echo bp_get_member_activity_feed_link(); } |
---|
2734 | |
---|
2735 | /** |
---|
2736 | * Returns the member activity feed link |
---|
2737 | * |
---|
2738 | * @since BuddyPress (1.2) |
---|
2739 | * |
---|
2740 | * @uses bp_is_profile_component() |
---|
2741 | * @uses bp_is_current_action() |
---|
2742 | * @uses bp_displayed_user_domain() |
---|
2743 | * @uses bp_get_activity_slug() |
---|
2744 | * @uses bp_is_active() |
---|
2745 | * @uses bp_get_friends_slug() |
---|
2746 | * @uses bp_get_groups_slug() |
---|
2747 | * @uses apply_filters() To call the 'bp_get_activities_member_rss_link' hook |
---|
2748 | * |
---|
2749 | * @return string $link The member activity feed link |
---|
2750 | */ |
---|
2751 | function bp_get_member_activity_feed_link() { |
---|
2752 | |
---|
2753 | if ( bp_is_profile_component() || bp_is_current_action( 'just-me' ) ) |
---|
2754 | $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/feed/'; |
---|
2755 | elseif ( bp_is_active( 'friends' ) && bp_is_current_action( bp_get_friends_slug() ) ) |
---|
2756 | $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_friends_slug() . '/feed/'; |
---|
2757 | elseif ( bp_is_active( 'groups' ) && bp_is_current_action( bp_get_groups_slug() ) ) |
---|
2758 | $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/feed/'; |
---|
2759 | elseif ( 'favorites' == bp_current_action() ) |
---|
2760 | $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/favorites/feed/'; |
---|
2761 | elseif ( 'mentions' == bp_current_action() ) |
---|
2762 | $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/mentions/feed/'; |
---|
2763 | else |
---|
2764 | $link = ''; |
---|
2765 | |
---|
2766 | return apply_filters( 'bp_get_activities_member_rss_link', $link ); |
---|
2767 | } |
---|
2768 | |
---|
2769 | /** |
---|
2770 | * Returns the member activity feed link |
---|
2771 | * |
---|
2772 | * @since BuddyPress (1.0) |
---|
2773 | * @deprecated BuddyPress (1.2) |
---|
2774 | * |
---|
2775 | * @todo properly deprecated in favor of bp_get_member_activity_feed_link() |
---|
2776 | * |
---|
2777 | * @uses bp_get_member_activity_feed_link() |
---|
2778 | * |
---|
2779 | * @return string The member activity feed link |
---|
2780 | */ |
---|
2781 | function bp_get_activities_member_rss_link() { return bp_get_member_activity_feed_link(); } |
---|
2782 | |
---|
2783 | |
---|
2784 | /** Template tags for RSS feed output ****************************************/ |
---|
2785 | |
---|
2786 | /** |
---|
2787 | * Outputs the activity feed item guid |
---|
2788 | * |
---|
2789 | * @since BuddyPress (1.0) |
---|
2790 | * |
---|
2791 | * @uses bp_activity_feed_item_guid() |
---|
2792 | */ |
---|
2793 | function bp_activity_feed_item_guid() { |
---|
2794 | echo bp_get_activity_feed_item_guid(); |
---|
2795 | } |
---|
2796 | |
---|
2797 | /** |
---|
2798 | * Returns the activity feed item guid |
---|
2799 | * |
---|
2800 | * @since BuddyPress (1.2) |
---|
2801 | * |
---|
2802 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2803 | * @uses apply_filters() To call the 'bp_get_activity_feed_item_guid' hook |
---|
2804 | * |
---|
2805 | * @return string The activity feed item guid |
---|
2806 | */ |
---|
2807 | function bp_get_activity_feed_item_guid() { |
---|
2808 | global $activities_template; |
---|
2809 | |
---|
2810 | return apply_filters( 'bp_get_activity_feed_item_guid', md5( $activities_template->activity->date_recorded . '-' . $activities_template->activity->content ) ); |
---|
2811 | } |
---|
2812 | |
---|
2813 | /** |
---|
2814 | * Outputs the activity feed item title |
---|
2815 | * |
---|
2816 | * @since BuddyPress (1.0) |
---|
2817 | * |
---|
2818 | * @uses bp_get_activity_feed_item_title() |
---|
2819 | */ |
---|
2820 | function bp_activity_feed_item_title() { |
---|
2821 | echo bp_get_activity_feed_item_title(); |
---|
2822 | } |
---|
2823 | |
---|
2824 | /** |
---|
2825 | * Returns the activity feed item title |
---|
2826 | * |
---|
2827 | * @since BuddyPress (1.0) |
---|
2828 | * |
---|
2829 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2830 | * @uses ent2ncr() |
---|
2831 | * @uses convert_chars() |
---|
2832 | * @uses bp_create_excerpt() |
---|
2833 | * @uses apply_filters() To call the 'bp_get_activity_feed_item_title' hook |
---|
2834 | * |
---|
2835 | * @return string $title The activity feed item title |
---|
2836 | */ |
---|
2837 | function bp_get_activity_feed_item_title() { |
---|
2838 | global $activities_template; |
---|
2839 | |
---|
2840 | if ( !empty( $activities_template->activity->action ) ) |
---|
2841 | $content = $activities_template->activity->action; |
---|
2842 | else |
---|
2843 | $content = $activities_template->activity->content; |
---|
2844 | |
---|
2845 | $content = explode( '<span', $content ); |
---|
2846 | $title = strip_tags( ent2ncr( trim( convert_chars( $content[0] ) ) ) ); |
---|
2847 | |
---|
2848 | if ( ':' == substr( $title, -1 ) ) |
---|
2849 | $title = substr( $title, 0, -1 ); |
---|
2850 | |
---|
2851 | if ( 'activity_update' == $activities_template->activity->type ) |
---|
2852 | $title .= ': ' . strip_tags( ent2ncr( trim( convert_chars( bp_create_excerpt( $activities_template->activity->content, 70, array( 'ending' => " […]" ) ) ) ) ) ); |
---|
2853 | |
---|
2854 | return apply_filters( 'bp_get_activity_feed_item_title', $title ); |
---|
2855 | } |
---|
2856 | |
---|
2857 | /** |
---|
2858 | * Outputs the activity feed item link |
---|
2859 | * |
---|
2860 | * @since BuddyPress (1.0) |
---|
2861 | * |
---|
2862 | * @uses bp_get_activity_feed_item_link() |
---|
2863 | */ |
---|
2864 | function bp_activity_feed_item_link() { |
---|
2865 | echo bp_get_activity_feed_item_link(); |
---|
2866 | } |
---|
2867 | |
---|
2868 | /** |
---|
2869 | * Returns the activity feed item link |
---|
2870 | * |
---|
2871 | * @since BuddyPress (1.0) |
---|
2872 | * |
---|
2873 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2874 | * @uses apply_filters() To call the 'bp_get_activity_feed_item_link' hook |
---|
2875 | * |
---|
2876 | * @return string The activity feed item link |
---|
2877 | */ |
---|
2878 | function bp_get_activity_feed_item_link() { |
---|
2879 | global $activities_template; |
---|
2880 | |
---|
2881 | return apply_filters( 'bp_get_activity_feed_item_link', $activities_template->activity->primary_link ); |
---|
2882 | } |
---|
2883 | |
---|
2884 | /** |
---|
2885 | * Outputs the activity feed item date |
---|
2886 | * |
---|
2887 | * @since BuddyPress (1.0) |
---|
2888 | * |
---|
2889 | * @uses bp_get_activity_feed_item_date() |
---|
2890 | */ |
---|
2891 | function bp_activity_feed_item_date() { |
---|
2892 | echo bp_get_activity_feed_item_date(); |
---|
2893 | } |
---|
2894 | |
---|
2895 | /** |
---|
2896 | * Returns the activity feed item date |
---|
2897 | * |
---|
2898 | * @since BuddyPress (1.0) |
---|
2899 | * |
---|
2900 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2901 | * @uses apply_filters() To call the 'bp_get_activity_feed_item_date' hook |
---|
2902 | * |
---|
2903 | * @return string The activity feed item date |
---|
2904 | */ |
---|
2905 | function bp_get_activity_feed_item_date() { |
---|
2906 | global $activities_template; |
---|
2907 | |
---|
2908 | return apply_filters( 'bp_get_activity_feed_item_date', $activities_template->activity->date_recorded ); |
---|
2909 | } |
---|
2910 | |
---|
2911 | /** |
---|
2912 | * Outputs the activity feed item description |
---|
2913 | * |
---|
2914 | * @since BuddyPress (1.0) |
---|
2915 | * |
---|
2916 | * @uses bp_get_activity_feed_item_description() |
---|
2917 | */ |
---|
2918 | function bp_activity_feed_item_description() { |
---|
2919 | echo bp_get_activity_feed_item_description(); |
---|
2920 | } |
---|
2921 | |
---|
2922 | /** |
---|
2923 | * Returns the activity feed item description |
---|
2924 | * |
---|
2925 | * @since BuddyPress (1.0) |
---|
2926 | * |
---|
2927 | * @global object $activities_template {@link BP_Activity_Template} |
---|
2928 | * @uses ent2ncr() |
---|
2929 | * @uses convert_chars() |
---|
2930 | * @uses apply_filters() To call the 'bp_get_activity_feed_item_description' hook |
---|
2931 | * |
---|
2932 | * @return string The activity feed item description |
---|
2933 | */ |
---|
2934 | function bp_get_activity_feed_item_description() { |
---|
2935 | global $activities_template; |
---|
2936 | |
---|
2937 | $content = ''; |
---|
2938 | if ( ! empty( $activities_template->activity->content ) ) |
---|
2939 | $content = $activities_template->activity->content; |
---|
2940 | |
---|
2941 | return apply_filters( 'bp_get_activity_feed_item_description', ent2ncr( convert_chars( str_replace( '%s', '', $content ) ) ) ); |
---|
2942 | } |
---|
2943 | |
---|
2944 | /** |
---|
2945 | * Template tag so we can hook activity feed to <head> |
---|
2946 | * |
---|
2947 | * @since BuddyPress (1.5) |
---|
2948 | * |
---|
2949 | * @uses bloginfo() |
---|
2950 | * @uses bp_sitewide_activity_feed_link() |
---|
2951 | */ |
---|
2952 | function bp_activity_sitewide_feed() { |
---|
2953 | ?> |
---|
2954 | |
---|
2955 | <link rel="alternate" type="application/rss+xml" title="<?php bloginfo( 'name' ) ?> | <?php _e( 'Site Wide Activity RSS Feed', 'buddypress' ) ?>" href="<?php bp_sitewide_activity_feed_link() ?>" /> |
---|
2956 | |
---|
2957 | <?php |
---|
2958 | } |
---|
2959 | add_action( 'bp_head', 'bp_activity_sitewide_feed' ); |
---|