201 self::clearManualEditFlag($userField);
206 if (!Loader::includeModule(
'location') || self::isRawValue($value))
210 $fieldName = ($userField[
'FIELD_NAME'] ??
null);
211 $isManualAddressEdit = $_POST[$fieldName .
'_manual_edit'] ??
null;
212 if (!$isManualAddressEdit)
215 $value = $parsedValue[0] .
'|' . $parsedValue[1][0] .
';' . $parsedValue[1][1];
218 self::clearManualEditFlag($userField);
223 if (mb_strlen($value) > 4 && mb_substr($value, -4) ===
'_del')
225 $oldAddressId = (int)substr($value, 0, -4);
226 $oldAddress = Address::load($oldAddressId);
229 $oldAddress->delete();
232 self::clearManualEditFlag($userField);
240 $address = Address::fromJson($value);
244 if (is_string($value))
246 $addressFields = self::getAddressFieldsFromString($value);
247 $address = Address::fromArray($addressFields);
253 self::clearManualEditFlag($userField);
258 $saveResult = $address->save();
259 if ($saveResult->isSuccess())
261 $value = self::formatAddressToString($address);
265 $value = self::getTextAddress($address);
268 self::clearManualEditFlag($userField);
290 if(mb_strpos($value,
'|') !==
false)
292 [$value, $coords, $addressId] = explode(
'|', $value);
295 $addressId = (int)$addressId;
297 if($coords !==
'' && mb_strpos($coords,
';') !==
false)
299 $coords = explode(
';', $coords);
310 $address = Address::load($addressId);
313 $json = $address->toJson();
318 $address = self::tryConvertFromJsonToAddress($value);
322 $value = self::getTextAddress($address);
369 $valueParts = explode(
'|', $value);
370 $valuePartsCount =
count($valueParts);
371 if ($valuePartsCount < 2)
376 if (mb_strpos($valueParts[1],
';') ===
false)
381 $possibleCoords = explode(
';', $valueParts[1]);
383 count($possibleCoords) !== 2
385 (!is_numeric($possibleCoords[0]) || !is_numeric($possibleCoords[1]))
386 && !($possibleCoords[0] ===
'' && $possibleCoords[1] ===
'')