Automattic\WooCommerce\Internal\Admin\Settings

SettingsUISchema::transform_legacy_fieldprivate staticWC 1.0

Transform a legacy field into the canonical schema.

Method of the class: SettingsUISchema{}

No Hooks.

Returns

Array|null.

Usage

$result = SettingsUISchema::transform_legacy_field( $setting, $default_save_adapter, ?string $visibility_controller ): ?array;
$setting(array) (required)
Legacy field definition.
$default_save_adapter(string) (required)
Default save adapter.
?string $visibility_controller
.
Default: null

SettingsUISchema::transform_legacy_field() code WC 10.9.1

private static function transform_legacy_field( array $setting, string $default_save_adapter, ?string $visibility_controller = null ): ?array {
	$id   = isset( $setting['id'] ) && is_scalar( $setting['id'] ) ? (string) $setting['id'] : '';
	$type = isset( $setting['type'] ) && is_string( $setting['type'] ) ? $setting['type'] : 'text';
	if ( '' === $id ) {
		return null;
	}

	$canonical_type = self::normalize_type( $type );
	$field          = array(
		'id'          => $id,
		'label'       => self::get_field_label( $setting, $id, $type ),
		'type'        => $canonical_type,
		'description' => self::get_field_description( $setting, $type ),
		'value'       => self::get_field_value( $setting, $canonical_type ),
		'save'        => self::get_save_schema( $setting, $default_save_adapter ),
	);

	foreach ( array( 'component', 'placeholder', 'disabled' ) as $key ) {
		if ( array_key_exists( $key, $setting ) ) {
			$field[ $key ] = $setting[ $key ];
		}
	}

	if ( isset( $setting['custom_attributes'] ) && is_array( $setting['custom_attributes'] ) ) {
		$field['customAttributes'] = self::get_custom_attributes( $setting['custom_attributes'] );
	}

	$visibility = self::get_field_visibility( $setting, $visibility_controller );
	if ( $visibility ) {
		$field['visibility'] = $visibility;
	}

	$options = self::get_options( $setting );
	if ( ! empty( $options ) ) {
		$field['options'] = $options;
	}

	if ( 'info' === $type && '' === $field['description'] && isset( $setting['text'] ) && is_scalar( $setting['text'] ) ) {
		$field['description'] = wp_kses_post( (string) $setting['text'] );
		$field['save']        = array( 'adapter' => 'none' );
	}

	return $field;
}