| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 | <?php/** * Implements hook_field_schema() */function addressfield_field_schema() {  $columns = array(    'country' => array(      'description' => 'Two letter ISO country code of this address.',      'type' => 'varchar',      'length' => 2,      'not null' => FALSE,      'default' => '',    ),    'administrative_area' => array(      'description' => 'The administrative area of this address. (i.e. State/Province)',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'sub_administrative_area' => array(      'description' => 'The sub administrative area of this address.',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'locality' => array(      'description' => 'The locality of this address. (i.e. City)',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'dependent_locality' => array(      'description' => 'The dependent locality of this address.',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'postal_code' => array(      'description' => 'The postal code of this address.',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'thoroughfare' => array(      'description' => 'The thoroughfare of this address. (i.e. Street address)',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'premise' => array(      'description' => 'The premise of this address. (i.e. Apartment / Suite number)',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'sub_premise' => array(      'description' => 'The sub_premise of this address.',      'type' => 'varchar',      'length' => 255,      'default' => '',      'not null' => FALSE,    ),    'organisation_name' => array(      'description' => 'Contents of a primary OrganisationName element in the xNL XML.',      'type' => 'varchar',      'length' => 255,      'not null' => FALSE,      'default' => '',    ),    'name_line' => array(      'description' => 'Contents of a primary NameLine element in the xNL XML.',      'type' => 'varchar',      'length' => 255,      'not null' => FALSE,      'default' => '',    ),    'first_name' => array(      'description' => 'Contents of the FirstName element of a primary PersonName element in the xNL XML.',      'type' => 'varchar',      'length' => 255,      'not null' => FALSE,      'default' => '',    ),    'last_name' => array(      'description' => 'Contents of the LastName element of a primary PersonName element in the xNL XML.',      'type' => 'varchar',      'length' => 255,      'not null' => FALSE,      'default' => '',    ),    'data' => array(      'description' => 'Additional data for this address.',      'type' => 'text',      'size' => 'big',      'not null' => FALSE,      'serialize' => TRUE,    ),  );  return array(    'columns' => $columns,    // TODO Add indexes.  );}/** * Update the field configuration to the new plugin structure. */function addressfield_update_7000() {  // Enable ctools.  if (!module_enable(array('ctools'))) {    throw new Exception('This version of addressfield requires ctools, but it could not be enabled.');  }  // Get the list of fields of type 'addressfield'.  $address_fields = array();  foreach (field_info_fields() as $field_name => $field_info) {    if ($field_info['type'] == 'addressfield') {      $address_fields[$field_name] = $field_name;    }  }  foreach (field_info_instances() as $entity_type => $bundles) {    foreach ($bundles as $bundle_name => $instances) {      foreach (array_intersect_key($instances, $address_fields) as $field_name => $instance) {        $widget_settings = &$instance['widget']['settings'];        if ($instance['widget']['type'] == 'addressfield_standard') {          // Default to use the country-based address widget.          $format_handlers = array('address');          // Map the old 'name_format' setting to the name and organization widgets.          if (in_array($widget_settings['name_format'], array('name_line_organisation', 'first_last_organisation'))) {            $format_handlers[] = 'organisation';          }          if (in_array($widget_settings['name_format'], array('name_line', 'name_line_organisation'))) {            $format_handlers[] = 'name-oneline';          }          else {            $format_handlers[] = 'name-full';          }          unset($widget_settings['name_format']);          $widget_settings['format_handlers'] = $format_handlers;        }        // Update displays.        foreach ($instance['display'] as $view_mode => &$view_mode_info) {          $display_settings = &$view_mode_info['settings'];          if ($view_mode_info['type'] == 'addressfield_default') {            if (isset($widget_settings['format_handlers'])) {              $display_settings['use_widget_handlers'] = 1;            }            else {              // If the widget is non-standard, just use a sane default.              $display_settings['use_widget_handlers'] = 0;              $display_settings['format_handlers'] = array('address', 'name-oneline');            }          }          else if ($view_mode_info['type'] == 'addressfield_name') {            // Migrate the 'addressfield_name' formatter to the new framework.            $view_mode_info['type'] = 'addressfield_default';            // Start from the widget configuration.            $display_settings['use_widget_handlers'] = 0;            $display_settings['format_handlers'] = isset($widget_settings['format_handlers']) ? $widget_settings['format_handlers'] : array('address', 'name-oneline');            if (empty($display_settings['organisation'])) {              $display_settings['format_handlers'] = array_diff( $display_settings['format_handlers'], array('organisation'));            }            unset($display_settings['organisation']);          }        }        field_update_instance($instance);      }    }  }}/** * Sets the value of the new "Default country" setting. */function addressfield_update_7001() {  $address_fields = array();  foreach (field_info_fields() as $field_name => $field_info) {    if ($field_info['type'] == 'addressfield') {      $address_fields[$field_name] = $field_name;    }  }  foreach (field_info_instances() as $entity_type => $bundles) {    foreach ($bundles as $bundle_name => $instances) {      foreach (array_intersect_key($instances, $address_fields) as $field_name => $instance) {        // Optional fields get the None default. Required fields get the        // previously selected default country.        $default_country = '';        if (!empty($instance['required']) && !empty($instance['default_value'])) {          $default_country = $instance['default_value']['country'];        }        $instance['widget']['settings']['default_country'] = $default_country;        unset($instance['default_value']);        field_update_instance($instance);      }    }  }}
 |