function field_instance_features_rebuild in Features 7.2
Implements of hook_features_rebuild(). Rebuilds field instances from code defaults.
1 call to field_instance_features_rebuild()
- field_instance_features_revert in includes/
features.field.inc - Implements hook_features_revert().
File
- includes/
features.field.inc, line 327 - Features integration on behalf of 'field' module.
Code
function field_instance_features_rebuild($module) {
if ($instances = features_get_default('field_instance', $module)) {
field_info_cache_clear();
// Load all the existing instances up-front so that we don't
// have to rebuild the cache all the time.
$existing_instances = field_info_instances();
foreach ($instances as $field_instance) {
// If the field base information does not exist yet, cancel out.
if (!field_info_field($field_instance['field_name'])) {
continue;
}
// Create or update field instance.
if (isset($existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']])) {
$existing_instance = $existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']];
if ($field_instance + $existing_instance != $existing_instance) {
try {
field_update_instance($field_instance);
} catch (FieldException $e) {
watchdog('features', 'Attempt to update field instance %label (in %entity entity type %bundle bundle) failed: %message', array(
'%label' => $field_instance['field_name'],
'%entity' => $field_instance['entity_type'],
'%bundle' => $field_instance['bundle'],
'%message' => $e
->getMessage(),
), WATCHDOG_ERROR);
}
}
}
else {
try {
field_create_instance($field_instance);
} catch (FieldException $e) {
watchdog('features', 'Attempt to create field instance %label (in %entity entity type %bundle bundle) failed: %message', array(
'%label' => $field_instance['field_name'],
'%entity' => $field_instance['entity_type'],
'%bundle' => $field_instance['bundle'],
'%message' => $e
->getMessage(),
), WATCHDOG_ERROR);
}
$existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']] = $field_instance;
}
}
if ($instances) {
variable_set('menu_rebuild_needed', TRUE);
}
}
}