You are here

function flexiform_conditional_fields_element_condition_met in Flexiform 7

Work out whether a conditional field condition has been met by the values in form_state.

1 call to flexiform_conditional_fields_element_condition_met()
flexiform_conditional_fields_required_element_validate in flexiform_conditional_fields/flexiform_conditional_fields.module
Validate elements that have a required dependency.

File

flexiform_conditional_fields/flexiform_conditional_fields.module, line 280
Main module code for flexiform conditional fields integrations.

Code

function flexiform_conditional_fields_element_condition_met($element, $form, &$form_state, $dependency) {
  $condition = $dependency['condition'];
  $flexiform_element = $element['#flexiform_element'];

  // Get the entity and language.
  $language = $element['#language'];
  $entity = NULL;
  if (!empty($element['#entity'])) {
    $entity = $element['#entity'];
  }
  else {
    if (!empty($element[$language]['#entity'])) {
      $entity = $element[$language]['#entity'];
    }
    else {
      $children = element_children($element[$language]);
      $child = reset($children);
      if (!empty($element[$language][$child]['#entity'])) {
        $entity = $element[$language][$child]['#entity'];
      }
    }
  }
  $values = $flexiform_element
    ->formExtractValues($form, $form_state, $entity, $language);
  switch ($condition) {
    case 'value':
      return conditional_fields_evaluate_dependency('edit', $values, $dependency);
    case 'checked':
      return !empty($values[0]['value']);
    case '!checked':
      return empty($values[0]['value']);
    case 'empty':
    case '!empty':
      $is_empty = $flexiform_element
        ->formIsEmpty($form, $form_state, $entity, $language);
      return $condition == '!empty' xor $is_empty;
  }
}