PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.18.0
GiveWP – Donation Plugin and Fundraising Platform v4.18.0
4.18.0 4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 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 All 257 releases
give / vendor / vendor-prefixed / symfony / http-foundation / Session / Storage / MetadataBag.php

MetadataBag.php in GiveWP – Donation Plugin and Fundraising Platform 4.18.0, at vendor/vendor-prefixed/symfony/http-foundation/Session/Storage/MetadataBag.php

168 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <[email protected]>
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 Give\Vendors\Symfony\Component\HttpFoundation\Session\Storage;
13
14 use Give\Vendors\Symfony\Component\HttpFoundation\Session\SessionBagInterface;
15
16 /**
17 * Metadata container.
18 *
19 * Adds metadata to the session.
20 *
21 * @author Drak <[email protected]>
22 */
23 class MetadataBag implements SessionBagInterface
24 {
25 public const CREATED = 'c';
26 public const UPDATED = 'u';
27 public 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(string $storageKey = '_sf2_meta', int $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|null $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(?int $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 return null;
143 }
144
145 /**
146 * {@inheritdoc}
147 */
148 public function getName()
149 {
150 return $this->name;
151 }
152
153 /**
154 * Sets name.
155 */
156 public function setName(string $name)
157 {
158 $this->name = $name;
159 }
160
161 private function stampCreated(?int $lifetime = null): void
162 {
163 $timeStamp = time();
164 $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
165 $this->meta[self::LIFETIME] = $lifetime ?? (int) \ini_get('session.cookie_lifetime');
166 }
167 }
168