You are here

function defaultconfig_component_rebuild_fields in Default config 7

1 string reference to 'defaultconfig_component_rebuild_fields'
defaultconfig_defaultconfig_components in ./defaultconfig.module
Implements hook_defaultconfig_components().

File

./defaultconfig.module, line 182
main module file.

Code

function defaultconfig_component_rebuild_fields(array $info, $default_fields, $module = FALSE) {
  field_info_cache_clear();

  // We need to know what fields are defined by features.
  module_load_include('inc', 'features', 'features.export');
  features_include();
  features_include_defaults(array(
    'field',
  ));
  $features_fields = features_get_default('field');
  if (isset($default_fields)) {
    foreach ($default_fields as $name => $field) {

      // Do not interfere with fields exported by features.
      if (!isset($features_fields[$name])) {

        // Create or update field.
        $field_config = $field['field_config'];
        if ($existing_field = field_read_field($field_config['field_name'], array(
          'include_inactive' => TRUE,
        ))) {

          // If this field is inactive, we need to activate it first.
          if (!$existing_field['active']) {
            db_update('field_config')
              ->fields(array(
              'active' => 1,
            ))
              ->condition('field_name', $field_config['field_name'])
              ->execute();
          }
          field_update_field($field_config);
        }
        else {
          field_create_field($field_config);
        }

        // Create or update field instance.
        $field_instance = $field['field_instance'];
        $existing_instance = field_info_instance($field_instance['entity_type'], $field_instance['field_name'], $field_instance['bundle']);
        if ($existing_instance) {
          field_update_instance($field_instance);
        }
        else {
          field_create_instance($field_instance);
        }
        variable_set('menu_rebuild_needed', TRUE);
      }
    }
  }
}