Automattic\WooCommerce\Internal\Admin\Settings

SettingsUISchema::is_form_value_for_field │ private static │ WC 1.0

Whether a value can be replayed safely for a field through classic form-post semantics.

Method of the class: SettingsUISchema{}

No Hooks.

Returns

bool.

Usage

$result = SettingsUISchema::is_form_value_for_field( $value, $field ): bool;
$value(mixed) (required)
Candidate form value.
$field(array) (required)
Canonical field definition.

SettingsUISchema::is_form_value_for_field() code WC 11.2.1

private static function is_form_value_for_field( $value, array $field ): bool {
	if ( ! self::is_form_value( $value ) ) {
		return false;
	}

	if ( 'array' !== ( $field['type'] ?? null ) && ! is_string( $value ) ) {
		return false;
	}

	$type = $field['type'] ?? null;
	if ( ! is_string( $type ) || ! in_array( $type, self::TYPED_VALUE_FIELD_TYPES, true ) ) {
		return array_key_exists( 'value', $field ) && $value === $field['value'];
	}
	if ( ! array_key_exists( 'value', $field ) ) {
		return false;
	}

	try {
		switch ( $type ) {
			case 'array':
				$canonical_value = self::canonicalize_array_value( $value, $field['id'] );
				break;
			case 'checkbox':
				$canonical_value = '1' === $value || 'yes' === $value;
				break;
			case 'number':
				$canonical_value = self::canonicalize_number( $value, false, $field['id'], 'save.initialValue' );
				break;
			case 'integer':
				$canonical_value = self::canonicalize_number( $value, true, $field['id'], 'save.initialValue' );
				break;
			case 'datetime-local':
				$canonical_value = self::canonicalize_datetime( $value, $field['id'] );
				break;
			default:
				return true;
		}
	} catch ( \InvalidArgumentException $exception ) {
		unset( $exception );
		return false;
	}

	$current_value = $field['value'];
	if ( 'number' === $type && null !== $canonical_value && null !== $current_value ) {
		return self::numeric_values_agree( $canonical_value, $current_value );
	}

	return $canonical_value === $current_value;
}