Automattic\WooCommerce\Internal\RestApi\Routes\V4\Settings\PaymentGateways\Schema

BacsGatewaySettingsSchema::validate_bacs_accountsprivateWC 1.0

Validate BACS account details array.

Method of the class: BacsGatewaySettingsSchema{}

No Hooks.

Returns

Array|WP_Error. Validated accounts or error.

Usage

// private - for code of main (parent) class only
$result = $this->validate_bacs_accounts( $value );
$value(mixed) (required)
Account details value.

BacsGatewaySettingsSchema::validate_bacs_accounts() code WC 10.4.3

private function validate_bacs_accounts( $value ) {
	if ( ! is_array( $value ) ) {
		return new WP_Error(
			'rest_invalid_param',
			__( 'Account details must be an array.', 'woocommerce' ),
			array( 'status' => 400 )
		);
	}

	$validated_accounts = array();
	$valid_fields       = array( 'account_name', 'account_number', 'sort_code', 'bank_name', 'iban', 'bic' );

	foreach ( $value as $index => $account ) {
		if ( ! is_array( $account ) ) {
			return new WP_Error(
				'rest_invalid_param',
				sprintf(
					/* translators: %d: account index */
					__( 'Account at index %d must be an object.', 'woocommerce' ),
					$index
				),
				array( 'status' => 400 )
			);
		}

		$validated_account = array();

		// Sanitize each field.
		foreach ( $valid_fields as $field ) {
			$validated_account[ $field ] = isset( $account[ $field ] )
				? sanitize_text_field( $account[ $field ] )
				: '';
		}

		// Only add if at least one field is filled.
		if ( array_filter( $validated_account ) ) {
			$validated_accounts[] = $validated_account;
		}
	}

	return $validated_accounts;
}