You are here

public function TelephoneConstraintValidator::validate in Telephone Validation 8.2

File

src/Plugin/Validation/Constraint/TelephoneConstraintValidator.php, line 44

Class

TelephoneConstraintValidator
Validates the TelephoneConstraint constraint.

Namespace

Drupal\telephone_validation\Plugin\Validation\Constraint

Code

public function validate($value, Constraint $constraint) {
  try {
    $number = $value
      ->getValue();
  } catch (\InvalidArgumentException $e) {
    return;
  }

  /** @var \Drupal\field\Entity\FieldConfig $field */
  $field = $value
    ->getFieldDefinition();

  // Check field allows storing a third party settings.
  if (!$field instanceof ThirdPartySettingsInterface) {
    return;
  }
  $settings = $field
    ->getThirdPartySettings('telephone_validation');

  // If no settings found we must skip validation.
  if (empty($settings)) {
    return;
  }

  // Validate number against validation settings.
  if (!$this->validator
    ->isValid($number['value'], $field
    ->getThirdPartySetting('telephone_validation', 'format'), $field
    ->getThirdPartySetting('telephone_validation', 'country'))) {
    $this->context
      ->addViolation($constraint->message, [
      '@number' => $number['value'],
    ]);
  }
}