You are here

function blockreference_update_7202 in Block reference 7.2

Remove old bid index and ensure the moddelta one exists in the field record.

File

./blockreference.install, line 113
Block Reference install & updates.

Code

function blockreference_update_7202() {
  $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);
      $needs_update = FALSE;
      $indexes = $field['indexes'];
      foreach ($field['indexes'] as $index_name => $index) {
        if ($index && count($index) === 1 && reset($index) === 'bid') {
          unset($indexes[$index_name]);
          $needs_update = TRUE;
        }
      }
      $field['indexes'] = $indexes;

      // If the table got dropped before it could be re-created, create it now.
      if (!db_table_exists(_field_sql_storage_tablename($field))) {
        $storage_type = field_info_storage_types($field['storage']['type']);
        module_invoke($storage_type['module'], 'field_storage_create_field', $field);
        $needs_update = TRUE;
      }
      if ($needs_update) {
        field_update_field($field);
      }
    }
  }
}