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' ] );
	}


User Contributed Notes

You must log in before being able to contribute a note or feedback.