diff --git a/functions.php b/functions.php index f2d0ca37..e114a877 100644 --- a/functions.php +++ b/functions.php @@ -194,135 +194,161 @@ function truncate($text, $chars) { } function formatPhoneNumber($phoneNumber, $country_code = '', $show_country_code = false) { - // Remove all non-digit characters $digits = preg_replace('/\D/', '', $phoneNumber); $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) { - case '1': // USA/Canada — (123) 456-7890 + case '1': // USA/Canada if (strlen($digits) === 10) { $formatted = '(' . substr($digits, 0, 3) . ') ' . substr($digits, 3, 3) . '-' . substr($digits, 6); } break; - case '44': // UK — 07123 456 789 - if ($digits[0] === '0') $digits = substr($digits, 1); + case '44': // UK + if ($startsWith($digits, '0')) { + $digits = substr($digits, 1); + } if (strlen($digits) === 10) { $formatted = '0' . substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); } break; - case '61': // Australia — 0412 345 678 - if ($digits[0] === '0') $digits = substr($digits, 1); + case '61': // Australia + if ($startsWith($digits, '0')) { + $digits = substr($digits, 1); + } if (strlen($digits) === 9) { $formatted = '0' . substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); } break; - case '91': // India — 91234 56789 + case '91': // India if (strlen($digits) === 10) { $formatted = substr($digits, 0, 5) . ' ' . substr($digits, 5); } break; - case '81': // Japan — 03-1234-5678 - if ($digits[0] === '0') $digits = substr($digits, 1); + case '81': // Japan + if ($startsWith($digits, '0')) { + $digits = substr($digits, 1); + } if (strlen($digits) >= 9 && strlen($digits) <= 10) { $formatted = '0' . substr($digits, 0, 2) . '-' . substr($digits, 2, 4) . '-' . substr($digits, 6); } break; - case '49': // Germany — 030 12345678 - if ($digits[0] === '0') $digits = substr($digits, 1); + case '49': // Germany + if ($startsWith($digits, '0')) { + $digits = substr($digits, 1); + } if (strlen($digits) >= 10) { $formatted = '0' . substr($digits, 0, 3) . ' ' . substr($digits, 3); } break; - case '33': // France — 01 23 45 67 89 - if ($digits[0] === '0') $digits = substr($digits, 1); + case '33': // France + if ($startsWith($digits, '0')) { + $digits = substr($digits, 1); + } if (strlen($digits) === 9) { $formatted = '0' . implode(' ', str_split($digits, 2)); } break; - case '34': // Spain — 612 345 678 + case '34': // Spain if (strlen($digits) === 9) { $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6); } break; - case '39': // Italy — 312 345 6789 - if ($digits[0] === '0') $digits = substr($digits, 1); + case '39': // Italy + if ($startsWith($digits, '0')) { + $digits = substr($digits, 1); + } $formatted = '0' . implode(' ', str_split($digits, 3)); break; - case '55': // Brazil — (11) 91234-5678 + case '55': // Brazil if (strlen($digits) === 11) { $formatted = '(' . substr($digits, 0, 2) . ') ' . substr($digits, 2, 5) . '-' . substr($digits, 7); } break; - case '7': // Russia — 8 (912) 345-67-89 - if ($digits[0] === '8') $digits = substr($digits, 1); + case '7': // Russia + if ($startsWith($digits, '8')) { + $digits = substr($digits, 1); + } if (strlen($digits) === 10) { $formatted = '8 (' . substr($digits, 0, 3) . ') ' . substr($digits, 3, 3) . '-' . substr($digits, 6, 2) . '-' . substr($digits, 8); } break; - case '86': // China — 138 0013 8000 + case '86': // China if (strlen($digits) === 11) { $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 4) . ' ' . substr($digits, 7); } break; - case '82': // South Korea — 010-1234-5678 + case '82': // South Korea if (strlen($digits) === 11) { $formatted = substr($digits, 0, 3) . '-' . substr($digits, 3, 4) . '-' . substr($digits, 7); } break; - case '62': // Indonesia — 0812 3456 7890 - if ($digits[0] !== '0') $digits = '0' . $digits; + case '62': // Indonesia + if (!$startsWith($digits, '0')) { + $digits = '0' . $digits; + } if (strlen($digits) === 12) { $formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 4) . ' ' . substr($digits, 8); } break; - case '63': // Philippines — 0912 345 6789 + case '63': // Philippines if (strlen($digits) === 11) { $formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); } break; - case '234': // Nigeria — 0801 234 5678 - if ($digits[0] !== '0') $digits = '0' . $digits; + case '234': // Nigeria + if (!$startsWith($digits, '0')) { + $digits = '0' . $digits; + } if (strlen($digits) === 11) { $formatted = substr($digits, 0, 4) . ' ' . substr($digits, 4, 3) . ' ' . substr($digits, 7); } break; - case '27': // South Africa — 082 123 4567 + case '27': // South Africa if (strlen($digits) >= 9 && strlen($digits) <= 10) { $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6); } break; - case '971': // UAE — 050 123 4567 + case '971': // UAE if (strlen($digits) === 9) { $formatted = substr($digits, 0, 3) . ' ' . substr($digits, 3, 3) . ' ' . substr($digits, 6); } break; default: - // If no match, do nothing here and use fallback below + // fallback — do nothing, use raw digits later break; } - // no formatting? Use raw digits 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; diff --git a/post/user/contact.php b/post/user/contact.php index 1d4552c3..1d70ef05 100644 --- a/post/user/contact.php +++ b/post/user/contact.php @@ -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 if (isset($_FILES['file']['tmp_name'])) {