- Модуль: 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;
}