You are here

protected function WebformEntityElementsValidator::validateDuplicateNames in Webform 8.5

Same name and namespace in other branches
  1. 6.x src/WebformEntityElementsValidator.php \Drupal\webform\WebformEntityElementsValidator::validateDuplicateNames()

Validate elements does not contain duplicate names.

Return value

array|null If not valid, an array of error messages.

1 call to WebformEntityElementsValidator::validateDuplicateNames()
WebformEntityElementsValidator::validate in src/WebformEntityElementsValidator.php
Validate webform elements.

File

src/WebformEntityElementsValidator.php, line 321

Class

WebformEntityElementsValidator
Webform elements validator.

Namespace

Drupal\webform

Code

protected function validateDuplicateNames() {
  $duplicate_names = [];
  $this
    ->getDuplicateNamesRecursive($this->elements, $duplicate_names);
  if ($duplicate_names = array_filter($duplicate_names)) {
    $messages = [];
    foreach ($duplicate_names as $duplicate_name => $duplicate_count) {
      $line_numbers = $this
        ->getLineNumbers('/^\\s*(["\']?)' . preg_quote($duplicate_name, '/') . '\\1\\s*:/');
      $t_args = [
        '%name' => $duplicate_name,
        '@line_numbers' => WebformArrayHelper::toString($line_numbers),
      ];
      $messages[] = $this
        ->formatPlural(count($line_numbers), 'Elements contain a duplicate element key %name found on line @line_numbers.', 'Elements contain a duplicate element key %name found on lines @line_numbers.', $t_args);
    }
    return $messages;
  }
  return NULL;
}