| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | 
							- <?php
 
- /**
 
-  * @file
 
-  * CCK Field for Australia phone numbers.
 
-  */
 
- /**
 
-  * Patterns generated from Telecommunications Numbering Plan 1997
 
-  * http://www.comlaw.gov.au/comlaw/management.nsf/lookupindexpagesbyid/IP200506356?OpenDocument
 
-  */
 
- function _cck_phone_au_number_patterns() {
 
-   $valid_patterns = array(
 
-     // Geographic numbers (10 digits) - Central East Region (NSW, ACT, Northern VIC).
 
-     '/^02[4,6-9][0-9]{7}$/',
 
-     '/^023[3,8][0-9]{6}$/',
 
-     '/^025[0-3,5-9][0-9]{6}$/',
 
-     // Geographic numbers (10 digits) - South East Region (TAS, Southern NSW, VIC).
 
-     '/^03[5,7-9][0-9]{7}$/',
 
-     '/^034[0-5,7-9][0-9]{6}$/',
 
-     '/^036[1-5,7][0-9]{6}$/',
 
-     // Geographic numbers (10 digits) - North East Region (QLD).
 
-     '/^07[2-4][0-9]{7}$/',
 
-     '/^075[2-7][0-9]{6}$/',
 
-     '/^0776[0-9]{6}$/',
 
-     // Geographic numbers (10 digits) - Central and West Region (WA, SA, NT and Western NSW).
 
-     '/^08[7-9][0-9]{7}$/',
 
-     '/^085[1-4][0-9]{6}$/',
 
-     '/^086[0-8][0-9]{6}$/',
 
-     // Mobile numbers (10 digits).
 
-     '/^04[0-9]{8}$/',
 
-     // Local rate special numbers (10 digits).
 
-     '/^130[0-9]{7}$/',
 
-     // Local rate special numbers (6 digits).
 
-     '/^13[1-3,5-9][0-9]{3}$/',
 
-     '/^134[0-4,6-9][0-9]{2}$/',
 
-     // Free phone numbers (10 digits).
 
-     '/^180[0-1][0-9]{6}$/',
 
-     // Satelite telephone numbers (10 digits).
 
-     '/^014[1-3,5,7][0-9]{6}$/',
 
-     // Satelite telephone numbers (9 digits).
 
-     '/^014[0,4,6,8-9][0-9]{5}$/',
 
-     '/^015[0-9]{6}$/',
 
-     '/^017[1,2,8,9][0-9]{5}$/',
 
-     '/^018[0-9]{6}$/',
 
-   );
 
-   $invalid_patterns = array(
 
-     // Invalid geographic phone numbers.
 
-     '/^0[2,3,7]5550[0-9]{4}$/',
 
-   );
 
-   $format_search_patterns = array(
 
-     // Geographic numbers (10 digits).
 
-     '/^(0)([2,3,7,8])([0-9]{4})([0-9]{4})$/',
 
-     // Mobile numbers (10 digits).
 
-     '/^(0)(4[0-9]{2})([0-9]{3})([0-9]{3})$/',
 
-     // 1300 numbers, 1800 numbers (10 digits).
 
-     '/^(1[3,8][0-9]{2})([0-9]{3})([0-9]{3})$/',
 
-     // 13 numbers (6 digits).
 
-     '/^(13)([0-9]{2})([0-9]{2})$/',
 
-     // Satelite telephone numbers (10 digits).
 
-     '/^(0)(14)([0-9])([0-9]{3})([0-9]{3})$/',
 
-     // Satelite telephone numbers (9 digits).
 
-     '/^(0)(1[4,5,7,8])([0-9]{3})([0-9]{3})$/',
 
-   );
 
-   $format_replace_patterns = array(
 
-     // Geographic numbers (10 digits).
 
-     '($1$2) $3 $4',
 
-     // Mobile numbers (10 digits).
 
-     '$1$2 $3 $4',
 
-     // 1300 numbers, 1800 numbers (10 digits).
 
-     '$1 $2 $3',
 
-     // 13 numbers (6 digits).
 
-     '$1 $2 $3',
 
-     // Satelite telephone numbers (10 digits).
 
-     '$1$2 $3 $4 $5',
 
-     // Satelite telephone numbers (9 digits).
 
-     '$1$2 $3 $4',
 
-   );
 
-   $format_replace_patterns_international = array(
 
-     // Geographic numbers (10 digits).
 
-     '$2 $3 $4',
 
-     // Mobile numbers (10 digits).
 
-     '$2 $3 $4',
 
-     // 1300 numbers, 1800 numbers (10 digits).
 
-     '$1 $2 $3',
 
-     // 13 numbers (6 digits).
 
-     '$1 $2 $3',
 
-     // Satelite telephone numbers (10 digits).
 
-     '$2 $3 $4 $5',
 
-     // Satelite telephone numbers (9 digits).
 
-     '$2 $3 $4',
 
-   );
 
-   return array($valid_patterns, $invalid_patterns, $format_search_patterns, $format_replace_patterns, $format_replace_patterns_international);
 
- }
 
- /**
 
-  * Verifies that $number is a valid Australian phone number.
 
-  */
 
- function au_validate_number($number, $ext = '', &$error) {
 
-   // Don't need to check for extension because it has been checked by generic validation as all digits, unless has special format/requirements
 
-   // We don't want to worry about separators
 
-   $number = cck_phone_clean_number($number);
 
-   if (empty($number)) {
 
-     return TRUE;
 
-   }
 
-   list($valid_patterns, $invalid_patterns, $format_search_patterns, $format_replace_patterns, $format_replace_patterns_international) = _cck_phone_au_number_patterns();
 
-   $invalid_number = preg_replace($invalid_patterns, '', $number);
 
-   $correct_number = preg_replace($valid_patterns, '', $number);
 
-   if (empty($invalid_number)) {
 
-     $error = 'The phone number you have entered is classified as unusable by the Australian telecommunications authority.';
 
-     return FALSE;
 
-   }
 
-   elseif (!empty($correct_number)) {
 
-     $error = 'You have not entered a valid australian phone number. Please enter a 10 digit phone number including the area code, but not including the 61 international prefix. Valid 1800, 1300, and 13 numbers are accepted, as are satilite and AMPS numbers.';
 
-     return FALSE;
 
-   }
 
-   return TRUE;
 
- }
 
- /**
 
-  * Default formatter for Australian phone number.
 
-  */
 
- function au_formatter_default($element) {
 
-   // Display a global phone number with country code.
 
-   $cc = cck_phone_countrycodes($element['country_codes']);
 
-   list($valid_patterns, $invalid_patterns, $format_search_patterns, $format_replace_patterns, $format_replace_patterns_international) = _cck_phone_au_number_patterns();
 
-   return $cc['code'] .' '. preg_replace($format_search_patterns, $format_replace_patterns_international, $element['number']);
 
- }
 
- /**
 
-  * Local formatter for local Australian phone number.
 
-  */
 
- function au_formatter_local($element) {
 
-   list($valid_patterns, $invalid_patterns, $format_search_patterns, $format_replace_patterns, $format_replace_patterns_international) = _cck_phone_au_number_patterns();
 
-   return preg_replace($format_search_patterns, $format_replace_patterns, $element['number']);
 
- }
 
 
  |