You are here

function br_tax_number_fields_field_formatter_view in Brazilian IDs 7

Implements hook_field_formatter_view().

File

./br_tax_number_fields.module, line 24
Adds Brazilian Tax Number field widgets to text field type at the Field UI and creates new form element types for use in the Form API.

Code

function br_tax_number_fields_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  if (in_array($display['type'], array(
    'number_cnpj',
    'number_cpf',
    'number_cnpj_cpf',
  ))) {
    $markup = '';
    foreach ($items as $delta => $item) {
      $v = $item['value'];
      if (strlen($item['value']) == 11) {

        // This is a CPF.
        $markup = sprintf('%s.%s.%s-%s', $v[0] . $v[1] . $v[2], $v[3] . $v[4] . $v[5], $v[6] . $v[7] . $v[8], $v[9] . $v[10]);
      }
      elseif (strlen($item['value']) == 14) {

        // This is a CNPJ.
        $v1 = $v[0] . $v[1];
        $v2 = $v[2] . $v[3] . $v[4];
        $v3 = $v[5] . $v[6] . $v[7];
        $v4 = $v[8] . $v[9] . $v[10] . $v[11];
        $v5 = $v[12] . $v[13];
        $markup = sprintf('%s.%s.%s/%s-%s', $v1, $v2, $v3, $v4, $v5);
      }
      $element[$delta]['#markup'] = $markup;
    }
  }
  return $element;
}