From 7c6ffc8fafbb9a80474aa4a421da3abf5d5f29c5 Mon Sep 17 00:00:00 2001 From: indigoxela Date: Wed, 11 Mar 2026 12:18:16 +0100 Subject: [PATCH] Issue #51: Fix TypeError with trim() and validate manual, too --- geofield.elements.inc | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/geofield.elements.inc b/geofield.elements.inc index ecfbe3b..45d915f 100644 --- a/geofield.elements.inc +++ b/geofield.elements.inc @@ -320,9 +320,28 @@ function geofield_proximity_element_process($element, &$form_state, $form) { * Validate the geofield proximity search form item */ function geofield_proximity_search_validate($element, &$form_state) { - //If the origin is set, ensure the distance is set as well - if (!empty($element['origin']['#value']) && trim($element['origin']['#value']) != '' && empty($element['distance']['#value'])) - form_set_error(implode('][', $element['#array_parents']) . '][distance', t('@title must be set when @origin is specified.', array('@title' => $element['distance']['#title'], '@origin' => $element['origin']['#title']))); + // If the origin is set, ensure the distance is set as well. + $origin_empty = TRUE; + // String based like geocoder. + if (isset($element['origin']['#value']) && is_string($element['origin']['#value'])) { + $element['origin']['#value'] = trim($element['origin']['#value']); + $origin_empty = ($element['origin']['#value'] == ''); + } + // Array based like manual input. + elseif (is_array($element['origin']['#default_value'])) { + foreach ($element['origin']['#default_value'] as $key => $default) { + if (isset($element['origin'][$key]) && strlen($element['origin'][$key]['#value'])) { + $origin_empty = FALSE; + break; + } + } + } + if (!$origin_empty && empty($element['distance']['#value'])) { + form_set_error(implode('][', $element['#array_parents']) . '][distance', t('@title must be set when @origin is specified.', array( + '@title' => $element['distance']['#title'], + '@origin' => $element['origin']['#title'], + ))); + } } function geofield_theme($existing, $type, $theme, $path) {