function ffc_get_condition_fields in Field formatter conditions 7
API function: get all fields for the current context.
Parameters
$context: A collection of keys:
- entity_type: The name of the entity type
- bundle: The name of the bundle
- view_mode: The name of the view mode
- field_name: The name of the field
- ds_layout: Whether a Display Suite layout is configured or not.
If you implement a condition form, simply pass on the $context variable that is passed to that callback to this function, otherwise you will have to construct it yourself.
$exclude_current_field: Whether to exclude the current field or not.
Return value
A collection of fields on the current entity type and bundle
4 calls to ffc_get_condition_fields()
- ffc_condition_form_hide_if_empty in ./
ffc.ffc_conditions_info.inc - Field formatter conditional form.
- ffc_condition_form_hide_if_string in ./
ffc.ffc_conditions_info.inc - Field formatter conditional form.
- ffc_condition_form_hide_not_empty in ./
ffc.ffc_conditions_info.inc - Field formatter conditional form.
- ffc_condition_form_hide_no_string in ./
ffc.ffc_conditions_info.inc - Field formatter conditional form.
File
- ./
ffc.ffc_conditions_info.inc, line 145 - Hook implementations and API functions for Field formatter settings.
Code
function ffc_get_condition_fields($context, $exclude_current_field = TRUE) {
// Get the context.
$entity_type = $context['entity_type'];
$bundle = $context['bundle'];
$view_mode = $context['view_mode'];
$current_field = $context['field_name'];
$condition_fields = array();
// Get Field API fields.
$instances = field_info_instances($entity_type, $bundle);
foreach ($instances as $field_name => $instance) {
if ($field_name == $current_field && $exclude_current_field) {
continue;
}
$condition_fields[$field_name] = $instance['label'];
}
// Get Display Suite fields.
if (module_exists('ds') && !empty($context['ds_layout'])) {
$ds_fields = ds_get_fields($entity_type);
foreach ($ds_fields as $key => $field) {
if ($key == $current_field && $exclude_current_field) {
continue;
}
// Check on ui_limit.
if (isset($field['ui_limit'])) {
$continue = TRUE;
foreach ($field['ui_limit'] as $limitation) {
list($limit_bundle, $limit_view_mode) = explode('|', $limitation);
if ($limit_bundle == '*' || $limit_bundle == $bundle) {
if ($limit_view_mode == '*' || $limit_view_mode == $view_mode) {
$continue = FALSE;
}
}
}
if ($continue) {
continue;
}
}
$condition_fields[$key] = $field['title'];
}
}
return $condition_fields;
}