function openlayers_use_geocoder_submit in Geofield 7.2
Submit callback for widget form.
1 string reference to 'openlayers_use_geocoder_submit'
- openlayers_field_widget_form in ./
geofield.widgets.openlayers.inc - Implements hook_field_widget_form().
File
- ./
geofield.widgets.openlayers.inc, line 314 - Provides widget hooks on behalf of Openlayers.
Code
function openlayers_use_geocoder_submit($form, &$form_state) {
$button = $form_state['triggering_element'];
// Go one level up in the form, to the widgets container.
$element = drupal_array_get_nested_value($form, array_slice($button['#array_parents'], 0, -1));
$field_name = $element['#field_name'];
$langcode = $element['#language'];
$delta = $element['#delta'];
$parents = $element['#field_parents'];
// Set the widget value based on geocoding results.
$field_state = field_form_get_state($parents, $field_name, $langcode, $form_state);
$geocoder_field = $field_state['instance']['widget']['settings']['geocoder_field'];
if ($field_value = geocoder_widget_get_field_value($element['#entity_type'], $field_state['instance'], NULL, $form_state['values'][$geocoder_field][$langcode])) {
geophp_load();
$geometry = geoPHP::load($field_value[$langcode][$delta]['geom']);
$field_value[$langcode][$delta]['geom'] = $geometry
->out('wkt');
// OpenLayers can only use WKT, so translate
$field_value[$langcode][$delta]['input_format'] = 'wkt';
// Override the field's value in the 'input' array to substitute the new
// field value for the one that was submitted.
drupal_array_set_nested_value($form_state, array_merge(array(
'values',
), $parents, array(
$field_name,
)), $field_value);
}
}