Profile notification by email – Code for theme functions.php
-
Hello everyone,
I am trying to make the code below work with Profile Builder but with no sucess, could you guys take a look?
I want to receive email notification for any profile change.
The original code:
/* =========================================== Send Emails when User Profile Changes =============================================*/ // IF EMAIL CHANGES function sr_user_profile_update_email( $user_id, $old_user_data ) { $user = get_userdata( $user_id ); if($old_user_data->user_email != $user->user_email) { $admin_email = "[email protected]"; $message = sprintf( __( 'This user has updated their profile on the SchoolRise USA Staff Member site.' ) ) . "\r\n\r\n"; $message .= sprintf( __( 'Display Name: %s' ), $user->display_name ). "\r\n\r\n"; $message .= sprintf( __( 'Old Email: %s' ), $old_user_data->user_email ). "\r\n\r\n"; $message .= sprintf( __( 'New Email: %s' ), $user->user_email ). "\r\n\r\n"; wp_mail( $admin_email, sprintf( __( '[Staff Member Site] User Profile Update' ), get_option('blogname') ), $message ); } } add_action( 'profile_update', 'sr_user_profile_update_email', 10, 2 ); // IF PHONE NUMBER CHANGES function sr_user_profile_update_phone( $user_id, $old_user_data ) { $old_user_data = get_transient( 'sr_old_user_data_' . $user_id ); $user = get_userdata( $user_id ); if($old_user_data->phone != $user->phone) { $admin_email = "[email protected]"; $message = sprintf( __( 'This user has updated their profile on the SchoolRise USA Staff Member site.' ) ) . "\r\n\r\n"; $message .= sprintf( __( 'Display Name: %s' ), $user->display_name ). "\r\n\r\n"; $message .= sprintf( __( 'Old Phone: %s' ), $old_user_data->phone ). "\r\n\r\n"; $message .= sprintf( __( 'New Phone: %s' ), $user->phone ). "\r\n\r\n"; wp_mail( $admin_email, sprintf( __( '[Staff Member Site] User Profile Update' ), get_option('blogname') ), $message ); } } add_action( 'profile_update', 'sr_user_profile_update_phone', 10, 2 ); // IF ADDRESS CHANGES function sr_user_profile_update_address( $user_id, $old_user_data ) { $old_user_data = get_transient( 'sr_old_user_data_' . $user_id ); $user = get_userdata( $user_id ); if($old_user_data->street != $user->street or $old_user_data->city != $user->city or $old_user_data->state != $user->state or $old_user_data->zip != $user->zip) { $admin_email = "[email protected]"; $message = sprintf( __( 'This user has updated their profile on the SchoolRise USA Staff Member site.' ) ) . "\r\n\r\n"; $message .= sprintf( __( 'Display Name: %s' ), $user->display_name ). "\r\n\r\n"; $message .= sprintf( __( 'Old Address: %s, %s, %s %s' ), $old_user_data->street, $old_user_data->city, $old_user_data->state, $old_user_data->zip ). "\r\n\r\n"; $message .= sprintf( __( 'New Address: %s, %s, %s %s' ), $user->street, $user->city, $user->state, $user->zip ). "\r\n\r\n"; wp_mail( $admin_email, sprintf( __( '[Staff Member Site] User Profile Update' ), get_option('blogname') ), $message ); } } add_action( 'profile_update', 'sr_user_profile_update_address', 10, 2 ); // Save old user data and meta for later comparison for non-standard fields (phone, address etc.) function sr_old_user_data_transient(){ $user_id = get_current_user_id(); $user_data = get_userdata( $user_id ); $user_meta = get_user_meta( $user_id ); foreach( $user_meta as $key=>$val ){ $user_data->data->$key = current($val); } // 1 hour should be sufficient set_transient( 'sr_old_user_data_' . $user_id, $user_data->data, 60 * 60 ); } add_action('show_user_profile', 'sr_old_user_data_transient'); // Cleanup when done function sr_old_user_data_cleanup( $user_id, $old_user_data ){ delete_transient( 'sr_old_user_data_' . $user_id ); } add_action( 'profile_update', 'sr_old_user_data_cleanup', 1000, 2 );And working with buddypress:
function rc_buddypress_profile_before_update_fields(){ $user_id = get_current_user_id(); $user_data = array(); $user_data['First Name'] = bp_get_profile_field_data('field=First Name') ; $user_data['Last Name'] = bp_get_profile_field_data('field=Last Name') ; $user_data['Spouse'] = bp_get_profile_field_data('field=Spouse') ; $user_data['Address Line 1'] = bp_get_profile_field_data('field=Address Line 1') ; $user_data['Address Line 2'] = bp_get_profile_field_data('field=Address Line 2') ; $user_data['City, State Zip'] = bp_get_profile_field_data('field=City, State Zip') ; $user_data['Country'] = bp_get_profile_field_data('field=Country') ; $user_data['City/Locality'] = bp_get_profile_field_data('field=City/Locality') ; $user_data['Zip/Postal Code'] = bp_get_profile_field_data('field=Zip/Postal Code') ; $user_data['Email Address'] = bp_get_profile_field_data('field=Email Address') ; $user_data['Home Phone'] = bp_get_profile_field_data('field=Home Phone') ; $user_data['Office Phone'] = bp_get_profile_field_data('field=Office Phone') ; $user_data['Mobile Phone'] = bp_get_profile_field_data('field=Mobile Phone') ; $user_data['Fax'] = bp_get_profile_field_data('field=Fax') ; $user_data['Fellowship Area'] = bp_get_profile_field_data('field=Fellowship Area') ; $user_data['Area Representative'] = bp_get_profile_field_data('field=Area Representative') ; $user_data['EF Credential'] = bp_get_profile_field_data('field=EF Credential') ; if ( false === ( $value = get_transient( 'sr_old_data_' . $user_id ) ) ) { // check if already transient created because this hook is being called for every field. set_transient( 'sr_old_data_' . $user_id, serialize($user_data), 60 * 60 ); } } // IF ANY FIELD CHANGES function rc_buddypress_profile_update_fields( $user_id ) { $old_data = unserialize(get_transient( 'sr_old_data_'.$user_id )); //fetch old data from transient delete_transient( 'sr_old_data_' . $user_id ); //delete transient $admin_email = "[email protected]"; /* count number of changes*/ $changes=0; foreach($old_data as $key => $value){ $newvalue = bp_get_profile_field_data('field='.$key); if($value != $newvalue) { $changes++; } } $message = sprintf( __( '%1$s has done following changes:', 'buddypress' ), bp_core_get_user_displayname( $user_id ) ) . "\r\n\r\n";; foreach($old_data as $key => $value){ if($changes == 1) // if only one change { $newvalue = bp_get_profile_field_data('field='.$key); if($value != $newvalue) { $message = sprintf( __( '%1$s has changed '.$key.':', 'buddypress' ), bp_core_get_user_displayname( $user_id ) ) . "\r\n\r\n"; $message .= sprintf( __( ' Old '.$key.': %1$s', 'buddypress' ), ( $value ) ) . "\r\n\r\n"; $message .= sprintf( __( ' New '.$key.': %1$s', 'buddypress' ), bp_get_profile_field_data( 'field='.$key ) ) . "\r\n\r\n"; } } else // if more than one change { $newvalue = bp_get_profile_field_data('field='.$key); if($value != $newvalue) { $message .= sprintf( __( '-> Old '.$key.': %1$s', 'buddypress' ), ( $value ) ) . "\r\n\r\n"; $message .= sprintf( __( ' New '.$key.': %1$s', 'buddypress' ), bp_get_profile_field_data( 'field='.$key ) ) . "\r\n\r\n"; } } } wp_mail( $admin_email, sprintf( __( 'EF Members Only User Profile Update' ), get_option('blogname') ), $message ); } add_action( 'xprofile_updated_profile', 'rc_buddypress_profile_update_fields', 10, 5 );
Viewing 4 replies - 1 through 4 (of 4 total)
Viewing 4 replies - 1 through 4 (of 4 total)
The topic ‘Profile notification by email – Code for theme functions.php’ is closed to new replies.