Fix php errors thrown when formatPhone is blank

This commit is contained in:
johnnyq
2025-03-31 16:35:36 -04:00
parent 2032b48ad3
commit 14d8dc6fa6
2 changed files with 58 additions and 32 deletions

View File

@@ -194,135 +194,161 @@ function truncate($text, $chars) {
} }
function formatPhoneNumber($phoneNumber, $country_code = '', $show_country_code = false) { function formatPhoneNumber($phoneNumber, $country_code = '', $show_country_code = false) {
// Remove all non-digit characters // Remove all non-digit characters
$digits = preg_replace('/\D/', '', $phoneNumber); $digits = preg_replace('/\D/', '', $phoneNumber);
$formatted = ''; $formatted = '';
// If no digits at all, fallback early
if (strlen($digits) === 0) {
return $phoneNumber;
}
// Helper function to safely check the first digit
$startsWith = function($str, $char) {
return isset($str[0]) && $str[0] === $char;
};
switch ($country_code) { switch ($country_code) {
case '1': // USA/Canada — (123) 456-7890 case '1': // USA/Canada
if (strlen($digits) === 10) { if (strlen($digits) === 10) {
$formatted = '(' . substr($digits, 0, 3) . ') ' . substr($digits, 3, 3) . '-' . substr($digits, 6); $formatted = '(' . substr($digits, 0, 3) . ') ' . substr($digits, 3, 3) . '-' . substr($digits, 6);
} }
break; break;
case '44': // UK — 07123 456 789 case '44': // UK
if ($digits[0] === '0') $digits = substr($digits, 1); if ($startsWith($digits, '0')) {
$digits = substr($digits, 1);
}
if (strlen($digits) === 10) { if (strlen($digits) === 10) {
$formatted = '0' . substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); $formatted = '0' . substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7);
} }
break; break;
case '61': // Australia — 0412 345 678 case '61': // Australia
if ($digits[0] === '0') $digits = substr($digits, 1); if ($startsWith($digits, '0')) {
$digits = substr($digits, 1);
}
if (strlen($digits) === 9) { if (strlen($digits) === 9) {
$formatted = '0' . substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); $formatted = '0' . substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7);
} }
break; break;
case '91': // India — 91234 56789 case '91': // India
if (strlen($digits) === 10) { if (strlen($digits) === 10) {
$formatted = substr($digits, 0, 5) . ' ' . substr($digits, 5); $formatted = substr($digits, 0, 5) . ' ' . substr($digits, 5);
} }
break; break;
case '81': // Japan — 03-1234-5678 case '81': // Japan
if ($digits[0] === '0') $digits = substr($digits, 1); if ($startsWith($digits, '0')) {
$digits = substr($digits, 1);
}
if (strlen($digits) >= 9 && strlen($digits) <= 10) { if (strlen($digits) >= 9 && strlen($digits) <= 10) {
$formatted = '0' . substr($digits, 0, 2) . '-' . substr($digits, 2, 4) . '-' . substr($digits, 6); $formatted = '0' . substr($digits, 0, 2) . '-' . substr($digits, 2, 4) . '-' . substr($digits, 6);
} }
break; break;
case '49': // Germany — 030 12345678 case '49': // Germany
if ($digits[0] === '0') $digits = substr($digits, 1); if ($startsWith($digits, '0')) {
$digits = substr($digits, 1);
}
if (strlen($digits) >= 10) { if (strlen($digits) >= 10) {
$formatted = '0' . substr($digits, 0, 3) . ' ' . substr($digits, 3); $formatted = '0' . substr($digits, 0, 3) . ' ' . substr($digits, 3);
} }
break; break;
case '33': // France — 01 23 45 67 89 case '33': // France
if ($digits[0] === '0') $digits = substr($digits, 1); if ($startsWith($digits, '0')) {
$digits = substr($digits, 1);
}
if (strlen($digits) === 9) { if (strlen($digits) === 9) {
$formatted = '0' . implode(' ', str_split($digits, 2)); $formatted = '0' . implode(' ', str_split($digits, 2));
} }
break; break;
case '34': // Spain — 612 345 678 case '34': // Spain
if (strlen($digits) === 9) { if (strlen($digits) === 9) {
$formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6); $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6);
} }
break; break;
case '39': // Italy — 312 345 6789 case '39': // Italy
if ($digits[0] === '0') $digits = substr($digits, 1); if ($startsWith($digits, '0')) {
$digits = substr($digits, 1);
}
$formatted = '0' . implode(' ', str_split($digits, 3)); $formatted = '0' . implode(' ', str_split($digits, 3));
break; break;
case '55': // Brazil — (11) 91234-5678 case '55': // Brazil
if (strlen($digits) === 11) { if (strlen($digits) === 11) {
$formatted = '(' . substr($digits, 0, 2) . ') ' . substr($digits, 2, 5) . '-' . substr($digits, 7); $formatted = '(' . substr($digits, 0, 2) . ') ' . substr($digits, 2, 5) . '-' . substr($digits, 7);
} }
break; break;
case '7': // Russia — 8 (912) 345-67-89 case '7': // Russia
if ($digits[0] === '8') $digits = substr($digits, 1); if ($startsWith($digits, '8')) {
$digits = substr($digits, 1);
}
if (strlen($digits) === 10) { if (strlen($digits) === 10) {
$formatted = '8 (' . substr($digits, 0, 3) . ') ' . substr($digits, 3, 3) . '-' . substr($digits, 6, 2) . '-' . substr($digits, 8); $formatted = '8 (' . substr($digits, 0, 3) . ') ' . substr($digits, 3, 3) . '-' . substr($digits, 6, 2) . '-' . substr($digits, 8);
} }
break; break;
case '86': // China — 138 0013 8000 case '86': // China
if (strlen($digits) === 11) { if (strlen($digits) === 11) {
$formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 4) . ' ' . substr($digits, 7); $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 4) . ' ' . substr($digits, 7);
} }
break; break;
case '82': // South Korea — 010-1234-5678 case '82': // South Korea
if (strlen($digits) === 11) { if (strlen($digits) === 11) {
$formatted = substr($digits, 0, 3) . '-' . substr($digits, 3, 4) . '-' . substr($digits, 7); $formatted = substr($digits, 0, 3) . '-' . substr($digits, 3, 4) . '-' . substr($digits, 7);
} }
break; break;
case '62': // Indonesia — 0812 3456 7890 case '62': // Indonesia
if ($digits[0] !== '0') $digits = '0' . $digits; if (!$startsWith($digits, '0')) {
$digits = '0' . $digits;
}
if (strlen($digits) === 12) { if (strlen($digits) === 12) {
$formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 4) . ' ' . substr($digits, 8); $formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 4) . ' ' . substr($digits, 8);
} }
break; break;
case '63': // Philippines — 0912 345 6789 case '63': // Philippines
if (strlen($digits) === 11) { if (strlen($digits) === 11) {
$formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); $formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7);
} }
break; break;
case '234': // Nigeria — 0801 234 5678 case '234': // Nigeria
if ($digits[0] !== '0') $digits = '0' . $digits; if (!$startsWith($digits, '0')) {
$digits = '0' . $digits;
}
if (strlen($digits) === 11) { if (strlen($digits) === 11) {
$formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); $formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7);
} }
break; break;
case '27': // South Africa — 082 123 4567 case '27': // South Africa
if (strlen($digits) >= 9 && strlen($digits) <= 10) { if (strlen($digits) >= 9 && strlen($digits) <= 10) {
$formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6); $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6);
} }
break; break;
case '971': // UAE — 050 123 4567 case '971': // UAE
if (strlen($digits) === 9) { if (strlen($digits) === 9) {
$formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6); $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6);
} }
break; break;
default: default:
// If no match, do nothing here and use fallback below // fallback — do nothing, use raw digits later
break; break;
} }
// no formatting? Use raw digits
if (!$formatted) { if (!$formatted) {
$formatted = $digits ?: $phoneNumber; // Use original input if digits are empty $formatted = $digits ?: $phoneNumber;
} }
return $show_country_code && $country_code ? "+$country_code $formatted" : $formatted; return $show_country_code && $country_code ? "+$country_code $formatted" : $formatted;

