function _entityreference_autofill_get_settings in Entity reference autofill 7
Get settings for fields that have autofill enabled.
Parameters
bool $reset: Boolean indicating if the settings should be generated or fetched from cache.
Return value
array Multidimensional map of entityreference fields, keyed by (in order) entity type, bundle and field name. A settings entry contains:
- overwrite: Boolean indicating if fields with values should be overwritten.
- prepopulate: Available if the Entityreference prepopulate module is enabled for this field.
- fields: Map of fields that should be filled by the module.
3 calls to _entityreference_autofill_get_settings()
- entityreference_autofill_field_attach_form in ./
entityreference_autofill.module - Implements hook_field_attach_form().
- entityreference_autofill_field_update_instance in ./
entityreference_autofill.module - Implements hook_field_update_instance().
- entityreference_autofill_update_7001 in ./
entityreference_autofill.install - Move widget settings to behavior class settings.
File
- ./
entityreference_autofill.module, line 500 - Entity reference autofill module.
Code
function _entityreference_autofill_get_settings($reset = FALSE) {
// Use cached if available
// (Static is superfluous for now).
$settings =& drupal_static(__FUNCTION__);
if (!isset($settings) && !$reset) {
$cache = cache_get(__FUNCTION__);
if (!empty($cache->data)) {
$settings = $cache->data;
}
}
// Rebuild settings.
if (!isset($settings) || $reset) {
$field_map = field_info_field_map();
$enabled_fields = array();
foreach ($field_map as $field_name => $field) {
if ($field['type'] !== 'entityreference') {
continue;
}
foreach ($field['bundles'] as $entity_type => $bundles) {
foreach ($bundles as $bundle) {
$field_info = field_info_instance($entity_type, $field_name, $bundle);
if (isset($field_info['settings']['behaviors']['autofill'])) {
$module_settings = $field_info['settings']['behaviors']['autofill'];
if ($module_settings['status']) {
// Clear unused fields from field array.
$module_settings['fields'] = array_filter($module_settings['fields']);
$enabled_fields[$entity_type][$bundle][$field_name] = $module_settings;
// Reduntant, module is enabled if key exists.
unset($module_settings['status']);
// Entityreference prepopulate is enabled.
if (!empty($field_info['settings']['behaviors']['prepopulate']['status'])) {
$enabled_fields[$entity_type][$bundle][$field_name]['prepopulate'] = TRUE;
}
}
}
}
}
}
cache_set(__FUNCTION__, $enabled_fields);
$settings = $enabled_fields;
}
return $settings;
}