Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
12/27/2009 08:01:21 PM (17 years ago)
Author:
apeatling
Message:

@username notifications and filters.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-xprofile/bp-xprofile-notifications.php

    r2077 r2218  
    11<?php
    22
     3function xprofile_at_message_notification( $content, $poster_user_id, $activity_id ) {
     4        global $bp;
     5
     6        /* Scan for @username strings in an activity update. Notify each user. */
     7        $pattern = '/[@]+([A-Za-z0-9-_]+)/';
     8        preg_match_all( $pattern, $content, $usernames );
     9
     10        /* Make sure there's only one instance of each username */
     11        if ( !$usernames = array_unique( $usernames[1] ) )
     12                return false;
     13
     14        foreach( (array)$usernames as $username ) {
     15                if ( !$receiver_user_id = bp_core_get_userid($username) )
     16                        continue;
     17
     18                // Add a screen notification of an @message
     19                bp_core_add_notification( $activity_id, $receiver_user_id, $bp->profile->id, 'new_at_mention', $poster_user_id );
     20
     21                // Now email the user with the contents of the message (if they have enabled email notifications)
     22                if ( !get_usermeta( $user_id, 'notification_activity_new_mention' ) || 'yes' == get_usermeta( $user_id, 'notification_activity_new_mention' ) ) {
     23                        $poster_name = bp_core_get_user_displayname( $poster_user_id );
     24
     25                        $message_link = bp_activity_get_permalink( $activity_id );
     26                        $settings_link = bp_core_get_user_domain( $user_id ) . 'settings/notifications/';
     27
     28                        // Set up and send the message
     29                        $ud = get_userdata( $receiver_user_id );
     30                        $to = $ud->user_email;
     31                        $subject = '[' . get_blog_option( BP_ROOT_BLOG, 'blogname' ) . '] ' . sprintf( __( '%s mentioned you in an update', 'buddypress' ), stripslashes($poster_name) );
     32
     33$message = sprintf( __(
     34'%s mentioned you in an update:
     35
     36"%s"
     37
     38To view and respond to the message, log in and visit: %s
     39
     40---------------------
     41', 'buddypress' ), $poster_name, wp_filter_kses( stripslashes($content) ), $message_link );
     42
     43                        $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link );
     44
     45                        // Send it
     46                        wp_mail( $to, $subject, $message );
     47                }
     48        }
     49}
     50add_action( 'xprofile_posted_update', 'xprofile_at_message_notification', 10, 3 );
     51
    352/**
    4  * xprofile_record_wire_post_notification()
     53 * xprofile_record_wire_post_notification() [DEPRECATED]
    554 *
    655 * Records a notification for a new profile wire post to the database and sends out a notification
Note: See TracChangeset for help on using the changeset viewer.