get_row( $wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_email = %s", $email ))) || ( $user = $wpdb->get_row( $wpdb->prepare("SELECT u.* FROM ( SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'email_alt' and meta_value = %s LIMIT 1 ) m JOIN $wpdb->users u ON m.user_id = u.ID LIMIT 1", $email ))) ){ _fill_user( $user ); wp_cache_add( get_usermeta( $user->ID, 'email_alt'), $user->ID, 'useremail'); return $user; } return false; } function get_user_by_phone( $phone ) { global $wpdb; $phone = sanitize_phone( $phone ); $user_id = wp_cache_get( $phone, 'userphone' ); if( false !== $user_id ) return get_userdata( $user_id ); if( $user = $wpdb->get_row( $wpdb->prepare( "SELECT u.* FROM ( SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'phone' and meta_value = %s LIMIT 1 ) m JOIN $wpdb->users u ON m.user_id = u.ID LIMIT 1", $phone )) ){ _fill_user( $user ); wp_cache_add( get_usermeta( $user->ID, 'phone'), $user->ID, 'userphone'); return $user; }else{ return false; } } function sanitize_phone( $phone ){ $phone = preg_replace( '/[^0-9]/', '', $phone); if( strlen( $phone ) > 10 ) return $phone; if( strlen( $phone ) == 10 ) return '1'. $phone; return FALSE; } function ac_delete_waiting( $user_id, $field, $ticket ) { global $wptix; switch( $field ){ case 'email': case 'email_alt': case 'phone': break; default: return( FALSE ); } delete_usermeta( $user_id, $field .'_waiting' ); $wptix->delete_ticket( $ticket ); } function ac_user_profile_ob_start() { ob_start( 'ac_user_profile_ob_content' ); } function ac_user_profile_ob_content( $content ) { global $user_id; $email_waiting = $email_alt_waiting = $phone_waiting = ''; $notice_email = '

Any change to your email address must be confirmed. You will receive a message at your new address with instructions.

'; $notice_phone = '

A text message will be sent to your phone to confirm phone number changes. Standard messaging rates apply.

'; if( $waiting = get_usermeta( $user_id, 'email_waiting' )) if( time() > $waiting['arg']['expire'] ) ac_delete_waiting( $user_id, 'email', $waiting['ticket'] ); else $email_waiting = '

Awaiting confirmation of '. $waiting['arg']['val'] .'.
Message sent '. $waiting['arg']['sent'] .'. Re-enter the address to send a new confirmation email.

'; if( $waiting = get_usermeta( $user_id, 'email_alt_waiting' )) if( time() > $waiting['arg']['expire'] ) ac_delete_waiting( $user_id, 'email_alt', $waiting['ticket'] ); else $email_alt_waiting = '

Awaiting confirmation of '. $waiting['arg']['val'] .'.
Message sent '. $waiting['arg']['sent'] .'. Re-enter the address to send a new confirmation email.

'; if( $waiting = get_usermeta( $user_id, 'phone_waiting' )) if( time() > $waiting['arg']['expire'] ) ac_delete_waiting( $user_id, 'phone', $waiting['ticket'] ); else $phone_waiting = '

Awaiting confirmation of '. $waiting['arg']['val'] .'.
SMS text message sent '. $waiting['arg']['sent'] .'.

Have your confirmation code? Enter it here:

Or re-enter the phone number to send a new confirmation message.

'; $content = preg_replace( '/[^<]*