You are here

protected function WebformSubmissionConditionsValidator::getConditionTargetsVisibilityRecursive in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/WebformSubmissionConditionsValidator.php \Drupal\webform\WebformSubmissionConditionsValidator::getConditionTargetsVisibilityRecursive()

Recursively collect a conditions targets.

Parameters

array $conditions: An associative array containing conditions.

array $targets: An associative array keyed by target selectors with a boolean state.

1 call to WebformSubmissionConditionsValidator::getConditionTargetsVisibilityRecursive()
WebformSubmissionConditionsValidator::getConditionTargetsVisibility in src/WebformSubmissionConditionsValidator.php
Get the visibility state for all of conditions targets.

File

src/WebformSubmissionConditionsValidator.php, line 1068

Class

WebformSubmissionConditionsValidator
Webform submission conditions (#states) validator.

Namespace

Drupal\webform

Code

protected function getConditionTargetsVisibilityRecursive(array $conditions, array &$targets = []) {
  foreach ($conditions as $index => $value) {
    if (is_int($index) && is_array($value) && WebformArrayHelper::isSequential($value)) {

      // Recurse downward and get nested target element.
      // NOTE: Nested conditions is not supported via the UI.
      $this
        ->getConditionTargetsVisibilityRecursive($value, $targets);
    }
    elseif (is_string($value) && in_array($value, [
      'and',
      'or',
      'xor',
    ])) {

      // Skip AND, OR, or XOR operators.
      continue;
    }
    elseif (is_int($index)) {
      $selector = key($value);
      $targets[$selector] = $selector;
    }
    else {
      $selector = $index;
      $targets[$selector] = $selector;
    }
  }
}