You are here

function field_conditional_state_entity_view in Field Conditional States 7

Implements hook_entity_view().

Hide field in entity view if state for controlled field is set to visible or infisible based on the value from control field.

File

./field_conditional_state.module, line 148
Main functions for field_conditional_state

Code

function field_conditional_state_entity_view($entity, $type, $view_mode, $langcode) {
  if (!empty($entity->content)) {
    foreach ($entity->content as $field_name => $field_content) {
      if (is_array($field_content) && isset($field_content['#bundle'])) {
        $field_conditions = field_conditional_state_get_field_conditions($field_name, $field_content['#bundle']);
        $data = array(
          $type,
          $view_mode,
          $langcode,
        );
        drupal_alter('field_conditional_state_entity_view', $field_conditions, $entity, $data);
        if ($field_conditions) {
          foreach ($field_conditions as $condition) {
            $lang = $field_content['#language'];
            $control_field_name = $condition['control_field'];
            $control_values = $entity->{$control_field_name};
            $trigger_value_exist = field_conditional_state_trigger_value_in_field_value($control_values[$lang], $condition['trigger_values'], $condition['condition_type']);
            if ($condition['state'] == 'visible' && !$trigger_value_exist || $condition['state'] == 'invisible' && $trigger_value_exist) {
              $entity->content[$field_name]['#access'] = FALSE;
            }
          }
        }
      }
    }
  }
}