• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/tools/phone.php
  • Класс: BitrixImOpenLinesToolsPhone
  • Вызов: Phone::validate
static function validate($phone)
{
//		static $region;
//		if ($region === null)
//		{
//			$region = strtoupper(Application::getInstance()->getLicense()->getRegion() ?: PhoneNumberParser::getDefaultCountry());
//		}
	// temporary fix for http://jabber.bx/view.php?id=159612
	// todo: review later
	$region = PhoneNumberParser::getDefaultCountry();

	$phoneParsed = PhoneNumberParser::getInstance()->parse($phone, $region);
	$result = $phoneParsed->isValid();

	// Moldova's number (issue #158084)
	if ($result && $phoneParsed->getCountryCode() == '373')
	{
		$phoneMd = preg_replace("/[^0-9]+/", '', $phone);
		return (
			substr($phoneMd, 0, 1) === '0' // local starts with '0 231 xxxxx'
			|| substr($phoneMd, 0, 3) === '373' // international starts with '371 231 xxxxx'
		);
	}

	if (!$result && !preg_match("/^+/", $phone))
	{
		// prefix phone by "+"
		$phoneParsed = PhoneNumberParser::getInstance()->parse('+'. $phone, $region);
		$result = $phoneParsed->isValid();
	}

	// Brazil's number (issue #129267)
	if (!$result && $phoneParsed->getCountryCode() == '55')
	{
		$phoneBr = preg_replace("/[^0-9]+/", '', $phone);
		if (strlen($phoneBr) == 12)
		{
			// insert "9" at position 5
			$phoneBr = substr($phoneBr, 0, 4) . '9' . substr($phoneBr, 4);
			$phoneParsed = PhoneNumberParser::getInstance()->parse('+' . $phoneBr, $region);
			$result = $phoneParsed->isValid();
		}
	}

	return $result;
}