Changeset 11022
- Timestamp:
- 08/22/2016 08:46:36 PM (8 years ago)
- Location:
- trunk/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-activity/bp-activity-functions.php
r10894 r11022 3418 3418 } 3419 3419 3420 /* Emails *********************************************************************/ 3421 3422 /** 3423 * Send email and BP notifications when a user is mentioned in an update. 3424 * 3425 * @since 1.2.0 3426 * 3427 * @param int $activity_id The ID of the activity update. 3428 * @param int $receiver_user_id The ID of the user who is receiving the update. 3429 */ 3430 function bp_activity_at_message_notification( $activity_id, $receiver_user_id ) { 3431 $notifications = BP_Core_Notification::get_all_for_user( $receiver_user_id, 'all' ); 3432 3433 // Don't leave multiple notifications for the same activity item. 3434 foreach( $notifications as $notification ) { 3435 if ( $activity_id == $notification->item_id ) { 3436 return; 3437 } 3438 } 3439 3440 $activity = new BP_Activity_Activity( $activity_id ); 3441 $email_type = 'activity-at-message'; 3442 $group_name = ''; 3443 $message_link = bp_activity_get_permalink( $activity_id ); 3444 $poster_name = bp_core_get_user_displayname( $activity->user_id ); 3445 3446 remove_filter( 'bp_get_activity_content_body', 'convert_smilies' ); 3447 remove_filter( 'bp_get_activity_content_body', 'wpautop' ); 3448 remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); 3449 3450 /** This filter is documented in bp-activity/bp-activity-template.php */ 3451 $content = apply_filters( 'bp_get_activity_content_body', $activity->content ); 3452 3453 add_filter( 'bp_get_activity_content_body', 'convert_smilies' ); 3454 add_filter( 'bp_get_activity_content_body', 'wpautop' ); 3455 add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); 3456 3457 // Now email the user with the contents of the message (if they have enabled email notifications). 3458 if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) { 3459 if ( bp_is_active( 'groups' ) && bp_is_group() ) { 3460 $email_type = 'groups-at-message'; 3461 $group_name = bp_get_current_group_name(); 3462 } 3463 3464 $unsubscribe_args = array( 3465 'user_id' => $receiver_user_id, 3466 'notification_type' => $email_type, 3467 ); 3468 3469 $args = array( 3470 'tokens' => array( 3471 'activity' => $activity, 3472 'usermessage' => wp_strip_all_tags( $content ), 3473 'group.name' => $group_name, 3474 'mentioned.url' => $message_link, 3475 'poster.name' => $poster_name, 3476 'receiver-user.id' => $receiver_user_id, 3477 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ), 3478 ), 3479 ); 3480 3481 bp_send_email( $email_type, $receiver_user_id, $args ); 3482 } 3483 3484 /** 3485 * Fires after the sending of an @mention email notification. 3486 * 3487 * @since 1.5.0 3488 * @since 2.5.0 $subject, $message, $content arguments unset and deprecated. 3489 * 3490 * @param BP_Activity_Activity $activity Activity Item object. 3491 * @param string $deprecated Removed in 2.5; now an empty string. 3492 * @param string $deprecated Removed in 2.5; now an empty string. 3493 * @param string $deprecated Removed in 2.5; now an empty string. 3494 * @param int $receiver_user_id The ID of the user who is receiving the update. 3495 */ 3496 do_action( 'bp_activity_sent_mention_email', $activity, '', '', '', $receiver_user_id ); 3497 } 3498 3499 /** 3500 * Send email and BP notifications when an activity item receives a comment. 3501 * 3502 * @since 1.2.0 3503 * @since 2.5.0 Updated to use new email APIs. 3504 * 3505 * @param int $comment_id The comment id. 3506 * @param int $commenter_id The ID of the user who posted the comment. 3507 * @param array $params {@link bp_activity_new_comment()}. 3508 */ 3509 function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id = 0, $params = array() ) { 3510 $original_activity = new BP_Activity_Activity( $params['activity_id'] ); 3511 $poster_name = bp_core_get_user_displayname( $commenter_id ); 3512 $thread_link = bp_activity_get_permalink( $params['activity_id'] ); 3513 3514 remove_filter( 'bp_get_activity_content_body', 'convert_smilies' ); 3515 remove_filter( 'bp_get_activity_content_body', 'wpautop' ); 3516 remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); 3517 3518 /** This filter is documented in bp-activity/bp-activity-template.php */ 3519 $content = apply_filters( 'bp_get_activity_content_body', $params['content'] ); 3520 3521 add_filter( 'bp_get_activity_content_body', 'convert_smilies' ); 3522 add_filter( 'bp_get_activity_content_body', 'wpautop' ); 3523 add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); 3524 3525 if ( $original_activity->user_id != $commenter_id ) { 3526 3527 // Send an email if the user hasn't opted-out. 3528 if ( 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) { 3529 3530 $unsubscribe_args = array( 3531 'user_id' => $original_activity->user_id, 3532 'notification_type' => 'activity-comment', 3533 ); 3534 3535 $args = array( 3536 'tokens' => array( 3537 'comment.id' => $comment_id, 3538 'commenter.id' => $commenter_id, 3539 'usermessage' => wp_strip_all_tags( $content ), 3540 'original_activity.user_id' => $original_activity->user_id, 3541 'poster.name' => $poster_name, 3542 'thread.url' => esc_url( $thread_link ), 3543 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ), 3544 ), 3545 ); 3546 3547 bp_send_email( 'activity-comment', $original_activity->user_id, $args ); 3548 } 3549 3550 /** 3551 * Fires at the point that notifications should be sent for activity comments. 3552 * 3553 * @since 2.6.0 3554 * 3555 * @param BP_Activity_Activity $original_activity The original activity. 3556 * @param int $comment_id ID for the newly received comment. 3557 * @param int $commenter_id ID of the user who made the comment. 3558 * @param array $params Arguments used with the original activity comment. 3559 */ 3560 do_action( 'bp_activity_sent_reply_to_update_notification', $original_activity, $comment_id, $commenter_id, $params ); 3561 } 3562 3563 3564 /* 3565 * If this is a reply to another comment, send an email notification to the 3566 * author of the immediate parent comment. 3567 */ 3568 if ( empty( $params['parent_id'] ) || ( $params['activity_id'] == $params['parent_id'] ) ) { 3569 return; 3570 } 3571 3572 $parent_comment = new BP_Activity_Activity( $params['parent_id'] ); 3573 3574 if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id ) { 3575 3576 // Send an email if the user hasn't opted-out. 3577 if ( 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) { 3578 3579 $unsubscribe_args = array( 3580 'user_id' => $parent_comment->user_id, 3581 'notification_type' => 'activity-comment-author', 3582 ); 3583 3584 $args = array( 3585 'tokens' => array( 3586 'comment.id' => $comment_id, 3587 'commenter.id' => $commenter_id, 3588 'usermessage' => wp_strip_all_tags( $content ), 3589 'parent-comment-user.id' => $parent_comment->user_id, 3590 'poster.name' => $poster_name, 3591 'thread.url' => esc_url( $thread_link ), 3592 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ), 3593 ), 3594 ); 3595 3596 bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args ); 3597 } 3598 3599 /** 3600 * Fires at the point that notifications should be sent for comments on activity replies. 3601 * 3602 * @since 2.6.0 3603 * 3604 * @param BP_Activity_Activity $parent_comment The parent activity. 3605 * @param int $comment_id ID for the newly received comment. 3606 * @param int $commenter_id ID of the user who made the comment. 3607 * @param array $params Arguments used with the original activity comment. 3608 */ 3609 do_action( 'bp_activity_sent_reply_to_reply_notification', $parent_comment, $comment_id, $commenter_id, $params ); 3610 } 3611 } 3612 3613 /** 3614 * Helper method to map action arguments to function parameters. 3615 * 3616 * @since 1.9.0 3617 * 3618 * @param int $comment_id ID of the comment being notified about. 3619 * @param array $params Parameters to use with notification. 3620 */ 3621 function bp_activity_new_comment_notification_helper( $comment_id, $params ) { 3622 bp_activity_new_comment_notification( $comment_id, $params['user_id'], $params ); 3623 } 3624 add_action( 'bp_activity_comment_posted', 'bp_activity_new_comment_notification_helper', 10, 2 ); 3420 3625 3421 3626 /** Embeds *******************************************************************/ -
trunk/src/bp-activity/bp-activity-notifications.php
r10941 r11022 10 10 // Exit if accessed directly. 11 11 defined( 'ABSPATH' ) || exit; 12 13 /* Emails *********************************************************************/14 15 /**16 * Send email and BP notifications when a user is mentioned in an update.17 *18 * @since 1.2.019 *20 * @param int $activity_id The ID of the activity update.21 * @param int $receiver_user_id The ID of the user who is receiving the update.22 */23 function bp_activity_at_message_notification( $activity_id, $receiver_user_id ) {24 $notifications = BP_Core_Notification::get_all_for_user( $receiver_user_id, 'all' );25 26 // Don't leave multiple notifications for the same activity item.27 foreach( $notifications as $notification ) {28 if ( $activity_id == $notification->item_id ) {29 return;30 }31 }32 33 $activity = new BP_Activity_Activity( $activity_id );34 $email_type = 'activity-at-message';35 $group_name = '';36 $message_link = bp_activity_get_permalink( $activity_id );37 $poster_name = bp_core_get_user_displayname( $activity->user_id );38 39 remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );40 remove_filter( 'bp_get_activity_content_body', 'wpautop' );41 remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );42 43 /** This filter is documented in bp-activity/bp-activity-template.php */44 $content = apply_filters( 'bp_get_activity_content_body', $activity->content );45 46 add_filter( 'bp_get_activity_content_body', 'convert_smilies' );47 add_filter( 'bp_get_activity_content_body', 'wpautop' );48 add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );49 50 // Now email the user with the contents of the message (if they have enabled email notifications).51 if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) {52 if ( bp_is_active( 'groups' ) && bp_is_group() ) {53 $email_type = 'groups-at-message';54 $group_name = bp_get_current_group_name();55 }56 57 $unsubscribe_args = array(58 'user_id' => $receiver_user_id,59 'notification_type' => $email_type,60 );61 62 $args = array(63 'tokens' => array(64 'activity' => $activity,65 'usermessage' => wp_strip_all_tags( $content ),66 'group.name' => $group_name,67 'mentioned.url' => $message_link,68 'poster.name' => $poster_name,69 'receiver-user.id' => $receiver_user_id,70 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),71 ),72 );73 74 bp_send_email( $email_type, $receiver_user_id, $args );75 }76 77 /**78 * Fires after the sending of an @mention email notification.79 *80 * @since 1.5.081 * @since 2.5.0 $subject, $message, $content arguments unset and deprecated.82 *83 * @param BP_Activity_Activity $activity Activity Item object.84 * @param string $deprecated Removed in 2.5; now an empty string.85 * @param string $deprecated Removed in 2.5; now an empty string.86 * @param string $deprecated Removed in 2.5; now an empty string.87 * @param int $receiver_user_id The ID of the user who is receiving the update.88 */89 do_action( 'bp_activity_sent_mention_email', $activity, '', '', '', $receiver_user_id );90 }91 92 /**93 * Send email and BP notifications when an activity item receives a comment.94 *95 * @since 1.2.096 * @since 2.5.0 Updated to use new email APIs.97 *98 * @param int $comment_id The comment id.99 * @param int $commenter_id The ID of the user who posted the comment.100 * @param array $params {@link bp_activity_new_comment()}.101 */102 function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id = 0, $params = array() ) {103 $original_activity = new BP_Activity_Activity( $params['activity_id'] );104 $poster_name = bp_core_get_user_displayname( $commenter_id );105 $thread_link = bp_activity_get_permalink( $params['activity_id'] );106 107 remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );108 remove_filter( 'bp_get_activity_content_body', 'wpautop' );109 remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );110 111 /** This filter is documented in bp-activity/bp-activity-template.php */112 $content = apply_filters( 'bp_get_activity_content_body', $params['content'] );113 114 add_filter( 'bp_get_activity_content_body', 'convert_smilies' );115 add_filter( 'bp_get_activity_content_body', 'wpautop' );116 add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );117 118 if ( $original_activity->user_id != $commenter_id ) {119 120 // Send an email if the user hasn't opted-out.121 if ( 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) {122 123 $unsubscribe_args = array(124 'user_id' => $original_activity->user_id,125 'notification_type' => 'activity-comment',126 );127 128 $args = array(129 'tokens' => array(130 'comment.id' => $comment_id,131 'commenter.id' => $commenter_id,132 'usermessage' => wp_strip_all_tags( $content ),133 'original_activity.user_id' => $original_activity->user_id,134 'poster.name' => $poster_name,135 'thread.url' => esc_url( $thread_link ),136 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),137 ),138 );139 140 bp_send_email( 'activity-comment', $original_activity->user_id, $args );141 }142 143 /**144 * Fires at the point that notifications should be sent for activity comments.145 *146 * @since 2.6.0147 *148 * @param BP_Activity_Activity $original_activity The original activity.149 * @param int $comment_id ID for the newly received comment.150 * @param int $commenter_id ID of the user who made the comment.151 * @param array $params Arguments used with the original activity comment.152 */153 do_action( 'bp_activity_sent_reply_to_update_notification', $original_activity, $comment_id, $commenter_id, $params );154 }155 156 157 /*158 * If this is a reply to another comment, send an email notification to the159 * author of the immediate parent comment.160 */161 if ( empty( $params['parent_id'] ) || ( $params['activity_id'] == $params['parent_id'] ) ) {162 return;163 }164 165 $parent_comment = new BP_Activity_Activity( $params['parent_id'] );166 167 if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id ) {168 169 // Send an email if the user hasn't opted-out.170 if ( 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) {171 172 $unsubscribe_args = array(173 'user_id' => $parent_comment->user_id,174 'notification_type' => 'activity-comment-author',175 );176 177 $args = array(178 'tokens' => array(179 'comment.id' => $comment_id,180 'commenter.id' => $commenter_id,181 'usermessage' => wp_strip_all_tags( $content ),182 'parent-comment-user.id' => $parent_comment->user_id,183 'poster.name' => $poster_name,184 'thread.url' => esc_url( $thread_link ),185 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),186 ),187 );188 189 bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args );190 }191 192 /**193 * Fires at the point that notifications should be sent for comments on activity replies.194 *195 * @since 2.6.0196 *197 * @param BP_Activity_Activity $parent_comment The parent activity.198 * @param int $comment_id ID for the newly received comment.199 * @param int $commenter_id ID of the user who made the comment.200 * @param array $params Arguments used with the original activity comment.201 */202 do_action( 'bp_activity_sent_reply_to_reply_notification', $parent_comment, $comment_id, $commenter_id, $params );203 }204 }205 206 /**207 * Helper method to map action arguments to function parameters.208 *209 * @since 1.9.0210 *211 * @param int $comment_id ID of the comment being notified about.212 * @param array $params Parameters to use with notification.213 */214 function bp_activity_new_comment_notification_helper( $comment_id, $params ) {215 bp_activity_new_comment_notification( $comment_id, $params['user_id'], $params );216 }217 add_action( 'bp_activity_comment_posted', 'bp_activity_new_comment_notification_helper', 10, 2 );218 219 /** Notifications *************************************************************/220 12 221 13 /** … … 360 152 */ 361 153 function bp_activity_at_mention_add_notification( $activity, $subject, $message, $content, $receiver_user_id ) { 362 if ( bp_is_active( 'notifications' ) ) { 363 bp_notifications_add_notification( array( 154 bp_notifications_add_notification( array( 364 155 'user_id' => $receiver_user_id, 365 156 'item_id' => $activity->id, … … 369 160 'date_notified' => bp_core_current_time(), 370 161 'is_new' => 1, 371 ) ); 372 } 162 ) ); 373 163 } 374 164 add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notification', 10, 5 ); … … 384 174 */ 385 175 function bp_activity_update_reply_add_notification( $activity, $comment_id, $commenter_id ) { 386 if ( bp_is_active( 'notifications' ) ) { 387 bp_notifications_add_notification( array( 388 'user_id' => $activity->user_id, 389 'item_id' => $comment_id, 390 'secondary_item_id' => $commenter_id, 391 'component_name' => buddypress()->activity->id, 392 'component_action' => 'update_reply', 393 'date_notified' => bp_core_current_time(), 394 'is_new' => 1, 395 ) ); 396 } 176 bp_notifications_add_notification( array( 177 'user_id' => $activity->user_id, 178 'item_id' => $comment_id, 179 'secondary_item_id' => $commenter_id, 180 'component_name' => buddypress()->activity->id, 181 'component_action' => 'update_reply', 182 'date_notified' => bp_core_current_time(), 183 'is_new' => 1, 184 ) ); 397 185 } 398 186 add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update_reply_add_notification', 10, 3 ); … … 408 196 */ 409 197 function bp_activity_comment_reply_add_notification( $activity_comment, $comment_id, $commenter_id ) { 410 if ( bp_is_active( 'notifications' ) ) { 411 bp_notifications_add_notification( array( 412 'user_id' => $activity_comment->user_id, 413 'item_id' => $comment_id, 414 'secondary_item_id' => $commenter_id, 415 'component_name' => buddypress()->activity->id, 416 'component_action' => 'comment_reply', 417 'date_notified' => bp_core_current_time(), 418 'is_new' => 1, 419 ) ); 420 } 198 bp_notifications_add_notification( array( 199 'user_id' => $activity_comment->user_id, 200 'item_id' => $comment_id, 201 'secondary_item_id' => $commenter_id, 202 'component_name' => buddypress()->activity->id, 203 'component_action' => 'comment_reply', 204 'date_notified' => bp_core_current_time(), 205 'is_new' => 1, 206 ) ); 421 207 } 422 208 add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment_reply_add_notification', 10, 3 ); … … 431 217 */ 432 218 function bp_activity_remove_screen_notifications( $user_id = 0 ) { 433 if ( ! bp_is_active( 'notifications' ) ) {434 return;435 }436 437 219 // Only mark read if the current user is looking at his own mentions. 438 220 if ( empty( $user_id ) || (int) $user_id !== (int) bp_loggedin_user_id() ) { … … 452 234 */ 453 235 function bp_activity_remove_screen_notifications_single_activity_permalink( $activity ) { 454 if ( ! bp_is_active( 'notifications' ) ) {455 return;456 }457 458 236 if ( ! is_user_logged_in() ) { 459 237 return; … … 474 252 */ 475 253 function bp_activity_remove_screen_notifications_for_non_mentions() { 476 if ( false === bp_is_active( 'notifications' ) || false ===is_singular() || false === is_user_logged_in() || empty( $_GET['nid'] ) ) {254 if ( false === is_singular() || false === is_user_logged_in() || empty( $_GET['nid'] ) ) { 477 255 return; 478 256 } … … 501 279 // Let's delete all without checking if content contains any mentions 502 280 // to avoid a query to get the activity. 503 if ( bp_is_active( 'notifications' ) &&! empty( $activity_ids_deleted ) ) {281 if ( ! empty( $activity_ids_deleted ) ) { 504 282 foreach ( $activity_ids_deleted as $activity_id ) { 505 283 bp_notifications_delete_all_notifications_by_type( $activity_id, buddypress()->activity->id ); … … 523 301 function bp_activity_add_notification_for_synced_blog_comment( $activity_id, $post_type_comment, $activity_args, $activity_post_object ) { 524 302 // If activity comments are disabled for WP posts, stop now! 525 if ( bp_disable_blogforum_comments() || empty( $activity_id ) || false === bp_is_active( 'notifications' )) {303 if ( bp_disable_blogforum_comments() || empty( $activity_id ) ) { 526 304 return; 527 305 } -
trunk/src/bp-activity/classes/class-bp-activity-component.php
r10851 r11022 58 58 'template', 59 59 'functions', 60 'notifications',61 60 'cache' 62 61 ); 62 63 // Notifications support. 64 if ( bp_is_active( 'notifications' ) ) { 65 $includes[] = 'notifications'; 66 } 63 67 64 68 if ( ! buddypress()->do_autoload ) { -
trunk/src/bp-friends/bp-friends-functions.php
r10587 r11022 796 796 } 797 797 add_action( 'bp_activity_mentions_prime_results', 'bp_friends_prime_mentions_results' ); 798 799 /** Emails ********************************************************************/ 800 801 /** 802 * Send notifications related to a new friendship request. 803 * 804 * When a friendship is requested, an email and a BP notification are sent to 805 * the user of whom friendship has been requested ($friend_id). 806 * 807 * @since 1.0.0 808 * 809 * @param int $friendship_id ID of the friendship object. 810 * @param int $initiator_id ID of the user who initiated the request. 811 * @param int $friend_id ID of the request recipient. 812 */ 813 function friends_notification_new_request( $friendship_id, $initiator_id, $friend_id ) { 814 if ( 'no' == bp_get_user_meta( (int) $friend_id, 'notification_friends_friendship_request', true ) ) { 815 return; 816 } 817 818 $unsubscribe_args = array( 819 'user_id' => $friend_id, 820 'notification_type' => 'friends-request', 821 ); 822 823 $args = array( 824 'tokens' => array( 825 'friend-requests.url' => esc_url( bp_core_get_user_domain( $friend_id ) . bp_get_friends_slug() . '/requests/' ), 826 'friend.id' => $friend_id, 827 'friendship.id' => $friendship_id, 828 'initiator.id' => $initiator_id, 829 'initiator.url' => esc_url( bp_core_get_user_domain( $initiator_id ) ), 830 'initiator.name' => bp_core_get_user_displayname( $initiator_id ), 831 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ), 832 ), 833 ); 834 bp_send_email( 'friends-request', $friend_id, $args ); 835 } 836 add_action( 'friends_friendship_requested', 'friends_notification_new_request', 10, 3 ); 837 838 /** 839 * Send notifications related to the acceptance of a friendship request. 840 * 841 * When a friendship request is accepted, an email and a BP notification are 842 * sent to the user who requested the friendship ($initiator_id). 843 * 844 * @since 1.0.0 845 * 846 * @param int $friendship_id ID of the friendship object. 847 * @param int $initiator_id ID of the user who initiated the request. 848 * @param int $friend_id ID of the request recipient. 849 */ 850 function friends_notification_accepted_request( $friendship_id, $initiator_id, $friend_id ) { 851 if ( 'no' == bp_get_user_meta( (int) $initiator_id, 'notification_friends_friendship_accepted', true ) ) { 852 return; 853 } 854 855 $unsubscribe_args = array( 856 'user_id' => $initiator_id, 857 'notification_type' => 'friends-request-accepted', 858 ); 859 860 $args = array( 861 'tokens' => array( 862 'friend.id' => $friend_id, 863 'friendship.url' => esc_url( bp_core_get_user_domain( $friend_id ) ), 864 'friend.name' => bp_core_get_user_displayname( $friend_id ), 865 'friendship.id' => $friendship_id, 866 'initiator.id' => $initiator_id, 867 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ), 868 ), 869 ); 870 bp_send_email( 'friends-request-accepted', $initiator_id, $args ); 871 } 872 add_action( 'friends_friendship_accepted', 'friends_notification_accepted_request', 10, 3 ); -
trunk/src/bp-friends/bp-friends-notifications.php
r10941 r11022 13 13 // Exit if accessed directly. 14 14 defined( 'ABSPATH' ) || exit; 15 16 /** Emails ********************************************************************/17 18 /**19 * Send notifications related to a new friendship request.20 *21 * When a friendship is requested, an email and a BP notification are sent to22 * the user of whom friendship has been requested ($friend_id).23 *24 * @since 1.0.025 *26 * @param int $friendship_id ID of the friendship object.27 * @param int $initiator_id ID of the user who initiated the request.28 * @param int $friend_id ID of the request recipient.29 */30 function friends_notification_new_request( $friendship_id, $initiator_id, $friend_id ) {31 if ( 'no' == bp_get_user_meta( (int) $friend_id, 'notification_friends_friendship_request', true ) ) {32 return;33 }34 35 $unsubscribe_args = array(36 'user_id' => $friend_id,37 'notification_type' => 'friends-request',38 );39 40 $args = array(41 'tokens' => array(42 'friend-requests.url' => esc_url( bp_core_get_user_domain( $friend_id ) . bp_get_friends_slug() . '/requests/' ),43 'friend.id' => $friend_id,44 'friendship.id' => $friendship_id,45 'initiator.id' => $initiator_id,46 'initiator.url' => esc_url( bp_core_get_user_domain( $initiator_id ) ),47 'initiator.name' => bp_core_get_user_displayname( $initiator_id ),48 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),49 ),50 );51 bp_send_email( 'friends-request', $friend_id, $args );52 }53 add_action( 'friends_friendship_requested', 'friends_notification_new_request', 10, 3 );54 55 /**56 * Send notifications related to the acceptance of a friendship request.57 *58 * When a friendship request is accepted, an email and a BP notification are59 * sent to the user who requested the friendship ($initiator_id).60 *61 * @since 1.0.062 *63 * @param int $friendship_id ID of the friendship object.64 * @param int $initiator_id ID of the user who initiated the request.65 * @param int $friend_id ID of the request recipient.66 */67 function friends_notification_accepted_request( $friendship_id, $initiator_id, $friend_id ) {68 if ( 'no' == bp_get_user_meta( (int) $initiator_id, 'notification_friends_friendship_accepted', true ) ) {69 return;70 }71 72 $unsubscribe_args = array(73 'user_id' => $initiator_id,74 'notification_type' => 'friends-request-accepted',75 );76 77 $args = array(78 'tokens' => array(79 'friend.id' => $friend_id,80 'friendship.url' => esc_url( bp_core_get_user_domain( $friend_id ) ),81 'friend.name' => bp_core_get_user_displayname( $friend_id ),82 'friendship.id' => $friendship_id,83 'initiator.id' => $initiator_id,84 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),85 ),86 );87 bp_send_email( 'friends-request-accepted', $initiator_id, $args );88 }89 add_action( 'friends_friendship_accepted', 'friends_notification_accepted_request', 10, 3 );90 91 /** Notifications *************************************************************/92 15 93 16 /** … … 195 118 */ 196 119 function friends_clear_friend_notifications() { 197 if ( isset( $_GET['new'] ) && bp_is_active( 'notifications' )) {120 if ( isset( $_GET['new'] ) ) { 198 121 bp_notifications_mark_notifications_by_type( bp_loggedin_user_id(), buddypress()->friends->id, 'friendship_accepted' ); 199 122 } … … 207 130 */ 208 131 function bp_friends_mark_friendship_request_notifications_by_type() { 209 if ( isset( $_GET['new'] ) && bp_is_active( 'notifications' )) {132 if ( isset( $_GET['new'] ) ) { 210 133 bp_notifications_mark_notifications_by_type( bp_loggedin_user_id(), buddypress()->friends->id, 'friendship_request' ); 211 134 } … … 219 142 */ 220 143 function bp_friends_mark_friendship_accepted_notifications_by_type() { 221 if ( bp_is_active( 'notifications' ) ) { 222 bp_notifications_mark_notifications_by_type( bp_loggedin_user_id(), buddypress()->friends->id, 'friendship_accepted' ); 223 } 144 bp_notifications_mark_notifications_by_type( bp_loggedin_user_id(), buddypress()->friends->id, 'friendship_accepted' ); 224 145 } 225 146 add_action( 'friends_screen_my_friends', 'bp_friends_mark_friendship_accepted_notifications_by_type' ); … … 235 156 */ 236 157 function bp_friends_friendship_requested_notification( $friendship_id, $initiator_user_id, $friend_user_id ) { 237 if ( bp_is_active( 'notifications' ) ) { 238 bp_notifications_add_notification( array( 239 'user_id' => $friend_user_id, 240 'item_id' => $initiator_user_id, 241 'secondary_item_id' => $friendship_id, 242 'component_name' => buddypress()->friends->id, 243 'component_action' => 'friendship_request', 244 'date_notified' => bp_core_current_time(), 245 'is_new' => 1, 246 ) ); 247 } 158 bp_notifications_add_notification( array( 159 'user_id' => $friend_user_id, 160 'item_id' => $initiator_user_id, 161 'secondary_item_id' => $friendship_id, 162 'component_name' => buddypress()->friends->id, 163 'component_action' => 'friendship_request', 164 'date_notified' => bp_core_current_time(), 165 'is_new' => 1, 166 ) ); 248 167 } 249 168 add_action( 'friends_friendship_requested', 'bp_friends_friendship_requested_notification', 10, 3 ); … … 258 177 */ 259 178 function bp_friends_mark_friendship_rejected_notifications_by_item_id( $friendship_id, $friendship ) { 260 if ( bp_is_active( 'notifications' ) ) { 261 bp_notifications_mark_notifications_by_item_id( $friendship->friend_user_id, $friendship->initiator_user_id, buddypress()->friends->id, 'friendship_request' ); 262 } 179 bp_notifications_mark_notifications_by_item_id( $friendship->friend_user_id, $friendship->initiator_user_id, buddypress()->friends->id, 'friendship_request' ); 263 180 } 264 181 add_action( 'friends_friendship_rejected', 'bp_friends_mark_friendship_rejected_notifications_by_item_id', 10, 2 ); … … 274 191 */ 275 192 function bp_friends_add_friendship_accepted_notification( $friendship_id, $initiator_user_id, $friend_user_id ) { 276 277 // Bail if notifications is not active.278 if ( ! bp_is_active( 'notifications' ) ) {279 return;280 }281 282 193 // Remove the friend request notice. 283 194 bp_notifications_mark_notifications_by_item_id( $friend_user_id, $initiator_user_id, buddypress()->friends->id, 'friendship_request' ); … … 305 216 */ 306 217 function bp_friends_mark_friendship_withdrawn_notifications_by_item_id( $friendship_id, $friendship ) { 307 if ( bp_is_active( 'notifications' ) ) { 308 bp_notifications_delete_notifications_by_item_id( $friendship->friend_user_id, $friendship->initiator_user_id, buddypress()->friends->id, 'friendship_request' ); 309 } 218 bp_notifications_delete_notifications_by_item_id( $friendship->friend_user_id, $friendship->initiator_user_id, buddypress()->friends->id, 'friendship_request' ); 310 219 } 311 220 add_action( 'friends_friendship_withdrawn', 'bp_friends_mark_friendship_withdrawn_notifications_by_item_id', 10, 2 ); … … 319 228 */ 320 229 function bp_friends_remove_notifications_data( $user_id = 0 ) { 321 if ( bp_is_active( 'notifications' ) ) { 322 bp_notifications_delete_notifications_from_user( $user_id, buddypress()->friends->id, 'friendship_request' ); 323 } 230 bp_notifications_delete_notifications_from_user( $user_id, buddypress()->friends->id, 'friendship_request' ); 324 231 } 325 232 add_action( 'friends_remove_data', 'bp_friends_remove_notifications_data', 10, 1 ); -
trunk/src/bp-friends/classes/class-bp-friends-component.php
r10676 r11022 54 54 'template', 55 55 'functions', 56 'notifications',57 56 'widgets', 58 57 ); 58 59 // Conditional includes. 60 if ( bp_is_active( 'notifications' ) ) { 61 $includes[] = 'notifications'; 62 } 59 63 60 64 if ( ! buddypress()->do_autoload ) { -
trunk/src/bp-messages/bp-messages-functions.php
r10654 r11022 525 525 return $retval; 526 526 } 527 528 /** Email *********************************************************************/ 529 530 /** 531 * Email message recipients to alert them of a new unread private message. 532 * 533 * @since 1.0.0 534 * 535 * @param array|BP_Messages_Message $raw_args { 536 * Array of arguments. Also accepts a BP_Messages_Message object. 537 * @type array $recipients User IDs of recipients. 538 * @type string $email_subject Subject line of message. 539 * @type string $email_content Content of message. 540 * @type int $sender_id User ID of sender. 541 * } 542 */ 543 function messages_notification_new_message( $raw_args = array() ) { 544 if ( is_object( $raw_args ) ) { 545 $args = (array) $raw_args; 546 } else { 547 $args = $raw_args; 548 } 549 550 // These should be extracted below. 551 $recipients = array(); 552 $email_subject = $email_content = ''; 553 $sender_id = 0; 554 555 // Barf. 556 extract( $args ); 557 558 if ( empty( $recipients ) ) { 559 return; 560 } 561 562 $sender_name = bp_core_get_user_displayname( $sender_id ); 563 564 // Send an email to each recipient. 565 foreach ( $recipients as $recipient ) { 566 if ( $sender_id == $recipient->user_id || 'no' == bp_get_user_meta( $recipient->user_id, 'notification_messages_new_message', true ) ) { 567 continue; 568 } 569 570 // User data and links. 571 $ud = get_userdata( $recipient->user_id ); 572 if ( empty( $ud ) ) { 573 continue; 574 } 575 576 $unsubscribe_args = array( 577 'user_id' => $recipient->user_id, 578 'notification_type' => 'messages-unread', 579 ); 580 581 $args = array( 582 'tokens' => array( 583 'usermessage' => wp_strip_all_tags( stripslashes( $message ) ), 584 'message.url' => esc_url( bp_core_get_user_domain( $recipient->user_id ) . bp_get_messages_slug() . '/view/' . $thread_id . '/' ), 585 'sender.name' => $sender_name, 586 'usersubject' => sanitize_text_field( stripslashes( $subject ) ), 587 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ), 588 ), 589 ); 590 bp_send_email( 'messages-unread', $ud, $args ); 591 } 592 593 /** 594 * Fires after the sending of a new message email notification. 595 * 596 * @since 1.5.0 597 * @deprecated 2.5.0 Use the filters in BP_Email. 598 * $email_subject and $email_content arguments unset and deprecated. 599 * 600 * @param array $recipients User IDs of recipients. 601 * @param string $email_subject Deprecated in 2.5; now an empty string. 602 * @param string $email_content Deprecated in 2.5; now an empty string. 603 * @param array $args Array of originally provided arguments. 604 */ 605 do_action( 'bp_messages_sent_notification_email', $recipients, '', '', $args ); 606 } 607 add_action( 'messages_message_sent', 'messages_notification_new_message', 10 ); -
trunk/src/bp-messages/bp-messages-notifications.php
r10941 r11022 10 10 // Exit if accessed directly. 11 11 defined( 'ABSPATH' ) || exit; 12 13 /** Email *********************************************************************/14 15 /**16 * Email message recipients to alert them of a new unread private message.17 *18 * @since 1.0.019 *20 * @param array|BP_Messages_Message $raw_args {21 * Array of arguments. Also accepts a BP_Messages_Message object.22 * @type array $recipients User IDs of recipients.23 * @type string $email_subject Subject line of message.24 * @type string $email_content Content of message.25 * @type int $sender_id User ID of sender.26 * }27 */28 function messages_notification_new_message( $raw_args = array() ) {29 if ( is_object( $raw_args ) ) {30 $args = (array) $raw_args;31 } else {32 $args = $raw_args;33 }34 35 // These should be extracted below.36 $recipients = array();37 $email_subject = $email_content = '';38 $sender_id = 0;39 40 // Barf.41 extract( $args );42 43 if ( empty( $recipients ) ) {44 return;45 }46 47 $sender_name = bp_core_get_user_displayname( $sender_id );48 49 // Send an email to each recipient.50 foreach ( $recipients as $recipient ) {51 if ( $sender_id == $recipient->user_id || 'no' == bp_get_user_meta( $recipient->user_id, 'notification_messages_new_message', true ) ) {52 continue;53 }54 55 // User data and links.56 $ud = get_userdata( $recipient->user_id );57 if ( empty( $ud ) ) {58 continue;59 }60 61 $unsubscribe_args = array(62 'user_id' => $recipient->user_id,63 'notification_type' => 'messages-unread',64 );65 66 $args = array(67 'tokens' => array(68 'usermessage' => wp_strip_all_tags( stripslashes( $message ) ),69 'message.url' => esc_url( bp_core_get_user_domain( $recipient->user_id ) . bp_get_messages_slug() . '/view/' . $thread_id . '/' ),70 'sender.name' => $sender_name,71 'usersubject' => sanitize_text_field( stripslashes( $subject ) ),72 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),73 ),74 );75 bp_send_email( 'messages-unread', $ud, $args );76 }77 78 /**79 * Fires after the sending of a new message email notification.80 *81 * @since 1.5.082 * @deprecated 2.5.0 Use the filters in BP_Email.83 * $email_subject and $email_content arguments unset and deprecated.84 *85 * @param array $recipients User IDs of recipients.86 * @param string $email_subject Deprecated in 2.5; now an empty string.87 * @param string $email_content Deprecated in 2.5; now an empty string.88 * @param array $args Array of originally provided arguments.89 */90 do_action( 'bp_messages_sent_notification_email', $recipients, '', '', $args );91 }92 add_action( 'messages_message_sent', 'messages_notification_new_message', 10 );93 94 /** Notifications *************************************************************/95 12 96 13 /** … … 231 148 */ 232 149 function bp_messages_message_sent_add_notification( $message ) { 233 if ( bp_is_active( 'notifications' ) &&! empty( $message->recipients ) ) {150 if ( ! empty( $message->recipients ) ) { 234 151 foreach ( (array) $message->recipients as $recipient ) { 235 152 bp_notifications_add_notification( array( … … 253 170 */ 254 171 function bp_messages_screen_conversation_mark_notifications() { 255 if ( bp_is_active( 'notifications' ) ) { 256 global $thread_template; 257 258 // Get unread PM notifications for the user. 259 $new_pm_notifications = BP_Notifications_Notification::get( array( 260 'user_id' => bp_loggedin_user_id(), 261 'component_name' => buddypress()->messages->id, 262 'component_action' => 'new_message', 263 'is_new' => 1, 264 ) ); 265 $unread_message_ids = wp_list_pluck( $new_pm_notifications, 'item_id' ); 266 267 // No unread PMs, so stop! 268 if ( empty( $unread_message_ids ) ) { 269 return; 270 } 271 272 // Get the unread message ids for this thread only. 273 $message_ids = array_intersect( $unread_message_ids, wp_list_pluck( $thread_template->thread->messages, 'id' ) ); 274 275 // Mark each notification for each PM message as read. 276 foreach ( $message_ids as $message_id ) { 277 bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), (int) $message_id, buddypress()->messages->id, 'new_message' ); 278 } 172 global $thread_template; 173 174 // Get unread PM notifications for the user. 175 $new_pm_notifications = BP_Notifications_Notification::get( array( 176 'user_id' => bp_loggedin_user_id(), 177 'component_name' => buddypress()->messages->id, 178 'component_action' => 'new_message', 179 'is_new' => 1, 180 ) ); 181 $unread_message_ids = wp_list_pluck( $new_pm_notifications, 'item_id' ); 182 183 // No unread PMs, so stop! 184 if ( empty( $unread_message_ids ) ) { 185 return; 186 } 187 188 // Get the unread message ids for this thread only. 189 $message_ids = array_intersect( $unread_message_ids, wp_list_pluck( $thread_template->thread->messages, 'id' ) ); 190 191 // Mark each notification for each PM message as read. 192 foreach ( $message_ids as $message_id ) { 193 bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), (int) $message_id, buddypress()->messages->id, 'new_message' ); 279 194 } 280 195 } … … 290 205 */ 291 206 function bp_messages_message_delete_notifications( $thread_id, $message_ids ) { 292 if ( ! bp_is_active( 'notifications' ) ) {293 return;294 }295 296 207 // For each recipient, delete notifications corresponding to each message. 297 208 $thread = new BP_Messages_Thread( $thread_id ); -
trunk/src/bp-messages/classes/class-bp-messages-component.php
r10678 r11022 64 64 'template', 65 65 'functions', 66 'notifications',67 66 'widgets', 68 67 ); … … 73 72 74 73 // Conditional includes. 74 if ( bp_is_active( 'notifications' ) ) { 75 $includes[] = 'notifications'; 76 } 75 77 if ( bp_is_active( $this->id, 'star' ) ) { 76 78 $includes[] = 'star';
Note: See TracChangeset
for help on using the changeset viewer.