Automattic\WooCommerce\Internal\Admin\Settings
SettingsUISchema::canonicalize_typed_visibility_values
Canonicalize visibility values with their controller field type.
Method of the class: SettingsUISchema{}
No Hooks.
Returns
null. Nothing (null).
Usage
$result = SettingsUISchema::canonicalize_typed_visibility_values( $schema, $controller_types, $converted_fields ): void;
- $schema(array) (required)
- Schema being canonicalized.
- $controller_types(array<string,string>) (required)
- Field types keyed by field id.
- $converted_fields(string[]) (required)
- Affected field ids.
SettingsUISchema::canonicalize_typed_visibility_values() SettingsUISchema::canonicalize typed visibility values code WC 11.2.1
private static function canonicalize_typed_visibility_values( array &$schema, array $controller_types, array &$converted_fields ): void {
foreach ( $schema['groups'] as &$group ) {
if ( ! is_array( $group ) || ! isset( $group['fields'] ) || ! is_array( $group['fields'] ) ) {
continue;
}
foreach ( $group['fields'] as &$field ) {
if ( ! is_array( $field ) || ! isset( $field['id'] ) || ! is_string( $field['id'] ) ) {
continue;
}
$visibility = $field['visibility'] ?? null;
if ( ! is_array( $visibility ) || ! array_key_exists( 'value', $visibility ) ) {
continue;
}
$controller = $visibility['controller'] ?? null;
if ( ! is_string( $controller ) ) {
continue;
}
$type = $controller_types[ $controller ] ?? null;
if ( ! is_string( $type ) || ! in_array( $type, self::TYPED_VALUE_FIELD_TYPES, true ) ) {
continue;
}
$original = $visibility['value'];
$canonical = self::canonicalize_typed_visibility_value( $original, $type, $controller );
if ( $original !== $canonical ) {
$field['visibility']['value'] = $canonical;
$converted_fields[] = $field['id'];
}
}
unset( $field );
}
unset( $group );
}