You are here

function _addressfield_autocomplete_widget_get_field_value in Addressfield Autocomplete 7

Function to get the geofield information from the autocomplete.

1 call to _addressfield_autocomplete_widget_get_field_value()
addressfield_autocomplete_field_attach_presave in ./addressfield_autocomplete.module
Implements hook_field_attach_presave().

File

./addressfield_autocomplete.module, line 632
The Addressfield Autocomplete module code.

Code

function _addressfield_autocomplete_widget_get_field_value($entity_type, $entity, $instance) {
  if (!isset($instance['widget']['settings']['addressfield_autocomplete_field'])) {
    return;
  }
  $values = $field_values = $geometries = array();
  list(, , $bundle_name) = entity_extract_ids($entity_type, $entity);
  $field_name = $instance['widget']['settings']['addressfield_autocomplete_field'];
  $field_instance = field_info_instance($entity_type, $field_name, $bundle_name);
  if ($field_instance['widget']['type'] != 'addressfield_autocomplete') {
    return $values;
  }
  $delta_hanlding = $instance['widget']['settings']['delta_handling'];
  $target_info = field_info_field($instance['field_name']);
  $target_type = $target_info['type'];
  $field_values = field_get_items($entity_type, $entity, $field_name, isset($entity->language) ? $entity->language : NULL);
  if ($field_values) {
    geophp_load();
    foreach ($field_values as $delta => $item) {
      $data = unserialize($item['data']);
      $geometry = array();
      if (isset($data['latitude']) && isset($data['longitude'])) {
        $geometry = new Point($data['longitude'], $data['latitude']);
      }
      $geometries[$delta] = $geometry;
    }
  }
  if ($geometries) {
    $values = _addressfield_autocomplete_widget_resolve_deltas($geometries, $target_type, $delta_hanlding);
  }
  return $values;
}