Пример #1
0
 /**
  * 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);
     }
 }