You are here

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);
            }
          }
        }
      }
    }
  }
}