View File

@@ -122,7 +122,7 @@ if (isset($_POST['edit_contact'])) {
} }
mysqli_query($mysqli,"UPDATE contacts SET contact_name = '$name', contact_title = '$title', contact_phone_country_code = '$phone_country_code', contact_phone = '$phone', contact_extension = '$extension', contact_mobile_country_code = '$phone_country_code', contact_mobile = '$mobile', contact_email = '$email', contact_pin = '$pin', contact_notes = '$notes', contact_important = $contact_important, contact_billing = $contact_billing, contact_technical = $contact_technical, contact_department = '$department', contact_location_id = $location_id, contact_user_id = $contact_user_id WHERE contact_id = $contact_id"); mysqli_query($mysqli,"UPDATE contacts SET contact_name = '$name', contact_title = '$title', contact_phone_country_code = '$phone_country_code', contact_phone = '$phone', contact_extension = '$extension', contact_mobile_country_code = '$mobile_country_code', contact_mobile = '$mobile', contact_email = '$email', contact_pin = '$pin', contact_notes = '$notes', contact_important = $contact_important, contact_billing = $contact_billing, contact_technical = $contact_technical, contact_department = '$department', contact_location_id = $location_id, contact_user_id = $contact_user_id WHERE contact_id = $contact_id");
// Upload Photo // Upload Photo
if (isset($_FILES['file']['tmp_name'])) { if (isset($_FILES['file']['tmp_name'])) {