Update_Profile_Handler::handle_request( $submission )
Summary
No summary available.Source
File: src/BigCommerce/Forms/Update_Profile_Handler.php
public function handle_request( $submission ) { if ( ! $this->should_handle_request( $submission ) ) { return; } $user = wp_get_current_user(); $errors = $this->validate_submission( $submission, $user ); $password = $submission[ 'bc-profile' ][ 'new_password' ]; // prevent logging sensitive information in plain text unset( $submission[ 'bc-profile' ][ 'current_password' ] ); unset( $submission[ 'bc-profile' ][ 'new_password' ] ); unset( $submission[ 'bc-profile' ][ 'confirm_password' ] ); if ( count( $errors->get_error_codes() ) > 0 ) { do_action( 'bigcommerce/form/error', $errors, $submission ); return; } $customer = new Customer( $user->ID ); $profile = $this->get_profile( $submission[ 'bc-profile' ] ); $update_user = false; if ( ! empty( $profile[ 'email' ] ) && $profile[ 'email' ] != $user->user_email ) { $user->user_email = $profile[ 'email' ]; $update_user = true; } $userdata = $user->to_array(); if ( $password ) { $userdata['user_pass'] = $password; $update_user = true; $profile[ '_authentication' ][ 'password' ] = $password; } if ( $update_user ) { $updated = wp_update_user( $userdata ); if ( is_wp_error( $updated ) ) { switch ( $updated->get_error_code() ) { case 'existing_user_email': case 'empty_user_login': case 'user_login_too_long': case 'existing_user_login': case 'invalid_username': $errors->add( 'email', $updated->get_error_message() ); break; default: $errors->add( $updated->get_error_code(), $updated->get_error_message() ); break; } do_action( 'bigcommerce/form/error', $errors, $submission ); return; } } $success = $customer->update_profile( $profile ); if ( ! $success ) { $errors->add( 'api_error', __( 'There was an error saving your request. Please try again.', 'bigcommerce' ) ); do_action( 'bigcommerce/form/error', $errors, $submission ); return; } /** * Filters profile form success message. * * @param string $message Profile form success message. */ $message = apply_filters( 'bigcommerce/form/profile/success_message', __( 'Profile updated.', 'bigcommerce' ) ); do_action( 'bigcommerce/form/success', $message, $submission, null, [ 'key' => 'profile_updated' ] ); }