You are here

function geofield_set_target_simple in Geofield 7.2

Same name and namespace in other branches
  1. 7 geofield.feeds.inc \geofield_set_target_simple()

Example callback specified in hook_feeds_processor_targets_alter().

Parameters

$source: Field mapper source settings.

$entity: An entity object, for instance a node object.

$target: A string identifying the target on the node.

$values: The values to populate the target with.

1 string reference to 'geofield_set_target_simple'
geofield_feeds_processor_targets_alter in ./geofield.feeds.inc
Implements hook_feeds_node_processor_targets_alter().

File

./geofield.feeds.inc, line 131
Provides integration with Feeds module (http://drupal.org/project/feeds)

Code

function geofield_set_target_simple($source, $entity, $target, $values) {
  list($field_name, $sub_field) = explode(':', $target, 2);
  if (!is_array($values)) {
    $values = array(
      $values,
    );
  }
  $field = isset($entity->{$field_name}) ? $entity->{$field_name} : array(
    'und' => array(),
  );
  $delta = 0;
  foreach ($values as $value) {
    $field['und'][$delta][$sub_field] = $value;
    $delta++;
  }

  // Compute all the geofield values for each field value.
  foreach ($field[LANGUAGE_NONE] as $delta => $value) {
    if (!empty($value['lat']) && !empty($value['lon'])) {
      $field[LANGUAGE_NONE][$delta] = geofield_compute_values($value, GEOFIELD_INPUT_LAT_LON);
    }
    elseif (!empty($value['top']) && !empty($value['right']) && !empty($value['bottom']) && !empty($value['left'])) {
      $value = array(
        'geom' => $value,
      );
      $field[LANGUAGE_NONE][$delta] = geofield_compute_values($value, GEOFIELD_INPUT_BOUNDS);
    }
  }
  $entity->{$field_name} = $field;
}