Geocoder\Provider\GeoIP2::geocode PHP Method

geocode() public method

{@inheritDoc}
public geocode ( $address )
    public function geocode($address)
    {
        if (!filter_var($address, FILTER_VALIDATE_IP)) {
            throw new UnsupportedOperation('The GeoIP2 provider does not support street addresses, only IP addresses.');
        }
        if ('127.0.0.1' === $address) {
            return $this->returnResults([$this->getLocalhostDefaults()]);
        }
        $result = json_decode($this->executeQuery($address));
        $adminLevels = [];
        if (isset($result->subdivisions) && is_array($result->subdivisions)) {
            foreach ($result->subdivisions as $i => $subdivision) {
                $name = isset($subdivision->names->{$this->locale}) ? $subdivision->names->{$this->locale} : null;
                $code = isset($subdivision->iso_code) ? $subdivision->iso_code : null;
                if (null !== $name || null !== $code) {
                    $adminLevels[] = ['name' => $name, 'code' => $code, 'level' => $i + 1];
                }
            }
        }
        return $this->returnResults([$this->fixEncoding(array_merge($this->getDefaults(), array('countryCode' => isset($result->country->iso_code) ? $result->country->iso_code : null, 'country' => isset($result->country->names->{$this->locale}) ? $result->country->names->{$this->locale} : null, 'locality' => isset($result->city->names->{$this->locale}) ? $result->city->names->{$this->locale} : null, 'latitude' => isset($result->location->latitude) ? $result->location->latitude : null, 'longitude' => isset($result->location->longitude) ? $result->location->longitude : null, 'timezone' => isset($result->location->time_zone) ? $result->location->time_zone : null, 'postalCode' => isset($result->postal->code) ? $result->postal->code : null, 'adminLevels' => $adminLevels)))]);
    }

Usage Example

Example #1
0
 /**
  * @return bool|int
  */
 public function getId()
 {
     $id = $this->getIdFromSignedCookie();
     if (false === $id) {
         $ipAddress = $this->request->getClientIp();
         $geocoderResult = null;
         if ($this->geocoder) {
             try {
                 $geocoderResult = $this->geocoder->geocode($ipAddress)->first();
             } catch (NoResultException $e) {
             }
         }
         $id = $this->dbGateway->insertUserInformation($ipAddress, $_SERVER['HTTP_USER_AGENT'], php_sapi_name(), $geocoderResult);
         $this->writeSignedCookie($id);
     }
     return $id;
 }
All Usage Examples Of Geocoder\Provider\GeoIP2::geocode