[ Index ]

PHP Cross Reference of phpBB-3.3.3-deutsch

title

Body

[close]

/vendor/symfony/http-foundation/Session/Storage/ -> MetadataBag.php (source)

   1  <?php
   2  
   3  /*
   4   * This file is part of the Symfony package.
   5   *
   6   * (c) Fabien Potencier <fabien@symfony.com>
   7   *
   8   * For the full copyright and license information, please view the LICENSE
   9   * file that was distributed with this source code.
  10   */
  11  
  12  namespace Symfony\Component\HttpFoundation\Session\Storage;
  13  
  14  use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
  15  
  16  /**
  17   * Metadata container.
  18   *
  19   * Adds metadata to the session.
  20   *
  21   * @author Drak <drak@zikula.org>
  22   */
  23  class MetadataBag implements SessionBagInterface
  24  {
  25      const CREATED = 'c';
  26      const UPDATED = 'u';
  27      const LIFETIME = 'l';
  28  
  29      /**
  30       * @var string
  31       */
  32      private $name = '__metadata';
  33  
  34      /**
  35       * @var string
  36       */
  37      private $storageKey;
  38  
  39      /**
  40       * @var array
  41       */
  42      protected $meta = [self::CREATED => 0, self::UPDATED => 0, self::LIFETIME => 0];
  43  
  44      /**
  45       * Unix timestamp.
  46       *
  47       * @var int
  48       */
  49      private $lastUsed;
  50  
  51      /**
  52       * @var int
  53       */
  54      private $updateThreshold;
  55  
  56      /**
  57       * @param string $storageKey      The key used to store bag in the session
  58       * @param int    $updateThreshold The time to wait between two UPDATED updates
  59       */
  60      public function __construct($storageKey = '_sf2_meta', $updateThreshold = 0)
  61      {
  62          $this->storageKey = $storageKey;
  63          $this->updateThreshold = $updateThreshold;
  64      }
  65  
  66      /**
  67       * {@inheritdoc}
  68       */
  69      public function initialize(array &$array)
  70      {
  71          $this->meta = &$array;
  72  
  73          if (isset($array[self::CREATED])) {
  74              $this->lastUsed = $this->meta[self::UPDATED];
  75  
  76              $timeStamp = time();
  77              if ($timeStamp - $array[self::UPDATED] >= $this->updateThreshold) {
  78                  $this->meta[self::UPDATED] = $timeStamp;
  79              }
  80          } else {
  81              $this->stampCreated();
  82          }
  83      }
  84  
  85      /**
  86       * Gets the lifetime that the session cookie was set with.
  87       *
  88       * @return int
  89       */
  90      public function getLifetime()
  91      {
  92          return $this->meta[self::LIFETIME];
  93      }
  94  
  95      /**
  96       * Stamps a new session's metadata.
  97       *
  98       * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
  99       *                      will leave the system settings unchanged, 0 sets the cookie
 100       *                      to expire with browser session. Time is in seconds, and is
 101       *                      not a Unix timestamp.
 102       */
 103      public function stampNew($lifetime = null)
 104      {
 105          $this->stampCreated($lifetime);
 106      }
 107  
 108      /**
 109       * {@inheritdoc}
 110       */
 111      public function getStorageKey()
 112      {
 113          return $this->storageKey;
 114      }
 115  
 116      /**
 117       * Gets the created timestamp metadata.
 118       *
 119       * @return int Unix timestamp
 120       */
 121      public function getCreated()
 122      {
 123          return $this->meta[self::CREATED];
 124      }
 125  
 126      /**
 127       * Gets the last used metadata.
 128       *
 129       * @return int Unix timestamp
 130       */
 131      public function getLastUsed()
 132      {
 133          return $this->lastUsed;
 134      }
 135  
 136      /**
 137       * {@inheritdoc}
 138       */
 139      public function clear()
 140      {
 141          // nothing to do
 142      }
 143  
 144      /**
 145       * {@inheritdoc}
 146       */
 147      public function getName()
 148      {
 149          return $this->name;
 150      }
 151  
 152      /**
 153       * Sets name.
 154       *
 155       * @param string $name
 156       */
 157      public function setName($name)
 158      {
 159          $this->name = $name;
 160      }
 161  
 162      private function stampCreated($lifetime = null)
 163      {
 164          $timeStamp = time();
 165          $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
 166          $this->meta[self::LIFETIME] = (null === $lifetime) ? ini_get('session.cookie_lifetime') : $lifetime;
 167      }
 168  }


Generated: Sun Feb 14 20:08:31 2021 Cross-referenced by PHPXref 0.7.1