[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/src/Session/EventListener/ -> MetadataManagerListener.php (source)

   1  <?php
   2  
   3  /**
   4   * Joomla! Content Management System
   5   *
   6   * @copyright  (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
   7   * @license    GNU General Public License version 2 or later; see LICENSE.txt
   8   */
   9  
  10  namespace Joomla\CMS\Session\EventListener;
  11  
  12  use Joomla\CMS\Session\MetadataManager;
  13  use Joomla\Registry\Registry;
  14  use Joomla\Session\SessionEvent;
  15  
  16  // phpcs:disable PSR1.Files.SideEffects
  17  \defined('JPATH_PLATFORM') or die;
  18  // phpcs:enable PSR1.Files.SideEffects
  19  
  20  /**
  21   * Event listener for session events regarding the session metadata for users.
  22   *
  23   * @since  4.0.0
  24   */
  25  final class MetadataManagerListener
  26  {
  27      /**
  28       * Session metadata manager.
  29       *
  30       * @var    MetadataManager
  31       * @since  4.0.0
  32       */
  33      private $metadataManager;
  34  
  35      /**
  36       * Application configuration.
  37       *
  38       * @var    Registry
  39       * @since  4.0.0
  40       */
  41      private $config;
  42  
  43      /**
  44       * Constructor.
  45       *
  46       * @param   MetadataManager  $metadataManager  Session metadata manager.
  47       * @param   Registry         $config           Application configuration.
  48       *
  49       * @since   4.0.0
  50       */
  51      public function __construct(MetadataManager $metadataManager, Registry $config)
  52      {
  53          $this->metadataManager = $metadataManager;
  54          $this->config          = $config;
  55      }
  56  
  57      /**
  58       * Listener for the `session.start` event.
  59       *
  60       * @param   SessionEvent  $event  The session event.
  61       *
  62       * @return  void
  63       *
  64       * @since   4.0.0
  65       */
  66      public function onAfterSessionStart(SessionEvent $event)
  67      {
  68          // Whether to track Session Metadata
  69          if (!$this->config->get('session_metadata', true) || !$event->getSession()->has('user')) {
  70              return;
  71          }
  72  
  73          $user = $event->getSession()->get('user');
  74  
  75          // Whether to track Session Metadata for Guest user
  76          if (!$this->config->get('session_metadata_for_guest', true) && !$user->id) {
  77              return;
  78          }
  79  
  80          $this->metadataManager->createOrUpdateRecord($event->getSession(), $user);
  81      }
  82  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer