123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * @file
- * CCK Field for Polish phone numbers.
- */
- /**
- * Polish phone number regex helper.
- */
- function _pl_regex() {
- return '/^
- ([1-9]\d) # 2-digit area code
- ([1-9]\d{2}) # 3-digit phone prefix (cannot start with 0)
- (\d{4})
- $/x';
- }
- /**
- * Verifies that $number is a valid 9-digit Polish phone number.
- */
- function pl_validate_number($number, $ext = '', &$error) {
- $number = cck_phone_clean_number($number);
- $regex = _pl_regex();
- $result = preg_match($regex, $number, $matches);
- if ($result) {
- return TRUE;
- }
- else {
- $error = '"%phone_input" is not a valid Polish phone number, it should be a 9-digit
- number like "99 999 99 99".';
- return FALSE;
- }
- }
- /**
- * Helper for formatting output.
- * Output as +48 (AA) BBB CCCC
- */
- function _pl_formatter($element) {
- $phone = '';
- $regex = _pl_regex();
- $result = preg_match($regex, $element['number'], $matches);
- if ($result) {
- $phone = '(' . $matches[1] . ') ' . $matches[2] . ' ' . $matches[3];
- }
- return $phone;
- }
- /**
- * Default formatter for international phone number.
- */
- function pl_formatter_default($element) {
- $cc = cck_phone_countrycodes($element['country_codes']);
- $number = _pl_formatter($element);
- return $cc['code'] . ' ' . $number;
- }
- /**
- * Local formatter for local phone number.
- */
- function pl_formatter_local($element) {
- return _pl_formatter($element);
- }
|