function blockreference_update_7201 in Block reference 7.2
Convert field default values to module/delta format.
File
- ./
blockreference.install, line 70 - Block Reference install & updates.
Code
function blockreference_update_7201() {
$all_fields = field_info_field_map();
foreach ($all_fields as $field_name => $field_info) {
if ($field_info['type'] == 'blockreference') {
$field = field_info_field($field_name);
foreach ($field_info['bundles'] as $entity_type => $bundles) {
foreach ($bundles as $bundle) {
$instance = field_info_instance($entity_type, $field_name, $bundle);
if (!empty($instance['default_value'])) {
$needs_update = FALSE;
foreach ($instance['default_value'] as $delta => $default) {
if (isset($default['bid'])) {
// Convert any existing bid defaults to a moddelta.
if (!empty($default['bid'])) {
$q = db_query("SELECT CONCAT(module, ':', delta) FROM {block} WHERE bid = :bid", array(
':bid' => $default['bid'],
));
$instance['default_value'][$delta]['moddelta'] = $q
->fetchField();
$instance['default_value'] = _field_filter_items($field, $instance['default_value']);
}
// Remove any default bid property entirely, even if empty.
unset($instance['default_value'][$delta]['bid']);
$needs_update = TRUE;
}
}
if ($needs_update) {
field_update_instance($instance);
}
}
}
}
}
}
}