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