You are here

class GeolocateUserSubscriber in Smart IP 8.2

Same name and namespace in other branches
  1. 8.4 src/EventSubscriber/GeolocateUserSubscriber.php \Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber
  2. 8.3 src/EventSubscriber/GeolocateUserSubscriber.php \Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber

Allows Smart IP to act on HTTP request event.

@package Drupal\smart_ip\EventSubscriber

Hierarchy

  • class \Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface

Expanded class hierarchy of GeolocateUserSubscriber

1 string reference to 'GeolocateUserSubscriber'
smart_ip.services.yml in ./smart_ip.services.yml
smart_ip.services.yml
1 service uses GeolocateUserSubscriber
smart_ip.geolocate_user_subscriber in ./smart_ip.services.yml
Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber

File

src/EventSubscriber/GeolocateUserSubscriber.php, line 21
Contains \Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber.

Namespace

Drupal\smart_ip\EventSubscriber
View source
class GeolocateUserSubscriber implements EventSubscriberInterface {

  /**
   * Initiate user geolocation.
   *
   * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
   */
  public function GeolocateUser(GetResponseEvent $event) {

    // Check to see if the page is one of those allowed for geolocation
    if (!\Drupal\smart_ip\SmartIp::checkAllowedPage()) {

      // This page is not on the list to acquire/update user's geolocation
      return;
    }

    /** @var \Drupal\smart_ip\SmartIpLocation $location */
    $location = \Drupal::service('smart_ip.smart_ip_location');

    // Save a database hit. If there's already session data, don't check if we
    // need to geolocate the anonymous role.
    if (empty($location
      ->getData())) {
      $roles = \Drupal::config('smart_ip.settings')
        ->get('roles_to_geolocate');
      if (in_array(AccountInterface::ANONYMOUS_ROLE, $roles)) {
        SmartIp::updateUserLocation();
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  static function getSubscribedEvents() {
    $events[KernelEvents::REQUEST][] = array(
      'GeolocateUser',
    );
    return $events;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
GeolocateUserSubscriber::GeolocateUser public function Initiate user geolocation.
GeolocateUserSubscriber::getSubscribedEvents static function Returns an array of event names this subscriber wants to listen to.