123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- <?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;
- }
|