%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/main/lib/phonenumber/ |
| Current File : /home/bitrix/www/bitrix/modules/main/lib/phonenumber/shortnumberformatter.php |
<?php
namespace Bitrix\Main\PhoneNumber;
/**
* Formatter for invalid short numbers, like 32-12-43, just to make them look pretty.
* @package Bitrix\Main\PhoneNumber
*/
class ShortNumberFormatter
{
protected static $templates = [
3 => 'x-xx',
4 => 'xx-xx',
5 => 'x-xx-xx',
6 => 'xx-xx-xx',
7 => 'xxx-xx-xx'
];
/**
* Pretty prints some invalid short number.
* @param PhoneNumber $phoneNumber Phone number.
* @return string
*/
public static function format(PhoneNumber $phoneNumber)
{
$rawNumber = $phoneNumber->getNationalNumber();
$template = static::$templates[strlen($rawNumber)];
if(!$template)
{
return $rawNumber;
}
$pattern = preg_replace("/[^x]/", "", $template);
$pattern = str_replace("x", "(\\d)", $pattern);
$pattern = "/" . $pattern . "/";
$format = preg_replace_callback(
"/x/",
function ()
{
static $i = 0;
return "$" . ++$i;
},
$template
);
$result = preg_replace($pattern, $format, $rawNumber);
if($phoneNumber->getExtensionSeparator())
{
$result .= $phoneNumber->getExtensionSeparator() . " " . $phoneNumber->getExtension();
}
return $result;
}
/**
* Return true if the phone number could be formatted using this formatter and false otherwise.
* @param PhoneNumber $phoneNumber Phone number.
* @return bool
*/
public static function isApplicable(PhoneNumber $phoneNumber)
{
if($phoneNumber->isValid())
return false;
$rawNumber = $phoneNumber->getNationalNumber();
return preg_match("/^\d{3,7}$/", $rawNumber);
}
}