You are here

function field_extractor_settings in Field Extractor 7

Introspects field and instance settings, and determines the correct settings for the functioning of the formatter.

Settings:

  • entity_type - The entity_type being loaded.
  • bundles - Bundles available to be referenced.
  • column - The name of the ref. field column that stores the entity id.
4 calls to field_extractor_settings()
field_extractor_field_formatter_settings_form in ./field_extractor.module
Implements hook_field_formatter_settings_form().
field_extractor_field_formatter_view in ./field_extractor.module
Implements hook_field_formatter_view().
field_extractor_handler_field::init in views/field_extractor_handler_field.inc
Init the handler with necessary data.
field_extractor_views_data_alter in views/field_extractor.views.inc
Implements hook_views_data_alter().

File

./field_extractor.module, line 284
Provides a formatter that displays a field from the referenced entities.

Code

function field_extractor_settings($field, $instance) {
  $settings = array(
    'entity_type' => NULL,
    'bundles' => array(),
    'column' => NULL,
  );
  if ($field['type'] == 'commerce_product_reference') {
    $settings['entity_type'] = 'commerce_product';
    $settings['column'] = 'product_id';

    // Make sure 'referenceable_types' is set.
    $instance['settings'] += array(
      'referenceable_types' => array(),
    );

    // The product reference field has its bundle setting, use it.
    $types = array_filter($instance['settings']['referenceable_types']);
    if (!empty($types)) {
      $settings['bundles'] = array_values($types);
    }
  }
  elseif ($field['type'] == 'entityreference') {
    $settings['entity_type'] = $field['settings']['target_type'];
    $settings['column'] = 'target_id';
    if (!empty($field['settings']['handler_settings']['target_bundles'])) {
      $bundles = array_filter($field['settings']['handler_settings']['target_bundles']);
      if (!empty($bundles)) {
        $settings['bundles'] = array_values($bundles);
      }
    }
  }
  elseif ($field['type'] == 'taxonomy_term_reference') {
    $settings['entity_type'] = 'taxonomy_term';
    $settings['column'] = 'tid';
  }

  // By default, allow entities of all bundles to be created.
  if (empty($settings['bundles'])) {
    $info = entity_get_info($settings['entity_type']);
    if (!empty($info['bundles'])) {
      foreach ($info['bundles'] as $bundle_name => $bundle_info) {
        $settings['bundles'][] = $bundle_name;
      }
    }
  }
  return $settings;
}