protected function getNumberTypeHelper($nationalNumber, PhoneMetadata $metadata)
{
if (!$this->isNumberMatchingDesc($nationalNumber, $metadata->getGeneralDesc())) {
return PhoneNumberType::UNKNOWN;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getPremiumRate())) {
return PhoneNumberType::PREMIUM_RATE;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getTollFree())) {
return PhoneNumberType::TOLL_FREE;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getSharedCost())) {
return PhoneNumberType::SHARED_COST;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getVoip())) {
return PhoneNumberType::VOIP;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getPersonalNumber())) {
return PhoneNumberType::PERSONAL_NUMBER;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getPager())) {
return PhoneNumberType::PAGER;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getUan())) {
return PhoneNumberType::UAN;
}
if ($this->isNumberMatchingDesc($nationalNumber, $metadata->getVoicemail())) {
return PhoneNumberType::VOICEMAIL;
}
$isFixedLine = $this->isNumberMatchingDesc($nationalNumber, $metadata->getFixedLine());
if ($isFixedLine) {
if ($metadata->isSameMobileAndFixedLinePattern()) {
return PhoneNumberType::FIXED_LINE_OR_MOBILE;
} elseif ($this->isNumberMatchingDesc($nationalNumber, $metadata->getMobile())) {
return PhoneNumberType::FIXED_LINE_OR_MOBILE;
}
return PhoneNumberType::FIXED_LINE;
}
// Otherwise, test to see if the number is mobile. Only do this if certain that the patterns for
// mobile and fixed line aren't the same.
if (!$metadata->isSameMobileAndFixedLinePattern() && $this->isNumberMatchingDesc($nationalNumber, $metadata->getMobile())) {
return PhoneNumberType::MOBILE;
}
return PhoneNumberType::UNKNOWN;
}