1 field.crud.inc | field_read_fields($params = array(), $include_additional = array()) |
Reads in fields that match an array of conditions.
Parameters
array $params: An array of conditions to match against.
array $include_additional: The default behavior of this function is to not return fields that are inactive or have been deleted. Setting $include_additional['include_inactive'] or $include_additional['include_deleted'] to TRUE will override this behavior.
Return value
An array of fields matching $params. If: $include_additional['include_deleted'] is TRUE, the array is keyed by field id, otherwise it is keyed by field name.
Related topics
File
- core/
modules/ field/ field.crud.inc, line 345 - Field CRUD API, handling field and field instance creation and deletion.
Code
function field_read_fields($params = array(), $include_additional = array()) {
$include_inactive = isset($include_additional['include_inactive']) && $include_additional['include_inactive'];
$include_deleted = isset($include_additional['include_deleted']) && $include_additional['include_deleted'];
$prefix = 'field.field.';
if (isset($params['field_name'])) {
$config_names = array($prefix . $params['field_name']);
}
else {
$config_names = config_get_names_with_prefix($prefix);
}
$fields = array();
foreach ($config_names as $config_name) {
$config = config($config_name);
$field = $config->get();
// Continue if matching against a specific field that doesn't exist.
if (isset($params['field_name']) && empty($field)) {
continue;
}
else {
unset($params['field_name']);
}
// Continue if the config does not match passed parameters.
if ($params) {
foreach ($params as $param_key => $param_value) {
if ($field[$param_key] != $param_value) {
continue 2;
}
}
}
// Continue if this is an inactive field.
if ((!$field['active'] || !$field['storage']['active']) && !$include_inactive) {
continue;
}
// Or a deleted field.
if ($field['deleted'] && !$include_deleted) {
continue;
}
module_invoke_all('field_read_field', $field);
// Populate storage information.
$schema = field_retrieve_schema($field);
$field['columns'] = $schema['columns'];
$field['indexes'] = $schema['indexes'];
$field['foreign keys'] = $schema['foreign keys'];
// Populate defaults.
$field += field_defaults_field($field['type']);
$field['settings'] += field_info_field_settings($field['type']);
$field_name = $field['field_name'];
$fields[$field_name] = $field;
}
return $fields;
}