You are here

public function FlexiformFCHandler::elementIgnored in Flexiform 7

Calculate whether an element has been ignored.

Return value

TRUE|FALSE True if the element is ignored.

2 calls to FlexiformFCHandler::elementIgnored()
FlexiformFCHandler::calculateElementCompleteness in flexiform_webform/flexiform_webform.fc.inc
Calculate if a given element is complete.
FlexiformFCHandler::getElementCompleteness in flexiform_webform/flexiform_webform.fc.inc
Get Element completeness.

File

flexiform_webform/flexiform_webform.fc.inc, line 30
Contains the Field Comlete handler for the FlexiformWebform Module.

Class

FlexiformFCHandler
@file Contains the Field Comlete handler for the FlexiformWebform Module.

Code

public function elementIgnored($flexiform, $element_namespace) {
  if (isset($this->ignored[$element_namespace])) {
    return $this->ignored[$element_namespace];
  }
  $element = FlexiformElement::getElement($flexiform, $element_namespace);

  // Currently only support field api elements.
  if (!$element instanceof FlexiformElementField) {
    $this->ignored[$element_namespace] = TRUE;
    return TRUE;
  }
  $field = $element
    ->getField();
  $instance = $element
    ->getInstance();
  $settings = !empty($instance['settings']['fc']) ? $instance['settings']['fc'] : array();

  // Work out if this field needs to be included.
  $this->ignored[$element_namespace] = TRUE;
  if (!empty($settings['fc_include']) && $settings['fc_include'] == 'always') {
    $this->ignored[$element_namespace] = FALSE;
  }
  else {
    if (!empty($settings['fc_include']) && $settings['fc_include'] == 'entity_exists' && !empty($this->entities[$settings['fc_include__entity_exists']])) {
      $this->ignored[$element_namespace] = FALSE;
    }
    else {
      if (!empty($settings['fc_include']) && $settings['fc_include'] == 'element_complete') {
        $other_element = $settings['fc_include__element_complete'];
        $complete = $this
          ->getElementCompleteness($flexiform, $other_element);
        if ($complete === NULL) {
          $option = $settings['fc_include__element_complete_if_ignored'];
          if ($option == 'include') {
            $this->ignored[$element_namespace] = FALSE;
          }
          else {
            $this->ignored[$element_namespace] = TRUE;
          }
        }
        else {
          $this->ignored[$element_namespace] = !$complete;
        }
      }
    }
  }
  return $this->ignored[$element_namespace];
}