mirror of
https://github.com/nerzhul/ocsms.git
synced 2025-06-27 17:56:21 +00:00
* Add locale and libphonenumber libraries. * Update country code information Updated existing country codes, fixed incorrect NANP codes for member countries (as well as several UK based ones). Also added in Country Name to ISO country code mapping array for use with libphonenumber. * Convert phone number formatting to use libphonenumber libphonenumber parses phone number more consistantly than the old regex's that mismatched number on a regular basis.
239 lines
5.4 KiB
PHP
239 lines
5.4 KiB
PHP
<?php
|
|
|
|
namespace libphonenumber;
|
|
|
|
/**
|
|
* Phone Number Description
|
|
*/
|
|
class PhoneNumberDesc
|
|
{
|
|
protected $hasNationalNumberPattern = false;
|
|
protected $nationalNumberPattern = "";
|
|
protected $hasExampleNumber = false;
|
|
protected $exampleNumber = "";
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected $possibleLength;
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected $possibleLengthLocalOnly;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->clear();
|
|
}
|
|
|
|
/**
|
|
* @return PhoneNumberDesc
|
|
*/
|
|
public function clear()
|
|
{
|
|
$this->clearNationalNumberPattern();
|
|
$this->clearPossibleLength();
|
|
$this->clearPossibleLengthLocalOnly();
|
|
$this->clearExampleNumber();
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getPossibleLength()
|
|
{
|
|
return $this->possibleLength;
|
|
}
|
|
|
|
/**
|
|
* @param array $possibleLength
|
|
*/
|
|
public function setPossibleLength($possibleLength)
|
|
{
|
|
$this->possibleLength = $possibleLength;
|
|
}
|
|
|
|
public function addPossibleLength($possibleLength)
|
|
{
|
|
if (!in_array($possibleLength, $this->possibleLength)) {
|
|
$this->possibleLength[] = $possibleLength;
|
|
}
|
|
}
|
|
|
|
public function clearPossibleLength()
|
|
{
|
|
$this->possibleLength = array();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getPossibleLengthLocalOnly()
|
|
{
|
|
return $this->possibleLengthLocalOnly;
|
|
}
|
|
|
|
/**
|
|
* @param array $possibleLengthLocalOnly
|
|
*/
|
|
public function setPossibleLengthLocalOnly($possibleLengthLocalOnly)
|
|
{
|
|
$this->possibleLengthLocalOnly = $possibleLengthLocalOnly;
|
|
}
|
|
|
|
public function addPossibleLengthLocalOnly($possibleLengthLocalOnly)
|
|
{
|
|
if (!in_array($possibleLengthLocalOnly, $this->possibleLengthLocalOnly)) {
|
|
$this->possibleLengthLocalOnly[] = $possibleLengthLocalOnly;
|
|
}
|
|
}
|
|
|
|
public function clearPossibleLengthLocalOnly()
|
|
{
|
|
$this->possibleLengthLocalOnly = array();
|
|
}
|
|
|
|
/**
|
|
* @return boolean
|
|
*/
|
|
public function hasNationalNumberPattern()
|
|
{
|
|
return $this->hasNationalNumberPattern;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getNationalNumberPattern()
|
|
{
|
|
return $this->nationalNumberPattern;
|
|
}
|
|
|
|
/**
|
|
* @param string $value
|
|
* @return PhoneNumberDesc
|
|
*/
|
|
public function setNationalNumberPattern($value)
|
|
{
|
|
$this->hasNationalNumberPattern = true;
|
|
$this->nationalNumberPattern = $value;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return PhoneNumberDesc
|
|
*/
|
|
public function clearNationalNumberPattern()
|
|
{
|
|
$this->hasNationalNumberPattern = false;
|
|
$this->nationalNumberPattern = '';
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function hasExampleNumber()
|
|
{
|
|
return $this->hasExampleNumber;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getExampleNumber()
|
|
{
|
|
return $this->exampleNumber;
|
|
}
|
|
|
|
/**
|
|
* @param string $value
|
|
* @return PhoneNumberDesc
|
|
*/
|
|
public function setExampleNumber($value)
|
|
{
|
|
$this->hasExampleNumber = true;
|
|
$this->exampleNumber = $value;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return PhoneNumberDesc
|
|
*/
|
|
public function clearExampleNumber()
|
|
{
|
|
$this->hasExampleNumber = false;
|
|
$this->exampleNumber = '';
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param PhoneNumberDesc $other
|
|
* @return PhoneNumberDesc
|
|
*/
|
|
public function mergeFrom(PhoneNumberDesc $other)
|
|
{
|
|
if ($other->hasNationalNumberPattern()) {
|
|
$this->setNationalNumberPattern($other->getNationalNumberPattern());
|
|
}
|
|
if ($other->hasExampleNumber()) {
|
|
$this->setExampleNumber($other->getExampleNumber());
|
|
}
|
|
$this->setPossibleLength($other->getPossibleLength());
|
|
$this->setPossibleLengthLocalOnly($other->getPossibleLengthLocalOnly());
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param PhoneNumberDesc $other
|
|
* @return boolean
|
|
*/
|
|
public function exactlySameAs(PhoneNumberDesc $other)
|
|
{
|
|
return $this->nationalNumberPattern === $other->nationalNumberPattern &&
|
|
$this->exampleNumber === $other->exampleNumber;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function toArray()
|
|
{
|
|
$data = array();
|
|
if ($this->hasNationalNumberPattern()) {
|
|
$data['NationalNumberPattern'] = $this->getNationalNumberPattern();
|
|
}
|
|
if ($this->hasExampleNumber()) {
|
|
$data['ExampleNumber'] = $this->getExampleNumber();
|
|
}
|
|
|
|
$data['PossibleLength'] = $this->getPossibleLength();
|
|
$data['PossibleLengthLocalOnly'] = $this->getPossibleLengthLocalOnly();
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* @param array $input
|
|
* @return PhoneNumberDesc
|
|
*/
|
|
public function fromArray(array $input)
|
|
{
|
|
if (isset($input['NationalNumberPattern']) && $input['NationalNumberPattern'] != '') {
|
|
$this->setNationalNumberPattern($input['NationalNumberPattern']);
|
|
}
|
|
if (isset($input['ExampleNumber']) && $input['NationalNumberPattern'] != '') {
|
|
$this->setExampleNumber($input['ExampleNumber']);
|
|
}
|
|
$this->setPossibleLength($input['PossibleLength']);
|
|
$this->setPossibleLengthLocalOnly($input['PossibleLengthLocalOnly']);
|
|
|
|
return $this;
|
|
}
|
|
}
|