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