bp_email_unsubscribe_handler()
Handles unsubscribing user from notification emails.
Description
Source
File: bp-core/bp-core-functions.php
function bp_email_unsubscribe_handler() { $emails = bp_email_get_unsubscribe_type_schema(); $raw_email_type = ! empty( $_GET['nt'] ) ? $_GET['nt'] : ''; $raw_hash = ! empty( $_GET['nh'] ) ? $_GET['nh'] : ''; $raw_user_id = ! empty( $_GET['uid'] ) ? absint( $_GET['uid'] ) : 0; $new_hash = hash_hmac( 'sha1', "{$raw_email_type}:{$raw_user_id}", bp_email_get_salt() ); // Check required values. if ( ! $raw_user_id || ! $raw_email_type || ! $raw_hash || ! array_key_exists( $raw_email_type, $emails ) ) { $redirect_to = wp_login_url(); $result_msg = __( 'Something has gone wrong.', 'buddyboss' ); $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddyboss' ); // Check valid hash. } elseif ( ! hash_equals( $new_hash, $raw_hash ) ) { $redirect_to = wp_login_url(); $result_msg = __( 'Something has gone wrong.', 'buddyboss' ); $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddyboss' ); // Don't let authenticated users unsubscribe other users' email notifications. } elseif ( is_user_logged_in() && get_current_user_id() !== $raw_user_id ) { $result_msg = __( 'Something has gone wrong.', 'buddyboss' ); $unsub_msg = __( 'Please go to your notifications settings to unsubscribe from emails.', 'buddyboss' ); if ( bp_is_active( 'settings' ) ) { $redirect_to = sprintf( '%s%s/notifications/', bp_core_get_user_domain( get_current_user_id() ), bp_get_settings_slug() ); } else { $redirect_to = bp_core_get_user_domain( get_current_user_id() ); } } else { if ( bp_is_active( 'settings' ) ) { $redirect_to = sprintf( '%s%s/notifications/', bp_core_get_user_domain( $raw_user_id ), bp_get_settings_slug() ); } else { $redirect_to = bp_core_get_user_domain( $raw_user_id ); } // Unsubscribe. $meta_key = $emails[ $raw_email_type ]['unsubscribe']['meta_key']; bp_update_user_meta( $raw_user_id, $meta_key, 'no' ); $result_msg = $emails[ $raw_email_type ]['unsubscribe']['message']; $unsub_msg = __( 'You can change this or any other email notification preferences in your email settings.', 'buddyboss' ); } $message = sprintf( '%1$s <a href="%2$s">%3$s</a>', $result_msg, esc_url( $redirect_to ), esc_html( $unsub_msg ) ); bp_core_add_message( $message ); bp_core_redirect( bp_core_get_user_domain( $raw_user_id ) ); exit; }
Changelog
Version | Description |
---|---|
BuddyPress 2.7.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.