bp_settings_verify_email_change()
Process email change verification or cancel requests.
Description
Source
File: bp-settings/actions/general.php
function bp_settings_verify_email_change() {
if ( ! bp_is_settings_component() ) {
return;
}
if ( ! bp_is_my_profile() ) {
return;
}
$redirect_to = trailingslashit( bp_displayed_user_domain() . bp_get_settings_slug() );
// Email change is being verified.
if ( isset( $_GET['verify_email_change'] ) ) {
$pending_email = bp_get_user_meta( bp_displayed_user_id(), 'pending_email_change', true );
// Bail if the hash provided doesn't match the one saved in the database.
if ( ! hash_equals( urldecode( $_GET['verify_email_change'] ), $pending_email['hash'] ) ) {
return;
}
$email_changed = wp_update_user( array(
'ID' => bp_displayed_user_id(),
'user_email' => trim( $pending_email['newemail'] ),
) );
if ( $email_changed ) {
// Delete the pending email change key.
bp_delete_user_meta( bp_displayed_user_id(), 'pending_email_change' );
// Post a success message and redirect.
bp_core_add_message( __( 'You have successfully verified your new email address.', 'buddyboss' ) );
} else {
// Unknown error.
bp_core_add_message( __( 'There was a problem verifying your new email address. Please try again.', 'buddyboss' ), 'error' );
}
bp_core_redirect( $redirect_to );
die();
// Email change is being dismissed.
} elseif ( ! empty( $_GET['dismiss_email_change'] ) ) {
$nonce_check = isset( $_GET['_wpnonce'] ) && wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), 'bp_dismiss_email_change' );
if ( $nonce_check ) {
bp_delete_user_meta( bp_displayed_user_id(), 'pending_email_change' );
bp_core_add_message( __( 'You have successfully dismissed your pending email change.', 'buddyboss' ) );
}
bp_core_redirect( $redirect_to );
die();
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.1.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.