diff --git a/core/modules/file/file.install b/core/modules/file/file.install index 3ca855e..6e2d8bc 100644 --- a/core/modules/file/file.install +++ b/core/modules/file/file.install @@ -234,6 +234,18 @@ function file_requirements($phase) { } /** + * Implements hook_update_dependencies(). + */ +function file_update_dependencies() { + // Convert the format of the 'default_image' setting after fields and + // instances have been moved to the config system. + $dependencies['file'][8002] = array( + 'field' => 8003, + ); + return $dependencies; +} + +/** * Converts default_file_main variable to config. * * @ingroup config_upgrade @@ -264,27 +276,36 @@ function file_update_8001() { * Convert image field's default image configuration to the new format. */ function file_update_8002() { - if (module_exists('field_sql_storage')) { - $fields = field_read_fields(array('type' => 'image'), array('include_deleted' => TRUE, 'include_inactive' => TRUE)); - foreach ($fields as $field) { - if (!empty($field['settings']['default_image'])) { - $field['settings']['default_image'] = array($field['settings']['default_image']); + $field_uuids = array(); + + foreach (config_get_storage_names_with_prefix('field.field.') as $config_name) { + $field_config = config($config_name); + if ($field_config->get('type') == 'image') { + $field_uuids[] = $field_config->get('uuid'); + $settings = $field_config->get('settings'); + if (!empty($settings['default_image'])) { + $settings['default_image'] = array($settings['default_image']); } else { - $field['settings']['default_image'] = array(); + $settings['default_image'] = array(); } - field_update_field($field); + $field_config->set('settings', $settings); + $field_config->save(); + } + } - $instances = field_read_instances(array('field_name' => $field['field_name'])); - foreach ($instances as $instance) { - if (!empty($instance['settings']['default_image'])) { - $instance['settings']['default_image'] = array($instance['settings']['default_image']); - } - else { - $instance['settings']['default_image'] = array(); - } - field_update_instance($instance); + foreach (config_get_storage_names_with_prefix('field.instance.') as $config_name) { + $instance_config = config($config_name); + if (in_array($instance_config->get('field_uuid'), $field_uuids)) { + $settings = $instance_config->get('settings'); + if (!empty($settings['default_image'])) { + $settings['default_image'] = array($settings['default_image']); + } + else { + $settings['default_image'] = array(); } + $instance_config->set('settings', $settings); + $instance_config->save(); } } }