Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
01/27/2016 09:15:07 PM (11 years ago)
Author:
djpaul
Message:

Emails: refactor notification functions and use bp_send_email to send email.

Backwards compatibility is mostly maintained, though there are a few unavoidable instances where some data passed to filters is no longer sent (an empty string or equivalent is provided to avoid PHP Notices). These will be detailed in a post on bpdevel.wordpress.com in the feature to alert plugin developers.

See #6592. Props timersys, mercime, boonebgorges, hnla, DJPaul.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/bp-core-filters.php

    r10477 r10479  
    241241}
    242242add_filter( 'nav_menu_css_class', 'bp_core_menu_highlight_nav_menu_item', 10, 2 );
    243 
    244 /**
    245  * Set "From" name in outgoing email to the site name.
    246  *
    247  * @uses bp_get_option() fetches the value for a meta_key in the wp_X_options table.
    248  *
    249  * @return string The blog name for the root blog.
    250  */
    251 function bp_core_email_from_name_filter() {
    252 
    253         /**
    254          * Filters the "From" name in outgoing email to the site name.
    255          *
    256          * @since 1.2.0
    257          *
    258          * @param string $value Value to set the "From" name to.
    259          */
    260         return apply_filters( 'bp_core_email_from_name_filter', bp_get_option( 'blogname', 'WordPress' ) );
    261 }
    262 add_filter( 'wp_mail_from_name', 'bp_core_email_from_name_filter' );
    263243
    264244/**
     
    434414 * WP's default welcome email with a BuddyPress-specific message.
    435415 *
    436  * @see wpmu_signup_blog_notification() for a description of parameters.
    437  *
    438416 * @param string $domain     The new blog domain.
    439417 * @param string $path       The new blog path.
     
    442420 * @param string $user_email The user's email address.
    443421 * @param string $key        The activation key created in wpmu_signup_blog().
    444  * @param array  $meta       By default, contains the requested privacy setting and
    445  *                           lang_id.
    446  * @return bool True on success, false on failure.
    447  */
    448 function bp_core_activation_signup_blog_notification( $domain, $path, $title, $user, $user_email, $key, $meta ) {
    449 
    450         // Set up activation link.
    451         $activate_url = bp_get_activation_page() ."?key=$key";
    452         $activate_url = esc_url( $activate_url );
    453 
    454         // Email contents.
    455         $message = sprintf( __( "%1\$s,\n\n\n\nThanks for registering! To complete the activation of your account and blog, please click the following link:\n\n%2\$s\n\n\n\nAfter you activate, you can visit your blog here:\n\n%3\$s", 'buddypress' ), $user, $activate_url, esc_url( "http://{$domain}{$path}" ) );
    456         $subject = bp_get_email_subject( array( 'text' => sprintf( __( 'Activate %s', 'buddypress' ), 'http://' . $domain . $path ) ) );
    457 
    458         /**
    459          * Filters the email that the notification is going to upon successful registration with blog.
    460          *
    461          * @since 1.2.0
    462          *
    463          * @param string $user_email The user's email address.
    464          * @param string $domain     The new blog domain.
    465          * @param string $path       The new blog path.
    466          * @param string $title      The site title.
    467          * @param string $user       The user's login name.
    468          * @param string $user_email The user's email address.
    469          * @param string $key        The activation key created in wpmu_signup_blog().
    470          * @param array  $meta       Array of meta values for the created site.
    471          */
    472         $to      = apply_filters( 'bp_core_activation_signup_blog_notification_to',   $user_email, $domain, $path, $title, $user, $user_email, $key, $meta );
    473 
    474         /**
    475          * Filters the subject that the notification uses upon successful registration with blog.
    476          *
    477          * @since 1.2.0
    478          *
    479          * @param string $subject    The subject to use.
    480          * @param string $domain     The new blog domain.
    481          * @param string $path       The new blog path.
    482          * @param string $title      The site title.
    483          * @param string $user       The user's login name.
    484          * @param string $user_email The user's email address.
    485          * @param string $key        The activation key created in wpmu_signup_blog().
    486          * @param array  $meta       Array of meta values for the created site.
    487          */
    488         $subject = apply_filters( 'bp_core_activation_signup_blog_notification_subject', $subject, $domain, $path, $title, $user, $user_email, $key, $meta );
    489 
    490         /**
    491          * Filters the message that the notification uses upon successful registration with blog.
    492          *
    493          * @since 1.2.0
    494          *
    495          * @param string $message    The message to use.
    496          * @param string $domain     The new blog domain.
    497          * @param string $path       The new blog path.
    498          * @param string $title      The site title.
    499          * @param string $user       The user's login name.
    500          * @param string $user_email The user's email address.
    501          * @param string $key        The activation key created in wpmu_signup_blog().
    502          * @param array  $meta       Array of meta values for the created site.
    503          */
    504         $message = apply_filters( 'bp_core_activation_signup_blog_notification_message', $message, $domain, $path, $title, $user, $user_email, $key, $meta );
    505 
    506         // Send the email.
    507         wp_mail( $to, $subject, $message );
    508 
    509         // Set up the $admin_email to pass to the filter.
    510         $admin_email = bp_get_option( 'admin_email' );
    511 
    512         /**
    513          * Fires after the sending of the notification to new users for successful registration with blog.
    514          *
    515          * @since 1.5.0
    516          *
    517          * @param string $admin_email Admin Email address for the site.
    518          * @param string $subject     Subject used in the notification email.
    519          * @param string $message     Message used in the notification email.
    520          * @param string $domain      The new blog domain.
    521          * @param string $path        The new blog path.
    522          * @param string $title       The site title.
    523          * @param string $user        The user's login name.
    524          * @param string $user_email  The user's email address.
    525          * @param string $key         The activation key created in wpmu_signup_blog().
    526          * @param array  $meta        Array of meta values for the created site.
    527          */
    528         do_action( 'bp_core_sent_blog_signup_email', $admin_email, $subject, $message, $domain, $path, $title, $user, $user_email, $key, $meta );
     422 * @return bool              Returns false to stop original WPMU function from continuing.
     423 */
     424function bp_core_activation_signup_blog_notification( $domain, $path, $title, $user, $user_email, $key ) {
     425        $args = array(
     426                'tokens' => array(
     427                        'activate-site.url' => esc_url( bp_get_activation_page() . '?key=' . urlencode( $key ) ),
     428                        'domain'            => $domain,
     429                        'key_blog'          => $key,
     430                        'path'              => $path,
     431                        'user-site.url'     => esc_url( "http://{$domain}{$path}" ),
     432                        'title'             => $title,
     433                        'user.email'        => $user_email,
     434                ),
     435        );
     436        bp_send_email( 'core-user-registration-with-blog', $user_email, $args );
    529437
    530438        // Return false to stop the original WPMU function from continuing.
    531439        return false;
    532440}
    533 add_filter( 'wpmu_signup_blog_notification', 'bp_core_activation_signup_blog_notification', 1, 7 );
     441add_filter( 'wpmu_signup_blog_notification', 'bp_core_activation_signup_blog_notification', 1, 6 );
    534442
    535443/**
     
    542450 * @param string $key        The activation key created in wpmu_signup_user().
    543451 * @param array  $meta       By default, an empty array.
    544  * @return bool|string True on success, false on failure.
     452 * @return bool|string       Returns false to stop original WPMU function from continuing.
    545453 */
    546454function bp_core_activation_signup_user_notification( $user, $user_email, $key, $meta ) {
    547 
    548455        if ( is_admin() ) {
     456
    549457                // If the user is created from the WordPress Add User screen, don't send BuddyPress signup notifications.
    550458                if( in_array( get_current_screen()->id, array( 'user', 'user-network' ) ) ) {
     
    558466                        }
    559467
    560                 /**
     468                /*
    561469                 * There can be a case where the user was created without the skip confirmation
    562470                 * And the super admin goes in pending accounts to resend it. In this case, as the
     
    572480        }
    573481
    574         // Set up activation link.
    575         $activate_url = bp_get_activation_page() . "?key=$key";
    576         $activate_url = esc_url( $activate_url );
    577 
    578         // Email contents.
    579         $message = sprintf( __( "Thanks for registering! To complete the activation of your account please click the following link:\n\n%1\$s\n\n", 'buddypress' ), $activate_url );
    580         $subject = bp_get_email_subject( array( 'text' => __( 'Activate Your Account', 'buddypress' ) ) );
    581 
    582         /**
    583          * Filters the email that the notification is going to upon successful registration without blog.
    584          *
    585          * @since 1.2.0
    586          *
    587          * @param string $user_email The user's email address.
    588          * @param string $user       The user's login name.
    589          * @param string $user_email The user's email address.
    590          * @param string $key        The activation key created in wpmu_signup_blog().
    591          * @param array  $meta       Array of meta values for the created site.
    592          */
    593         $to      = apply_filters( 'bp_core_activation_signup_user_notification_to',   $user_email, $user, $user_email, $key, $meta );
    594 
    595         /**
    596          * Filters the subject that the notification uses upon successful registration without blog.
    597          *
    598          * @since 1.2.0
    599          *
    600          * @param string $subject    The subject to use.
    601          * @param string $user       The user's login name.
    602          * @param string $user_email The user's email address.
    603          * @param string $key        The activation key created in wpmu_signup_blog().
    604          * @param array  $meta       Array of meta values for the created site.
    605          */
    606         $subject = apply_filters( 'bp_core_activation_signup_user_notification_subject', $subject, $user, $user_email, $key, $meta );
    607 
    608         /**
    609          * Filters the message that the notification uses upon successful registration without blog.
    610          *
    611          * @since 1.2.0
    612          *
    613          * @param string $message    The message to use.
    614          * @param string $user       The user's login name.
    615          * @param string $user_email The user's email address.
    616          * @param string $key        The activation key created in wpmu_signup_blog().
    617          * @param array  $meta       Array of meta values for the created site.
    618          */
    619         $message = apply_filters( 'bp_core_activation_signup_user_notification_message', $message, $user, $user_email, $key, $meta );
    620 
    621         // Send the email.
    622         wp_mail( $to, $subject, $message );
    623 
    624         // Set up the $admin_email to pass to the filter.
    625         $admin_email = bp_get_option( 'admin_email' );
    626 
    627         /**
    628          * Fires after the sending of the notification to new users for successful registration without blog.
    629          *
    630          * @since 1.5.0
    631          *
    632          * @param string $admin_email Admin Email address for the site.
    633          * @param string $subject     Subject used in the notification email.
    634          * @param string $message     Message used in the notification email.
    635          * @param string $user        The user's login name.
    636          * @param string $user_email  The user's email address.
    637          * @param string $key         The activation key created in wpmu_signup_blog().
    638          * @param array  $meta        Array of meta values for the created site. Default empty array.
    639          */
    640         do_action( 'bp_core_sent_user_signup_email', $admin_email, $subject, $message, $user, $user_email, $key, $meta );
     482        $args = array(
     483                'tokens' => array(
     484                        'activate.url' => esc_url( trailingslashit( bp_get_activation_page() ) . "{$key}/" ),
     485                        'key'          => $key,
     486                        'user.email'   => $user_email,
     487                ),
     488        );
     489        bp_send_email( 'core-user-registration', $user_email, $args );
    641490
    642491        // Return false to stop the original WPMU function from continuing.
Note: See TracChangeset for help on using the changeset viewer.