Carbon_Fields\Widget\Widget::unwrap_complex_field_values PHP Method

unwrap_complex_field_values() public static method

Expand complex fields from raw data.
public static unwrap_complex_field_values ( $instance, $complex_field_names )
    public static function unwrap_complex_field_values($instance, $complex_field_names)
    {
        foreach ($complex_field_names as $name) {
            foreach ($instance as $key => $value) {
                if (!preg_match('~^' . preg_quote($name, '~') . '(?P<group>\\w*)-_?(?P<key>.*?)_(?P<index>\\d+)_?(?P<sub>\\w+)?(-(?P<trailing>.*))?$~', $key, $field_name)) {
                    continue;
                }
                $value = maybe_unserialize($value);
                $instance[$name][$field_name['index']]['_type'] = $field_name['group'];
                if (!empty($field_name['trailing'])) {
                    if (!preg_match('~^' . preg_quote($field_name['key'], '~') . '(?P<group>\\w*)-_?(?P<key>.*)_(?P<index>\\d+)_?(?P<sub>\\w+)?$~', $field_name['key'] . '_' . $field_name['sub'] . '-' . $field_name['trailing'], $subfield_name)) {
                        continue;
                    }
                    $instance[$name][$field_name['index']][$field_name['key']][$subfield_name['index']]['_type'] = $subfield_name['group'];
                    if (!empty($subfield_name['sub'])) {
                        $instance[$name][$field_name['index']][$field_name['key']][$subfield_name['index']][$subfield_name['key']][$subfield_name['sub']] = $value;
                    } else {
                        $instance[$name][$field_name['index']][$field_name['key']][$subfield_name['index']][$subfield_name['key']] = $value;
                    }
                } else {
                    if (!empty($field_name['sub'])) {
                        $instance[$name][$field_name['index']][$field_name['key']][$field_name['sub']] = $value;
                    } else {
                        $instance[$name][$field_name['index']][$field_name['key']] = $value;
                    }
                }
                unset($instance[$key]);
            }
        }
        return $instance;
    }