You are here

function _field_info_collate_fields in Drupal 7

Collates all information on existing fields and instances.

Deprecated. This function is kept to ensure backwards compatibility, but has a serious performance impact, and should be absolutely avoided. See http://drupal.org/node/1915646.

Use the regular field_info_*() API functions to access the information, or field_info_cache_clear() to clear the cached data.

Related topics

File

modules/field/field.info.inc, line 76
Field Info API, providing information about available fields and field types.

Code

function _field_info_collate_fields($reset = FALSE) {
  if ($reset) {
    _field_info_field_cache()
      ->flush();
    return;
  }
  $cache = _field_info_field_cache();

  // Collect fields, and build the array of IDs keyed by field_name.
  $fields = $cache
    ->getFields();
  $field_ids = array();
  foreach ($fields as $id => $field) {
    if (!$field['deleted']) {
      $field_ids[$field['field_name']] = $id;
    }
  }

  // Collect extra fields for all entity types.
  $extra_fields = array();
  foreach (field_info_bundles() as $entity_type => $bundles) {
    foreach ($bundles as $bundle => $info) {
      $extra_fields[$entity_type][$bundle] = $cache
        ->getBundleExtraFields($entity_type, $bundle);
    }
  }
  return array(
    'fields' => $fields,
    'field_ids' => $field_ids,
    'instances' => $cache
      ->getInstances(),
    'extra_fields' => $extra_fields,
  );
}