annotate vendor/symfony/http-foundation/Session/Storage/MetadataBag.php @ 19:fa3358dc1485 tip

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