diff --git a/bp-activity/bp-activity-functions.php b/bp-activity/bp-activity-functions.php
index 59ce01e..da96d81 100644
|
a
|
b
|
function bp_activity_add_user_favorite( $activity_id, $user_id = 0 ) { |
| 291 | 291 | $user_id = bp_loggedin_user_id(); |
| 292 | 292 | |
| 293 | 293 | // Update the user's personal favorites |
| 294 | | $my_favs = bp_get_user_meta( bp_loggedin_user_id(), 'bp_favorite_activities', true ); |
| 295 | | $my_favs[] = $activity_id; |
| 296 | | |
| 297 | | // Update the total number of users who have favorited this activity |
| 298 | | $fav_count = bp_activity_get_meta( $activity_id, 'favorite_count' ); |
| 299 | | $fav_count = !empty( $fav_count ) ? (int) $fav_count + 1 : 1; |
| | 294 | $my_favs = bp_get_user_meta( bp_loggedin_user_id(), 'bp_favorite_activities', true ); |
| | 295 | if ( !$my_favs ) { |
| | 296 | $my_favs = array(); |
| | 297 | } |
| 300 | 298 | |
| 301 | | // Update user meta |
| | 299 | if ( !in_array( $activity_id, $my_favs ) ) { |
| | 300 | $my_favs[] = $activity_id; |
| | 301 | } |
| 302 | 302 | bp_update_user_meta( bp_loggedin_user_id(), 'bp_favorite_activities', $my_favs ); |
| 303 | 303 | |
| | 304 | // Update the users that favorited this activity |
| | 305 | $fav_users = bp_activity_get_meta( $activity_id, 'favorited_users'); |
| | 306 | if ( !$fav_users ) { |
| | 307 | $fav_users = array(); |
| | 308 | } |
| | 309 | |
| | 310 | if ( !in_array( $user_id, $fav_users ) ) { |
| | 311 | $fav_users[] = $user_id; |
| | 312 | } |
| | 313 | bp_activity_update_meta( $activity_id, 'favorited_users', $fav_users ); |
| | 314 | |
| | 315 | // Update the total number of users who have favorited this activity |
| | 316 | $fav_count = count( $fav_users ); |
| | 317 | |
| 304 | 318 | // Update activity meta counts |
| 305 | 319 | if ( true === bp_activity_update_meta( $activity_id, 'favorite_count', $fav_count ) ) { |
| 306 | 320 | |
| … |
… |
function bp_activity_remove_user_favorite( $activity_id, $user_id = 0 ) { |
| 351 | 365 | $my_favs = array_flip( (array) $my_favs ); |
| 352 | 366 | unset( $my_favs[$activity_id] ); |
| 353 | 367 | $my_favs = array_unique( array_flip( $my_favs ) ); |
| | 368 | bp_update_user_meta( $user_id, 'bp_favorite_activities', $my_favs ); |
| 354 | 369 | |
| 355 | | // Update the total number of users who have favorited this activity |
| 356 | | if ( $fav_count = bp_activity_get_meta( $activity_id, 'favorite_count' ) ) { |
| 357 | | |
| 358 | | // Deduct from total favorites |
| 359 | | if ( bp_activity_update_meta( $activity_id, 'favorite_count', (int) $fav_count - 1 ) ) { |
| | 370 | // Remove the user from the list of those who have favorited this activity |
| | 371 | $fav_users = bp_activity_get_meta( $activity_id, 'favorited_users' ); |
| | 372 | $fav_users = array_flip( (array) $fav_users ); |
| | 373 | unset( $my_favs[$activity_id] ); |
| | 374 | $fav_users = array_unique( array_flip( $fav_users ) ); |
| | 375 | bp_activity_update_meta( $activity_id, 'favorited_users', $fav_users ); |
| 360 | 376 | |
| 361 | | // Update users favorites |
| 362 | | if ( bp_update_user_meta( $user_id, 'bp_favorite_activities', $my_favs ) ) { |
| | 377 | // Update the total number of users who have favorited this activity |
| | 378 | $fav_count = count( $fav_users ); |
| | 379 | bp_activity_update_meta( $activity_id, 'favorite_count', $fav_count ); |
| 363 | 380 | |
| 364 | | // Execute additional code |
| 365 | | do_action( 'bp_activity_remove_user_favorite', $activity_id, $user_id ); |
| | 381 | // Execute additional code |
| | 382 | do_action( 'bp_activity_remove_user_favorite', $activity_id, $user_id ); |
| 366 | 383 | |
| 367 | | // Success |
| 368 | | return true; |
| | 384 | return true; |
| | 385 | } |
| 369 | 386 | |
| 370 | | // Error updating |
| 371 | | } else { |
| 372 | | return false; |
| 373 | | } |
| | 387 | /** |
| | 388 | * When an activity item is deleted, delete it from all lists of user favorites |
| | 389 | * |
| | 390 | * @since BuddyPress (1.7) |
| | 391 | */ |
| | 392 | function bp_activity_favorite_deleted( $args ) { |
| | 393 | if ( isset( $args['id'] ) ) { |
| | 394 | $activity_id = $args['id']; |
| | 395 | } |
| 374 | 396 | |
| 375 | | // Error updating favorite count |
| 376 | | } else { |
| 377 | | return false; |
| | 397 | if ( !empty( $activity_id ) ) { |
| | 398 | $fav_users = bp_activity_get_meta( $activity_id, 'favorited_users' ); |
| | 399 | foreach( (array) $fav_users as $user_id ) { |
| | 400 | $user_favs = bp_get_user_meta( $user_id, 'bp_favorite_activities', true ); |
| | 401 | $user_favs = array_flip( $user_favs ); |
| | 402 | unset( $user_favs[$activity_id] ); |
| | 403 | $user_favs = array_flip( $user_favs ); |
| | 404 | bp_update_user_meta( $user_id, 'bp_favorite_activities', $user_favs ); |
| 378 | 405 | } |
| 379 | | |
| 380 | | // Error getting favorite count |
| 381 | | } else { |
| 382 | | return false; |
| 383 | 406 | } |
| 384 | 407 | } |
| | 408 | add_action( 'bp_activity_delete', 'bp_activity_favorite_deleted' ); |
| 385 | 409 | |
| 386 | 410 | /** |
| 387 | 411 | * Check if activity exists by scanning content |