mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-12 12:33:26 +00:00
PHRAS-3412_bad-gps-crash-indexation_MASTER
fix : PHRAS-3412 bad gps values are ignored
This commit is contained in:
@@ -11,8 +11,6 @@
|
||||
|
||||
namespace Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator;
|
||||
|
||||
use Assert\Assertion;
|
||||
|
||||
class GpsPosition
|
||||
{
|
||||
const FULL_GEO_NOTATION = 'FullNotation';
|
||||
@@ -44,35 +42,35 @@ class GpsPosition
|
||||
{
|
||||
switch ($tag_name) {
|
||||
case self::LONGITUDE_TAG_NAME:
|
||||
Assertion::numeric($value);
|
||||
$value = (float) $value;
|
||||
if($value >= -180.0 && $value <= 180.0 ) {
|
||||
$this->longitude = $value;
|
||||
if(is_numeric($value)) {
|
||||
$value = (float)$value;
|
||||
if ($value >= -180.0 && $value <= 180.0) {
|
||||
$this->longitude = $value;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case self::LATITUDE_TAG_NAME:
|
||||
Assertion::numeric($value);
|
||||
$value = (float) $value;
|
||||
if($value >= -90.0 && $value <= 90.0 ) {
|
||||
$this->latitude = $value;
|
||||
if(is_numeric($value)) {
|
||||
$value = (float)$value;
|
||||
if ($value >= -90.0 && $value <= 90.0) {
|
||||
$this->latitude = $value;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case self::LONGITUDE_REF_TAG_NAME:
|
||||
$normalized = strtoupper($value);
|
||||
if ($normalized !== self::LONGITUDE_REF_EAST && $normalized !== self::LONGITUDE_REF_WEST) {
|
||||
throw new \InvalidArgumentException(sprintf('Invalid longitude reference "%s" (expecting "%s" or "%s").', $value, self::LONGITUDE_REF_EAST, self::LONGITUDE_REF_WEST));
|
||||
if ($normalized === self::LONGITUDE_REF_EAST || $normalized === self::LONGITUDE_REF_WEST) {
|
||||
$this->longitude_ref = $value;
|
||||
}
|
||||
$this->longitude_ref = $value;
|
||||
break;
|
||||
|
||||
case self::LATITUDE_REF_TAG_NAME:
|
||||
$normalized = strtoupper($value);
|
||||
if ($normalized !== self::LATITUDE_REF_NORTH && $normalized !== self::LATITUDE_REF_SOUTH) {
|
||||
throw new \InvalidArgumentException(sprintf('Invalid latitude reference "%s" (expecting "%s" or "%s").', $value, self::LATITUDE_REF_NORTH, self::LATITUDE_REF_SOUTH));
|
||||
if ($normalized === self::LATITUDE_REF_NORTH || $normalized === self::LATITUDE_REF_SOUTH) {
|
||||
$this->latitude_ref = $normalized;
|
||||
}
|
||||
$this->latitude_ref = $normalized;
|
||||
break;
|
||||
|
||||
case self::FULL_GEO_NOTATION:
|
||||
@@ -111,8 +109,6 @@ class GpsPosition
|
||||
$lon = $v;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new \InvalidArgumentException(sprintf('Unsupported reference "%s", should be N|S|E|W.', $match[4]));
|
||||
}
|
||||
}
|
||||
if($lat !== null && $lon != null) {
|
||||
|
Reference in New Issue
Block a user