Automattic\WooCommerce\Internal\RestApi\Routes\V4\Settings\Emails\Schema
EmailsSettingsSchema::validate_and_sanitize_settings
Validate and sanitize email settings.
Method of the class: EmailsSettingsSchema{}
Hooks from the method
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() EmailsSettingsSchema::validate and sanitize settings code WC 10.8.1
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;
}
/**
* Filters the validated settings after validation and sanitization.
*
* @param array $validated Validated settings.
* @param WC_Email $email Email instance.
* @param array $values Values to validate and sanitize.
* @return array Validated settings.
* @since 10.6.0
*/
$validated = apply_filters( 'woocommerce_emails_settings_schema_validate_and_sanitize_settings', $validated, $email, $values );
if ( is_wp_error( $validated ) ) {
return $validated;
}
if ( ! is_array( $validated ) ) {
return new WP_Error(
'rest_invalid_filter_result',
__( 'Invalid result from filter.', 'woocommerce' ),
array( 'status' => 500 )
);
}
return $validated;
}