/** * Geocode address and retries if first attempt or value in session * is not geocoded * * @param Model\Constraint|Model\Location $address * @param bool $forceGeocoding * @return Model\Constraint|Model\Location */ public function geocodeAddress($address, $forceGeocoding = FALSE) { $geocodedAddress = $this->coordinatesCache->getCoordinateByAddress($address); if ($forceGeocoding || !$geocodedAddress->isGeocoded()) { $fieldsHit = array(); $geocodedAddress = $this->processAddress($address, $fieldsHit); $this->coordinatesCache->addCoordinateForAddress($geocodedAddress, $fieldsHit); } // In case the address without geocoded location was stored in // session or the geocoding did not work a second try is done if (!$forceGeocoding && !$geocodedAddress->isGeocoded()) { $geocodedAddress = $this->geocodeAddress($geocodedAddress, TRUE); } return $geocodedAddress; }
/** * Test for something * * @test * @throws \TYPO3\CMS\Core\Exception * @return void */ public function locationWithAddressZipCityStateCountryGetStoredInSessionCache() { $this->coordinatesCache->flushCache(); $data = array('address' => uniqid('Address'), 'zipcode' => substr(mktime(), -5), 'city' => uniqid('City'), 'state' => '', 'country' => uniqid('Country')); $constraint = $this->getConstraintStub($data); $coordinate = array('latitude' => $constraint->getLatitude(), 'longitude' => $constraint->getLongitude()); $fields = array('address', 'zipcode', 'city', 'state', 'country'); $this->coordinatesCache->addCoordinateForAddress($constraint, $fields); $fields = array('address', 'zipcode', 'city', 'state', 'country'); $hash = $this->coordinatesCache->getHashForAddressWithFields($constraint, $fields); $this->assertEquals($coordinate, $this->coordinatesCache->getValueFromSession($hash)); }