diff orig/phone.ca.inc ./phone.ca.inc
8c8
< * @return boolean Returns boolean FALSE if the phone number is not valid.
---
> * @return string Returns a message explaining what is wrong in the phone number or '' if the phone number is ok.
29,30c29,32
< // return true if valid, false otherwise
< return (bool) preg_match($regex, $phonenumber);
---
> if (preg_match($regex, $phonenumber)) {
> return '';
> }
> return '"%value" is not a valid North American phone number
North American Phone numbers should only contain numbers and + and - and ( and ) and spaces and be like 999-999-9999. Please enter a valid ten-digit phone number with optional extension.';
diff orig/phone.fr.inc ./phone.fr.inc
8c8
< * @return boolean Returns boolean FALSE if the phone number is not valid.
---
> * @return string Returns a message explaining what is wrong in the phone number or '' if the phone number is ok.
15c15
< return false;
---
> return '"%value" is not a valid French phone number
French phone numbers should only contain numbers and spaces and be like 99 99 99 99 99';
21c21
< return true;
---
> return '';
50c50
< }
---
> }
diff orig/phone.module ./phone.module
19a20
> 'it_phone' => array('label' => t('Italian Phone Numbers')),
33c34
< '#default_value' => isset($field['phone_country_code']) ? $field['phone_country_code '] : '',
---
> '#default_value' => isset($field['phone_country_code']) ? $field['phone_country_code'] : '',
41c42
< if ($field['type'] == 'fr_phone'){
---
> if (array_key_exists($field['type'], phone_field_info())) {
46,50d46
< if ($field['type'] == 'ca_phone'){
< $columns = array(
< 'value' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
< );
< }
88c84
< 'field types' => array('fr_phone', 'ca_phone'),
---
> 'field types' => array(phone_field_info()),
120c116
< 'field types' => array('fr_phone', 'ca_phone'),
---
> 'field types' => array(phone_field_info()),
187,192c183,193
< if ($field['type'] == 'fr_phone') {
< $node_field[0]['value'] = format_phone_number('fr', $node_field[0]['value'], $field);
< }
< if ($field['type'] == 'ca_phone') {
< $node_field[0]['value'] = format_phone_number('ca', $node_field[0]['value'], $field);
< }
---
> if (array_key_exists($field['type'], phone_field_info())) {
> list($countrycode, $suffix) = explode('_', $field['type']);
> $phonenumber = trim($node_field[0]['value']);
>
> $format_phone_function = 'format_'. $countrycode . '_phone_number';
> include_once('./'. drupal_get_path('module', 'phone') . '/phone.'. $countrycode . '.inc');
>
> if (function_exists($format_phone_function)) {
> $node_field[0]['value'] = $format_phone_function($phonenumber, $field);
> }
> }
204,208c205,221
< if ($field['type'] == 'fr_phone' && !valid_phone_number('fr', $item['value'])) {
< form_set_error($field['field_name'],t('"%value" is not a valid French phone number
French phone numbers should only contain numbers and spaces and be like 99 99 99 99 99', array('%value' => $item['value'])));
< }
< if ($field['type'] == 'ca_phone' && !valid_phone_number('ca', $item['value'])) {
< form_set_error($field['field_name'],t('"%value" is not a valid North American phone number
North American Phone numbers should only contain numbers and + and - and ( and ) and spaces and be like 999-999-9999. Please enter a valid ten-digit phone number with optional extension.', array('%value' => $item['value'])));
---
> if (array_key_exists($field['type'], phone_field_info())) {
> list($countrycode, $suffix) = explode('_', $field['type']);
> $phonenumber = trim($item['value']);
>
> $valid_phone_function = 'valid_'. $countrycode . '_phone_number';
> include_once('./'. drupal_get_path('module', 'phone') . '/phone.'. $countrycode . '.inc');
>
> if (function_exists($valid_phone_function)) {
> $res = $valid_phone_function($phonenumber);
> }
> else {
> $res = 'I\'m unable to test if "%value" is a valid phone number (' . $valid_phone_function . ' missing)';
> }
> if ($res != '') {
> form_set_error($field['field_name'],t($res, array('%value' => $item['value'])));
> }
> }
213d225
< break;
215,274d226
< }
<
< /**
< * Verification for Phone Numbers.
< *
< * @param string $countrycode
< * @param string $phonenumber
< * @return boolean Returns boolean FALSE if the phone number is not valid.
< */
< function valid_phone_number($countrycode, $phonenumber) {
<
< $countrycode = trim($countrycode);
< $phonenumber = trim($phonenumber);
<
< if ($countrycode == 'fr'
< || $countrycode == 'ca') {
<
< //drupal_set_message('langue = ' . $countrycode, 'error');
<
< $valid_phone_function = 'valid_'. $countrycode . '_phone_number';
< include_once('./'. drupal_get_path('module', 'phone') . '/phone.'. $countrycode . '.inc');
<
< if (function_exists($valid_phone_function)) {
< return $valid_phone_function($phonenumber);
< }
< }
< else {
< return false;
< }
< }
<
< /**
< * Verification for Phone Numbers.
< *
< * @param string $countrycode
< * @param string $phonenumber
< * @return boolean Returns boolean FALSE if the phone number is not valid.
< */
< function format_phone_number($countrycode, $phonenumber, $field) {
<
< $countrycode = trim($countrycode);
< $phonenumber = trim($phonenumber);
<
< if ($countrycode == 'fr'
< || $countrycode == 'ca') {
<
< //drupal_set_message('langue = ' . $countrycode, 'error');
<
< $format_phone_function = 'format_'. $countrycode . '_phone_number';
< include_once('./'. drupal_get_path('module', 'phone') . '/phone.'. $countrycode . '.inc');
<
< if (function_exists($format_phone_function)) {
< return $format_phone_function($phonenumber, $field);
< }
< }
< else {
< return false;
< }
< }
<