diff --git a/cck_phone.module b/cck_phone.module index 76a8bc6..2c145e1 100644 --- a/cck_phone.module +++ b/cck_phone.module @@ -37,10 +37,10 @@ function cck_phone_theme() { 'render element' => 'element', ), 'cck_phone_formatter_global_phone_number' => array( - 'variables' => array('element' => NULL), + 'variables' => array('number' => NULL, 'country_codes' => NULL, 'extension' => NULL), ), 'cck_phone_formatter_local_phone_number' => array( - 'variables' => array('element' => NULL), + 'variables' => array('number' => NULL, 'country_codes' => NULL, 'extension' => NULL), ), ); } @@ -235,24 +235,25 @@ function theme_phone_number_extension($element = '') { /** * Theme function for 'default' or global phone number field formatter. */ -function theme_cck_phone_formatter_global_phone_number($element) { +function theme_cck_phone_formatter_global_phone_number($variables) { $phone = ''; // Display a global phone number with country code. - if (!empty($element['number']) && !empty($element['country_codes'])) { + if (!empty($variables['number']) && !empty($variables['country_codes'])) { // Call country default formatter if exist - $function = $element['country_codes'] . '_formatter_default'; + module_load_include('inc', 'cck_phone', 'includes/phone.' . $variables['country_codes']); + $function = $variables['country_codes'] . '_formatter_default'; if (function_exists($function)) { - $phone = $function($element); + $phone = $function($variables); } else { - $cc = cck_phone_countrycodes($element['country_codes']); - $phone = $cc['code'] . '-' . $element['number']; + $cc = cck_phone_countrycodes($variables['country_codes']); + $phone = $cc['code'] . '-' . $variables['number']; } // Extension - if (!empty($element['extension'])) { - $phone = $phone . theme('phone_number_extension', $element['extension']); + if (!empty($variables['extension'])) { + $phone = $phone . theme('phone_number_extension', $variables['extension']); } } @@ -262,23 +263,24 @@ function theme_cck_phone_formatter_global_phone_number($element) { /** * Theme function for 'local' phone number field formatter. */ -function theme_cck_phone_formatter_local_phone_number($element) { +function theme_cck_phone_formatter_local_phone_number($variables) { $phone = ''; // Display a local phone number without country code. - if (!empty($element['number'])) { + if (!empty($variables['number'])) { // Call country local formatter if exist - $function = $element['country_codes'] . '_formatter_local'; + module_load_include('inc', 'cck_phone', 'includes/phone.' . $variables['country_codes']); + $function = $variables['country_codes'] . '_formatter_local'; if (function_exists($function)) { - $phone = $function($element); + $phone = $function($variables); } else { - $phone = $element['number']; + $phone = $variables['number']; } // Extension - if (!empty($element['extension'])) { - $phone = $phone . theme('phone_number_extension', $element['extension']); + if (!empty($variables['extension'])) { + $phone = $phone . theme('phone_number_extension', $variables['extension']); } } diff --git a/includes/API.php b/includes/API.php index 1484549..bc4db1b 100644 --- a/includes/API.php +++ b/includes/API.php @@ -109,57 +109,34 @@ function CC_sanitize_number(&$number) { // your cleanup like removing trunk prefix } - /** * Default formatter for international phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC (check_plain'ed) - * - "%phone_input": the original number input by user (check_plain'ed) - * - "%min_length": allowed minimum length of the phone number - * - "%max_length": allowed maximum length of the phone number - * - "%ext_input": the original extension input by user (check_plain'ed) - * - "%ext_max_length": allowed maximum length of the phone extension - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function CC_formatter_default($element) { - $item = $element['#item']; - // Display a global phone number with country code. - $cc = cck_phone_countrycodes($item['country_codes']); + $cc = cck_phone_countrycodes($element['country_codes']); // Format the phone number however you like, this is the default - $phone = $cc['code'] . '-' . $item['number']; + $phone = $cc['code'] . '-' . $element['number']; return $phone; } - /** * Local formatter for local phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function CC_formatter_local($element) { // Display a local phone number without country code. // Format the phone number however you like, this is the default - $phone = $element['#item']['number']; + $phone = $element['number']; return $phone; } diff --git a/includes/phone.au.inc b/includes/phone.au.inc index 061dc35..dd33324 100644 --- a/includes/phone.au.inc +++ b/includes/phone.au.inc @@ -153,9 +153,12 @@ function au_validate_number($number, $ext = '', &$error) { /** * Default formatter for Australian phone number. + * + * @param $element + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function au_formatter_default($element) { - $item = $element['#item']; $field = content_fields($element['#field_name'], $element['#type_name']); // Display a global phone number with country code. @@ -163,16 +166,18 @@ function au_formatter_default($element) { 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, $item['number']); + return $cc['code'] .' '. preg_replace($format_search_patterns, $format_replace_patterns_international, $element['number']); } /** * Local formatter for local Australian phone number. + * + * @param $element + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function au_formatter_local($element) { - $item = $element['#item']; - 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, $item['number']); + return preg_replace($format_search_patterns, $format_replace_patterns, $element['number']); } diff --git a/includes/phone.ca.inc b/includes/phone.ca.inc index e4a67bb..0ff65e6 100644 --- a/includes/phone.ca.inc +++ b/includes/phone.ca.inc @@ -5,6 +5,8 @@ * CCK Field for Canada phone numbers. */ +require_once dirname(__FILE__) . '/phone.us.inc'; + /** * Verifies that $number is a valid ten-digit North American phone number. * @@ -39,16 +41,8 @@ function ca_sanitize_number(&$number) { * Default formatter for international phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function ca_formatter_default($element) { return us_formatter_default($element); @@ -58,17 +52,9 @@ function ca_formatter_default($element) { * Local formatter for local phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function ca_formatter_local($element) { return us_formatter_local($element); -} \ No newline at end of file +} diff --git a/includes/phone.gb.inc b/includes/phone.gb.inc index 5024712..156b0ad 100644 --- a/includes/phone.gb.inc +++ b/includes/phone.gb.inc @@ -64,16 +64,8 @@ function gb_sanitize_number(&$number) { * Default formatter for international phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function gb_formatter_default($element) { $item = $element['#item']; @@ -96,16 +88,8 @@ function gb_formatter_default($element) { * Local formatter for local phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function gb_formatter_local($element) { // Display a local phone number without country code. diff --git a/includes/phone.my.inc b/includes/phone.my.inc index 461d4f1..b8b4d40 100644 --- a/includes/phone.my.inc +++ b/includes/phone.my.inc @@ -99,16 +99,8 @@ function my_sanitize_number(&$number) { * Default formatter for international phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function my_formatter_default($element) { // Display a global phone number with country code. @@ -140,16 +132,8 @@ function my_formatter_default($element) { * Local formatter for local phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function my_formatter_local($element) { // Display a local phone number without country code. diff --git a/includes/phone.pl.inc b/includes/phone.pl.inc index 5935760..9be3960 100644 --- a/includes/phone.pl.inc +++ b/includes/phone.pl.inc @@ -54,6 +54,10 @@ function _pl_formatter($element) { /** * Default formatter for international phone number. + * + * @param $element + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function pl_formatter_default($element) { $cc = cck_phone_countrycodes($element['country_codes']); @@ -63,6 +67,10 @@ function pl_formatter_default($element) { /** * Local formatter for local phone number. + * + * @param $element + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function pl_formatter_local($element) { return _pl_formatter($element); diff --git a/includes/phone.us.inc b/includes/phone.us.inc index be4419a..0b8df3b 100644 --- a/includes/phone.us.inc +++ b/includes/phone.us.inc @@ -68,23 +68,14 @@ function us_sanitize_number(&$number) { * Default formatter for international phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function us_formatter_default($element) { - $item = $element['#item']; $phone = ''; // Display a global phone number with country code. - $cc = cck_phone_countrycodes($item['country_codes']); + $cc = cck_phone_countrycodes($element['country_codes']); // Format the phone number however you like, this is the default // define regular expression @@ -94,33 +85,24 @@ function us_formatter_default($element) { (\d{4}) # 4-digit line number /x'; - $result = preg_match($regex, $item['number'], $matches); + $result = preg_match($regex, $element['number'], $matches); if ($result) { // output as +1 (AAA) BBB CCCC - $phone = $cc['code'] . ' (' . $matches[1] . ') ' . $matches[2] . ' ' . $matches[3]; + $phone = $cc['code'] . ' (' . $matches[1] . ') ' . $matches[2] . '-' . $matches[3]; } - return $phone . $ext; + return $phone; } /** * Local formatter for local phone number. * * @param $element - * $element['#item']['country_codes']: alpha-2 country code - * $element['#item']['number']: phone number - * @param $error - * The error message to shown to user. - * Available parameters to use in the error message are - * - "%countrycode": the alpha-2 CC - * - "%phone_input": the original number input by user (could be invalid) - * - "%max_length": allowed maximum length of the phone number - * @return boolean - * TRUE if it is a valid phone number for that country, FALSE otherwise. + * $element['country_codes']: alpha-2 country code + * $element['number']: phone number */ function us_formatter_local($element) { - $item = $element['#item']; $phone = ''; // Display a local phone number without country code. @@ -130,11 +112,11 @@ function us_formatter_local($element) { (\d{4}) # 4-digit line number /x'; - $result = preg_match($regex, $item['number'], $matches); + $result = preg_match($regex, $element['number'], $matches); if ($result) { // output as (AAA) BBB CCCC - $phone = '(' . $matches[1] . ') ' . $matches[2] . ' ' . $matches[3]; + $phone = '(' . $matches[1] . ') ' . $matches[2] . '-' . $matches[3]; } return $phone;