PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.0
GiveWP – Donation Plugin and Fundraising Platform v2.27.0
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / symfony / http-foundation / Session / Session.php
give / vendor / symfony / http-foundation / Session Last commit date
Attribute 4 years ago Flash 4 years ago Storage 4 years ago Session.php 4 years ago SessionBagInterface.php 4 years ago SessionBagProxy.php 4 years ago SessionInterface.php 4 years ago SessionUtils.php 4 years ago
Session.php
283 lines
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;
13
14 use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
15 use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface;
16 use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
17 use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
18 use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
19 use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
20
21 /**
22 * @author Fabien Potencier <fabien@symfony.com>
23 * @author Drak <drak@zikula.org>
24 */
25 class Session implements SessionInterface, \IteratorAggregate, \Countable
26 {
27 protected $storage;
28
29 private $flashName;
30 private $attributeName;
31 private $data = [];
32 private $usageIndex = 0;
33
34 /**
35 * @param SessionStorageInterface $storage A SessionStorageInterface instance
36 * @param AttributeBagInterface $attributes An AttributeBagInterface instance, (defaults null for default AttributeBag)
37 * @param FlashBagInterface $flashes A FlashBagInterface instance (defaults null for default FlashBag)
38 */
39 public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
40 {
41 $this->storage = $storage ?: new NativeSessionStorage();
42
43 $attributes = $attributes ?: new AttributeBag();
44 $this->attributeName = $attributes->getName();
45 $this->registerBag($attributes);
46
47 $flashes = $flashes ?: new FlashBag();
48 $this->flashName = $flashes->getName();
49 $this->registerBag($flashes);
50 }
51
52 /**
53 * {@inheritdoc}
54 */
55 public function start()
56 {
57 return $this->storage->start();
58 }
59
60 /**
61 * {@inheritdoc}
62 */
63 public function has($name)
64 {
65 return $this->getAttributeBag()->has($name);
66 }
67
68 /**
69 * {@inheritdoc}
70 */
71 public function get($name, $default = null)
72 {
73 return $this->getAttributeBag()->get($name, $default);
74 }
75
76 /**
77 * {@inheritdoc}
78 */
79 public function set($name, $value)
80 {
81 $this->getAttributeBag()->set($name, $value);
82 }
83
84 /**
85 * {@inheritdoc}
86 */
87 public function all()
88 {
89 return $this->getAttributeBag()->all();
90 }
91
92 /**
93 * {@inheritdoc}
94 */
95 public function replace(array $attributes)
96 {
97 $this->getAttributeBag()->replace($attributes);
98 }
99
100 /**
101 * {@inheritdoc}
102 */
103 public function remove($name)
104 {
105 return $this->getAttributeBag()->remove($name);
106 }
107
108 /**
109 * {@inheritdoc}
110 */
111 public function clear()
112 {
113 $this->getAttributeBag()->clear();
114 }
115
116 /**
117 * {@inheritdoc}
118 */
119 public function isStarted()
120 {
121 return $this->storage->isStarted();
122 }
123
124 /**
125 * Returns an iterator for attributes.
126 *
127 * @return \ArrayIterator An \ArrayIterator instance
128 */
129 public function getIterator()
130 {
131 return new \ArrayIterator($this->getAttributeBag()->all());
132 }
133
134 /**
135 * Returns the number of attributes.
136 *
137 * @return int The number of attributes
138 */
139 public function count()
140 {
141 return \count($this->getAttributeBag()->all());
142 }
143
144 /**
145 * @return int
146 *
147 * @internal
148 */
149 public function getUsageIndex()
150 {
151 return $this->usageIndex;
152 }
153
154 /**
155 * @return bool
156 *
157 * @internal
158 */
159 public function isEmpty()
160 {
161 if ($this->isStarted()) {
162 ++$this->usageIndex;
163 }
164 foreach ($this->data as &$data) {
165 if (!empty($data)) {
166 return false;
167 }
168 }
169
170 return true;
171 }
172
173 /**
174 * {@inheritdoc}
175 */
176 public function invalidate($lifetime = null)
177 {
178 $this->storage->clear();
179
180 return $this->migrate(true, $lifetime);
181 }
182
183 /**
184 * {@inheritdoc}
185 */
186 public function migrate($destroy = false, $lifetime = null)
187 {
188 return $this->storage->regenerate($destroy, $lifetime);
189 }
190
191 /**
192 * {@inheritdoc}
193 */
194 public function save()
195 {
196 $this->storage->save();
197 }
198
199 /**
200 * {@inheritdoc}
201 */
202 public function getId()
203 {
204 return $this->storage->getId();
205 }
206
207 /**
208 * {@inheritdoc}
209 */
210 public function setId($id)
211 {
212 if ($this->storage->getId() !== $id) {
213 $this->storage->setId($id);
214 }
215 }
216
217 /**
218 * {@inheritdoc}
219 */
220 public function getName()
221 {
222 return $this->storage->getName();
223 }
224
225 /**
226 * {@inheritdoc}
227 */
228 public function setName($name)
229 {
230 $this->storage->setName($name);
231 }
232
233 /**
234 * {@inheritdoc}
235 */
236 public function getMetadataBag()
237 {
238 ++$this->usageIndex;
239
240 return $this->storage->getMetadataBag();
241 }
242
243 /**
244 * {@inheritdoc}
245 */
246 public function registerBag(SessionBagInterface $bag)
247 {
248 $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->usageIndex));
249 }
250
251 /**
252 * {@inheritdoc}
253 */
254 public function getBag($name)
255 {
256 $bag = $this->storage->getBag($name);
257
258 return method_exists($bag, 'getBag') ? $bag->getBag() : $bag;
259 }
260
261 /**
262 * Gets the flashbag interface.
263 *
264 * @return FlashBagInterface
265 */
266 public function getFlashBag()
267 {
268 return $this->getBag($this->flashName);
269 }
270
271 /**
272 * Gets the attributebag interface.
273 *
274 * Note that this method was added to help with IDE autocompletion.
275 *
276 * @return AttributeBagInterface
277 */
278 private function getAttributeBag()
279 {
280 return $this->getBag($this->attributeName);
281 }
282 }
283