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

EmailsSettingsSchema::validate_and_sanitize_settingspublicWC 1.0

Validate and sanitize email settings.

Method of the class: EmailsSettingsSchema{}

No Hooks.

Returns

Array|WP_Error. Validated settings or error.

Usage

$EmailsSettingsSchema = new EmailsSettingsSchema();
$EmailsSettingsSchema->validate_and_sanitize_settings( $email, $values );
$email(WC_Email) (required)
Email instance.
$values(array) (required)
Values to validate and sanitize.

EmailsSettingsSchema::validate_and_sanitize_settings() code WC 10.4.3

public function validate_and_sanitize_settings( WC_Email $email, array $values ) {
	$email->init_form_fields();
	$validated = array();

	foreach ( $values as $field_id => $value ) {
		// Only allow valid form fields.
		if ( ! isset( $email->form_fields[ $field_id ] ) ) {
			continue;
		}

		$field      = $email->form_fields[ $field_id ];
		$field_type = $field['type'] ?? 'text';

		// Unwrap personalization tags if the field supports them to make sure we don't strip them in the sanitization process.
		if ( in_array( $field_id, self::FIELDS_SUPPORTING_PERSONALIZATION_TAGS, true ) ) {
			$value = $this->unwrap_woocommerce_tags( $value );
		}

		// Sanitize by type.
		$sanitized = $this->sanitize_field_value( $field_type, $value );

		// Sanitize Personalization tags. Wrap them in HTML comments for the email editor.
		if ( in_array( $field_id, self::FIELDS_SUPPORTING_PERSONALIZATION_TAGS, true ) ) {
			$sanitized = $this->wrap_woocommerce_tags( $sanitized );
		}

		// Validate.
		$validation = $this->validate_field_value( $field_id, $sanitized, $field );
		if ( is_wp_error( $validation ) ) {
			return $validation;
		}

		$validated[ $field_id ] = $sanitized;
	}

	return $validated;
}