/** * Sends emails and BP notifications for users @-mentioned in an activity item. * * @since 1.7.0 * * @uses bp_activity_at_message_notification() * @uses bp_activity_update_mention_count_for_user() * * @param BP_Activity_Activity $activity The BP_Activity_Activity object. */ function bp_activity_at_name_send_emails($activity) { // Are mentions disabled? if (!bp_activity_do_mentions()) { return; } // If our temporary variable doesn't exist, stop now. if (empty(buddypress()->activity->mentioned_users)) { return; } // Grab our temporary variable from bp_activity_at_name_filter_updates(). $usernames = buddypress()->activity->mentioned_users; // Get rid of temporary variable. unset(buddypress()->activity->mentioned_users); // Send @mentions and setup BP notifications. foreach ((array) $usernames as $user_id => $username) { /** * Filters BuddyPress' ability to send email notifications for @mentions. * * @since 1.6.0 * * @param bool $value Whether or not BuddyPress should send a notification to the mentioned users. * @param array $usernames Array of users potentially notified. */ if (apply_filters('bp_activity_at_name_do_notifications', true, $usernames)) { bp_activity_at_message_notification($activity->id, $user_id); } // Updates mention count for the user. bp_activity_update_mention_count_for_user($user_id, $activity->id); } }
/** * Sends emails and BP notifications for users @-mentioned in an activity item. * * @since BuddyPress (1.7) * * @uses bp_activity_at_message_notification() * @uses bp_activity_update_mention_count_for_user() * * @param BP_Activity_Activity $activity The BP_Activity_Activity object */ function bp_activity_at_name_send_emails($activity) { // Are mentions disabled? if (!bp_activity_do_mentions()) { return; } // If our temporary variable doesn't exist, stop now. if (empty(buddypress()->activity->mentioned_users)) { return; } // Grab our temporary variable from bp_activity_at_name_filter_updates() $usernames = buddypress()->activity->mentioned_users; // Get rid of temporary variable unset(buddypress()->activity->mentioned_users); // Send @mentions and setup BP notifications foreach ((array) $usernames as $user_id => $username) { // If you want to disable notifications, you can use this filter to stop email sending if (apply_filters('bp_activity_at_name_do_notifications', true, $usernames)) { bp_activity_at_message_notification($activity->id, $user_id); } // Updates mention count for the user bp_activity_update_mention_count_for_user($user_id, $activity->id); } }
/** * Finds and links @-mentioned users in the contents of activity items * * @since 1.2.0 * * @param string $content The activity content * @param int $activity_id The activity id * * @uses bp_activity_find_mentions() * @uses bp_is_username_compatibility_mode() * @uses bp_core_get_userid_from_nicename() * @uses bp_activity_at_message_notification() * @uses bp_core_get_user_domain() * @uses bp_activity_adjust_mention_count() * * @return string $content Content filtered for mentions */ function bp_activity_at_name_filter($content, $activity_id = 0) { $usernames = bp_activity_find_mentions($content); foreach ((array) $usernames as $username) { if (bp_is_username_compatibility_mode()) { $user_id = username_exists($username); } else { $user_id = bp_core_get_userid_from_nicename($username); } if (empty($user_id)) { continue; } // If an activity_id is provided, we can send email and BP notifications if ($activity_id) { bp_activity_at_message_notification($activity_id, $user_id); } $content = preg_replace('/(@' . $username . '\\b)/', "<a href='" . bp_core_get_user_domain($user_id) . "' rel='nofollow'>@{$username}</a>", $content); } // Adjust the activity count for this item if ($activity_id) { bp_activity_adjust_mention_count($activity_id, 'add'); } return $content; }
/** * Finds and links @-mentioned users in the contents of activity items * * @since 1.2.0 * * @param string $content The activity content * @param int $activity_id The activity id * * @uses bp_activity_find_mentions() * @uses bp_is_username_compatibility_mode() * @uses bp_core_get_userid_from_nicename() * @uses bp_activity_at_message_notification() * @uses bp_core_get_user_domain() * @uses bp_activity_adjust_mention_count() * * @return string $content Content filtered for mentions */ function bp_activity_at_name_filter($content, $activity_id = 0) { if ($activity_id & bp_is_active('activity')) { $activity = new BP_Activity_Activity($activity_id); // If this activity has been marked as spam, don't do anything. This prevents @notifications being sent. if (!empty($activity) && $activity->is_spam) { return $content; } } $usernames = bp_activity_find_mentions($content); foreach ((array) $usernames as $username) { if (bp_is_username_compatibility_mode()) { $user_id = username_exists($username); } else { $user_id = bp_core_get_userid_from_nicename($username); } if (empty($user_id)) { continue; } // If an activity_id is provided, we can send email and BP notifications if ($activity_id) { bp_activity_at_message_notification($activity_id, $user_id); } $content = preg_replace('/(@' . $username . '\\b)/', "<a href='" . bp_core_get_user_domain($user_id) . "' rel='nofollow'>@{$username}</a>", $content); } // Adjust the activity count for this item if ($activity_id) { bp_activity_adjust_mention_count($activity_id, 'add'); } return $content; }