class RedirectHomepageSubscriber in Open Social 8
Same name and namespace in other branches
- 8.9 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 8.2 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 8.3 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 8.4 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 8.5 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 8.6 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 8.7 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 8.8 modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 10.3.x modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 10.0.x modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 10.1.x modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 - 10.2.x modules/custom/alternative_frontpage/src/EventSubscriber/RedirectHomepageSubscriber.php \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 
Class RedirectHomepageSubscriber.
Hierarchy
- class \Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
 
Expanded class hierarchy of RedirectHomepageSubscriber
1 string reference to 'RedirectHomepageSubscriber'
- alternative_frontpage.services.yml in modules/
custom/ alternative_frontpage/ alternative_frontpage.services.yml  - modules/custom/alternative_frontpage/alternative_frontpage.services.yml
 
1 service uses RedirectHomepageSubscriber
- alternative_frontpage.redirect_homepage in modules/
custom/ alternative_frontpage/ alternative_frontpage.services.yml  - Drupal\alternative_frontpage\EventSubscriber\RedirectHomepageSubscriber
 
File
- modules/
custom/ alternative_frontpage/ src/ EventSubscriber/ RedirectHomepageSubscriber.php, line 18  
Namespace
Drupal\alternative_frontpage\EventSubscriberView source
class RedirectHomepageSubscriber implements EventSubscriberInterface {
  /**
   * Protected var UserData.
   *
   * @var \Drupal\user\UserData
   */
  protected $userData;
  /**
   * Protected var alternativeFrontpageSettings.
   *
   * @var \Drupal\Core\Config\ConfigFactory
   */
  protected $alternativeFrontpageSettings;
  /**
   * Protected var siteSettings.
   *
   * @var \Drupal\Core\Config\ConfigFactory
   */
  protected $siteSettings;
  /**
   * Protected var for the current user.
   *
   * @var \Drupal\Core\Session\AccountProxy
   */
  protected $currentUser;
  /**
   * Protected var for the path matcher.
   *
   * @var \Drupal\Core\Path\PathMatcher
   */
  protected $pathMatcher;
  /**
   * Constructor for the RedirectHomepageSubscriber.
   */
  public function __construct(UserData $user_data, ConfigFactory $config_factory, AccountProxy $current_user, PathMatcher $path_matcher) {
    // We needs it.
    $this->userData = $user_data;
    $this->alternativeFrontpageSettings = $config_factory
      ->get('alternative_frontpage.settings');
    $this->siteSettings = $config_factory
      ->get('system.site');
    $this->currentUser = $current_user;
    $this->pathMatcher = $path_matcher;
  }
  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    // 280 priority is higher than the dynamic and static page cache.
    $events[KernelEvents::REQUEST][] = [
      'checkForHomepageRedirect',
      '280',
    ];
    return $events;
  }
  /**
   * This method is called whenever the request event is dispatched.
   *
   * @param \Symfony\Component\EventDispatcher\Event $event
   *   Triggering event.
   */
  public function checkForHomepageRedirect(Event $event) {
    // Make sure front page module is not run when using cli or doing install.
    if (PHP_SAPI === 'cli' || drupal_installation_attempted()) {
      return;
    }
    // Don't run when site is in maintenance mode.
    if (\Drupal::state()
      ->get('system.maintenance_mode')) {
      return;
    }
    // Ignore non index.php requests (like cron).
    if (!empty($_SERVER['SCRIPT_FILENAME']) && realpath(DRUPAL_ROOT . '/index.php') != realpath($_SERVER['SCRIPT_FILENAME'])) {
      return;
    }
    /** @var \Symfony\Component\HttpFoundation\Request $request */
    $request = $event
      ->getRequest();
    $request_path = $request
      ->getPathInfo();
    $frontpage_an = $this->siteSettings
      ->get('page.front');
    if ($request_path === $frontpage_an || $request_path === '/') {
      $frontpage_lu = $this->alternativeFrontpageSettings
        ->get('frontpage_for_authenticated_user');
      if ($frontpage_an === $frontpage_lu) {
        return;
      }
      if ($frontpage_lu && $this->currentUser
        ->isAuthenticated()) {
        $cache_contexts = new CacheableMetadata();
        $cache_contexts
          ->setCacheContexts([
          'user.roles:anonymous',
        ]);
        $response = new CacheableRedirectResponse($frontpage_lu);
        $response
          ->addCacheableDependency($cache_contexts);
        $event
          ->setResponse($response);
      }
    }
  }
}Members
| 
            Name | 
                  Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| 
            RedirectHomepageSubscriber:: | 
                  protected | property | Protected var alternativeFrontpageSettings. | |
| 
            RedirectHomepageSubscriber:: | 
                  protected | property | Protected var for the current user. | |
| 
            RedirectHomepageSubscriber:: | 
                  protected | property | Protected var for the path matcher. | |
| 
            RedirectHomepageSubscriber:: | 
                  protected | property | Protected var siteSettings. | |
| 
            RedirectHomepageSubscriber:: | 
                  protected | property | Protected var UserData. | |
| 
            RedirectHomepageSubscriber:: | 
                  public | function | This method is called whenever the request event is dispatched. | |
| 
            RedirectHomepageSubscriber:: | 
                  public static | function | Returns an array of event names this subscriber wants to listen to. | |
| 
            RedirectHomepageSubscriber:: | 
                  public | function | Constructor for the RedirectHomepageSubscriber. |