Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/main/lib/Validation/Rule/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/main/lib/Validation/Rule/PhoneOrEmail.php

<?php

declare(strict_types=1);

namespace Bitrix\Main\Validation\Rule;

use Attribute;
use Bitrix\Main\Validation\ValidationResult;
use Bitrix\Main\Validation\Validator\PhoneValidator;
use Bitrix\Main\Validation\Validator\EmailValidator;

#[Attribute(Attribute::TARGET_PROPERTY)]
class PhoneOrEmail implements PropertyValidationAttributeInterface
{
	use ValidationErrorTrait;

	public function __construct(
		private readonly bool $strict = false,
		private readonly bool $domainCheck = false,
		?string $errorMessage = null
	)
	{
		$this->errorMessage = $errorMessage;
	}

	public function validateProperty(mixed $propertyValue): ValidationResult
	{
		$phoneResult = (new PhoneValidator())->validate($propertyValue);
		if ($phoneResult->isSuccess())
		{
			return $this->replaceWithCustomError($phoneResult);
		}

		$emailResult = (new EmailValidator($this->strict, $this->domainCheck))->validate($propertyValue);

		return $this->replaceWithCustomError($emailResult);
	}
}