API.php in Phone Number 7
Same filename and directory in other branches
Phone Number custom country API
'CC' will be used throughout this document to indicate country code abbreviation. You should replace it with the correct country code in the following functions name. For full list of country code abbreviation, refer to the 2 alphabet list in the countries.txt.
File
includes/API.phpView source
<?php
/**
* @file
* Phone Number custom country API
*
* 'CC' will be used throughout this document to indicate country code
* abbreviation. You should replace it with the correct country code
* in the following functions name. For full list of country code
* abbreviation, refer to the 2 alphabet list in the countries.txt.
*/
/**
* Country field settings.
* Country can provide additional field settings for the phone number
* field as needed.
*
* @param $op
* The operation to be performed. Possible values:
* - "form": Display the field settings form.
* - "validate": Check the field settings form for errors.
* - "save": Declare which fields to save back to the database.
* - "database columns": Declare the columns that content.module should create
* and manage on behalf of the field. If the field module wishes to handle
* its own database storage, this should be omitted.
* - "filters": Declare the Views filters available for the field.
* (this is used in CCK's default Views tables definition)
* They always apply to the first column listed in the "database columns"
* array.
* @param $field
* The field on which the operation is to be performed.
* @return
* This varies depending on the operation.
* - "form": an array of form elements to add to
* the settings page.
* - "validate": no return value. Use form_set_error().
* - "save": an array of names of form elements to
* be saved in the database.
* - "database columns": an array keyed by column name, with arrays of column
* information as values. This column information must include "type", the
* MySQL data type of the column, and may also include a "sortable" parameter
* to indicate to views.module that the column contains ordered information.
* TODO: Details of other information that can be passed to the database layer can
* be found in the API for the Schema API.
* - "filters": an array of 'filters' definitions as expected by views.module
* (see Views Documentation).
* When providing several filters, it is recommended to use the 'name'
* attribute in order to let the user distinguish between them. If no 'name'
* is specified for a filter, the key of the filter will be used instead.
*/
function CC_phone_field_settings($op, $field) {
switch ($op) {
// Country specific field settings
case 'form':
// ...
return $form;
// Country specific field validation
case 'validate':
// ...
break;
// Country specific field save
case 'save':
// ...
return $settings;
}
}
/**
* Validate country level phone number.
*
* @param $number
* Digits only value.
* @param $ext
* Digits only value.
* @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.
*/
function CC_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
// your validation
if (FALSE) {
// t() is no needed
$error = '"%phone_input" is not a valid North American phone number, it should be a 10 digit number like "999 999 9999"';
return FALSE;
}
return TRUE;
}
/**
* Cleanup user-entered values for a phone number field for saving to DB.
*
* @param $number
* A single phone number item.
*/
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.
*/
function CC_formatter_default($element) {
$item = $element['#item'];
// Display a global phone number with country code.
$cc = cck_phone_countrycodes($item['country_codes']);
// Format the phone number however you like, this is the default
$phone = $cc['code'] . '-' . $item['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.
*/
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'];
return $phone;
}
Functions
Name![]() |
Description |
---|---|
CC_formatter_default | Default formatter for international phone number. |
CC_formatter_local | Local formatter for local phone number. |
CC_phone_field_settings | Country field settings. Country can provide additional field settings for the phone number field as needed. |
CC_sanitize_number | Cleanup user-entered values for a phone number field for saving to DB. |
CC_validate_number | Validate country level phone number. |