annotate vendor/symfony/http-foundation/Session/Storage/MetadataBag.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
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@0 42 protected $meta = array(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 * Constructor.
Chris@0 58 *
Chris@0 59 * @param string $storageKey The key used to store bag in the session
Chris@0 60 * @param int $updateThreshold The time to wait between two UPDATED updates
Chris@0 61 */
Chris@0 62 public function __construct($storageKey = '_sf2_meta', $updateThreshold = 0)
Chris@0 63 {
Chris@0 64 $this->storageKey = $storageKey;
Chris@0 65 $this->updateThreshold = $updateThreshold;
Chris@0 66 }
Chris@0 67
Chris@0 68 /**
Chris@0 69 * {@inheritdoc}
Chris@0 70 */
Chris@0 71 public function initialize(array &$array)
Chris@0 72 {
Chris@0 73 $this->meta = &$array;
Chris@0 74
Chris@0 75 if (isset($array[self::CREATED])) {
Chris@0 76 $this->lastUsed = $this->meta[self::UPDATED];
Chris@0 77
Chris@0 78 $timeStamp = time();
Chris@0 79 if ($timeStamp - $array[self::UPDATED] >= $this->updateThreshold) {
Chris@0 80 $this->meta[self::UPDATED] = $timeStamp;
Chris@0 81 }
Chris@0 82 } else {
Chris@0 83 $this->stampCreated();
Chris@0 84 }
Chris@0 85 }
Chris@0 86
Chris@0 87 /**
Chris@0 88 * Gets the lifetime that the session cookie was set with.
Chris@0 89 *
Chris@0 90 * @return int
Chris@0 91 */
Chris@0 92 public function getLifetime()
Chris@0 93 {
Chris@0 94 return $this->meta[self::LIFETIME];
Chris@0 95 }
Chris@0 96
Chris@0 97 /**
Chris@0 98 * Stamps a new session's metadata.
Chris@0 99 *
Chris@0 100 * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
Chris@0 101 * will leave the system settings unchanged, 0 sets the cookie
Chris@0 102 * to expire with browser session. Time is in seconds, and is
Chris@0 103 * not a Unix timestamp.
Chris@0 104 */
Chris@0 105 public function stampNew($lifetime = null)
Chris@0 106 {
Chris@0 107 $this->stampCreated($lifetime);
Chris@0 108 }
Chris@0 109
Chris@0 110 /**
Chris@0 111 * {@inheritdoc}
Chris@0 112 */
Chris@0 113 public function getStorageKey()
Chris@0 114 {
Chris@0 115 return $this->storageKey;
Chris@0 116 }
Chris@0 117
Chris@0 118 /**
Chris@0 119 * Gets the created timestamp metadata.
Chris@0 120 *
Chris@0 121 * @return int Unix timestamp
Chris@0 122 */
Chris@0 123 public function getCreated()
Chris@0 124 {
Chris@0 125 return $this->meta[self::CREATED];
Chris@0 126 }
Chris@0 127
Chris@0 128 /**
Chris@0 129 * Gets the last used metadata.
Chris@0 130 *
Chris@0 131 * @return int Unix timestamp
Chris@0 132 */
Chris@0 133 public function getLastUsed()
Chris@0 134 {
Chris@0 135 return $this->lastUsed;
Chris@0 136 }
Chris@0 137
Chris@0 138 /**
Chris@0 139 * {@inheritdoc}
Chris@0 140 */
Chris@0 141 public function clear()
Chris@0 142 {
Chris@0 143 // nothing to do
Chris@0 144 }
Chris@0 145
Chris@0 146 /**
Chris@0 147 * {@inheritdoc}
Chris@0 148 */
Chris@0 149 public function getName()
Chris@0 150 {
Chris@0 151 return $this->name;
Chris@0 152 }
Chris@0 153
Chris@0 154 /**
Chris@0 155 * Sets name.
Chris@0 156 *
Chris@0 157 * @param string $name
Chris@0 158 */
Chris@0 159 public function setName($name)
Chris@0 160 {
Chris@0 161 $this->name = $name;
Chris@0 162 }
Chris@0 163
Chris@0 164 private function stampCreated($lifetime = null)
Chris@0 165 {
Chris@0 166 $timeStamp = time();
Chris@0 167 $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
Chris@0 168 $this->meta[self::LIFETIME] = (null === $lifetime) ? ini_get('session.cookie_lifetime') : $lifetime;
Chris@0 169 }
Chris@0 170 }