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