/** * Returns true if the parameter value contains atleast 1 comma * meaning that there are atleast two enpoints on which to draw a line. * * @param string $value * @param Parameter $parameter * @param array $parameters * * @since 0.4 * * @return boolean */ protected function doValidation($value, Parameter $parameter, array $parameters) { //fetch locations $value = explode($this->metaDataSeparator, $value); $value = $value[0]; //need atleast two points to create a line $valid = strpos($value, ':') != false; if (!$valid) { return $valid; } //setup geocode deps $canGeoCode = MapsGeocoders::canGeocode(); if ($canGeoCode) { $geoService = $parameter->hasDependency('geoservice') ? $parameters['geoservice']->getValue() : ''; $mappingService = $parameter->hasDependency('mappingservice') ? $parameters['mappingservice']->getValue() : false; } //strip away line parameters and check for valid locations $parts = explode(':', $value); foreach ($parts as $part) { $toIndex = strpos($part, $this->metaDataSeparator); if ($toIndex != false) { $part = substr($part, 0, $toIndex); } if ($canGeoCode) { $valid = MapsGeocoders::isLocation($part, $geoService, $mappingService); } else { $valid = MapsCoordinateParser::areCoordinates($part); } if (!$valid) { break; } } return $valid; }
/** * @see ItemParameterCriterion::validate */ protected function doValidation($value, Parameter $parameter, array $parameters) { if ($this->metaDataSeparator !== false) { $parts = explode($this->metaDataSeparator, $value); $value = $parts[0]; } if (MapsGeocoders::canGeocode()) { $geoService = $parameter->hasDependency('geoservice') ? $parameters['geoservice']->getValue() : ''; $mappingService = $parameter->hasDependency('mappingservice') ? $parameters['mappingservice']->getValue() : false; return MapsGeocoders::isLocation($value, $geoService, $mappingService); } else { return MapsCoordinateParser::areCoordinates($value); } }