You are here

public static function WebformTokenManager::validateElement in Webform 6.x

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

Validates an element's tokens.

Note: Element is not being based by reference since the #value is being altered.

File

src/WebformTokenManager.php, line 339

Class

WebformTokenManager
Defines a class to manage token replacement.

Namespace

Drupal\webform

Code

public static function validateElement($element, FormStateInterface $form_state, &$complete_form) {
  $value = isset($element['#value']) ? $element['#value'] : $element['#default_value'];
  if (!mb_strlen($value)) {
    return $element;
  }

  // Remove all suffixes which are not valid.
  $pattern = '/\\[((?:webform|current-user)[^]]+)((?::' . implode('|:', static::$suffixes) . ')+)\\]/';
  while (preg_match($pattern, $value)) {
    $value = preg_replace($pattern, '[\\1]', $value);
  }

  // Convert all token field deltas to 0 to prevent unexpected
  // token validation errors.
  $value = preg_replace('/:\\d+:/', ':0:', $value);
  $element['#value'] = $value;
  token_element_validate($element, $form_state);
}