You are here

public function SmartIpEventSubscriber::processQuery in Smart IP 8.2

Same name and namespace in other branches
  1. 8.4 modules/smart_ip_ipinfodb_web_service/src/EventSubscriber/SmartIpEventSubscriber.php \Drupal\smart_ip_ipinfodb_web_service\EventSubscriber\SmartIpEventSubscriber::processQuery()
  2. 8.3 modules/smart_ip_ipinfodb_web_service/src/EventSubscriber/SmartIpEventSubscriber.php \Drupal\smart_ip_ipinfodb_web_service\EventSubscriber\SmartIpEventSubscriber::processQuery()

Act on \Drupal\smart_ip\SmartIp::query() when executed and if selected as Smart IP data source, query the IP address against its database.

Parameters

\Drupal\smart_ip\GetLocationEvent $event:

Overrides SmartIpDataSourceInterface::processQuery

File

modules/smart_ip_ipinfodb_web_service/src/EventSubscriber/SmartIpEventSubscriber.php, line 52
Contains \Drupal\smart_ip_ipinfodb_web_service\EventSubscriber\SmartIpEventSubscriber.

Class

SmartIpEventSubscriber
Core functionalty of this Smart IP data source module. Listens to Smart IP override events.

Namespace

Drupal\smart_ip_ipinfodb_web_service\EventSubscriber

Code

public function processQuery(GetLocationEvent $event) {
  if ($event
    ->getDataSource() == self::sourceId()) {
    $location = $event
      ->getLocation();
    $ipAddress = $location
      ->get('ipAddress');
    $record = WebServiceUtility::getGeolocation($ipAddress);
    $config = \Drupal::config($this
      ->configName());
    $version = $config
      ->get('version');
    if ($version == 2) {
      $region = '';
      if (isset($record->{'RegionCode'}) && isset($record->{'CountryCode'})) {
        $regionResult = smart_ip_get_region_static($record->{'CountryCode'}, $record->{'RegionCode'});
        $region = $regionResult[$record->{'CountryCode'}][$record->{'RegionCode'}];
      }
      elseif (isset($record->{'RegionName'})) {
        $region = $record->{'RegionName'};
      }
      $location
        ->set('originalData', $record);
      $location
        ->set('country', isset($record->{'CountryName'}) ? $record->CountryName : '');
      $location
        ->set('countryCode', isset($record->{'CountryCode'}) ? $record->CountryCode : '');
      $location
        ->set('region', $region);
      $location
        ->set('regionCode', isset($record->{'RegionCode'}) ? $record->RegionCode : '');
      $location
        ->set('city', isset($record->{'City'}) ? $record->City : '');
      $location
        ->set('zip', isset($record->{'ZipPostalCode'}) ? $record->ZipPostalCode : '');
      $location
        ->set('latitude', isset($record->{'Latitude'}) ? $record->Latitude : '');
      $location
        ->set('longitude', isset($record->{'Longitude'}) ? $record->Longitude : '');
      $location
        ->set('timeZone', '');
    }
    elseif ($version == 3) {
      $location
        ->set('originalData', $record);
      $location
        ->set('country', isset($record->{'countryName'}) ? $record->countryName : '');
      $location
        ->set('countryCode', isset($record->{'countryCode'}) ? $record->countryCode : '');
      $location
        ->set('region', isset($record->{'regionName'}) ? $record->regionName : '');
      $location
        ->set('regionCode', '');
      $location
        ->set('city', isset($record->{'cityName'}) ? $record->cityName : '');
      $location
        ->set('zip', isset($record->{'zipCode'}) ? $record->zipCode : '');
      $location
        ->set('latitude', isset($record->{'latitude'}) ? $record->latitude : '');
      $location
        ->set('longitude', isset($record->{'longitude'}) ? $record->longitude : '');
      $location
        ->set('timeZone', isset($record->{'timeZone'}) ? $record->timeZone : '');
    }
  }
}