function double_field_update_7201 in Double Field 7.2
Fix fields settings.
File
- ./
double_field.install, line 64 - Install, update and uninstall functions for the double field module.
Code
function double_field_update_7201() {
$field_names = array();
foreach (field_read_fields(array(
'module' => 'double_field',
)) as $field) {
$field_names[] = $field['field_name'];
foreach (array(
'first',
'second',
) as $subfield) {
$field['settings'][$subfield]['maxlength'] = $field['settings'][$subfield . '_maxlength'];
unset($field['settings'][$subfield . '_maxlength']);
}
field_update_field($field);
$params = array(
'field_name' => $field_names,
);
foreach (field_read_instances($params) as $instance) {
// Update widget type and widget settings.
$instance['widget']['type'] = 'textfield_&_textfield';
$widget_info = double_field_field_widget_info();
foreach (array(
'first',
'second',
) as $subfield) {
$old_settings = $instance['widget']['settings'][$subfield];
$instance['widget']['settings'][$subfield] = $widget_info['textfield_&_textfield']['settings'][$subfield];
$instance['widget']['settings'][$subfield]['textfield']['size'] = $old_settings['size'];
unset($old_settings['size']);
$instance['widget']['settings'][$subfield]['general'] = $old_settings;
}
// Update formatter type and formatter settings.
$formatters = double_field_field_formatter_info();
foreach ($instance['display'] as &$display) {
switch ($display['type']) {
case 'double_field_inline':
$display['type'] = 'double_field_unformatted_list';
$display['settings']['style'] = 'inline';
break;
case 'double_field_block':
$display['type'] = 'double_field_unformatted_list';
$display['settings']['style'] = 'block';
break;
case 'double_field_fieldset':
$display['type'] = 'double_field_fieldset';
break;
}
foreach (array(
'first',
'second',
) as $subfield) {
$display['settings'][$subfield] = array_merge($formatters[$display['type']]['settings'][$subfield], $display['settings'][$subfield]);
}
}
// Save the instance data.
field_update_instance($instance);
}
}
}