PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.20.0
GiveWP – Donation Plugin and Fundraising Platform v2.20.0
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 / Storage / MockFileSessionStorage.php
give / vendor / symfony / http-foundation / Session / Storage Last commit date
Handler 4 years ago Proxy 4 years ago MetadataBag.php 4 years ago MockArraySessionStorage.php 4 years ago MockFileSessionStorage.php 4 years ago NativeSessionStorage.php 4 years ago PhpBridgeSessionStorage.php 4 years ago SessionStorageInterface.php 4 years ago
MockFileSessionStorage.php
153 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\Storage;
13
14 /**
15 * MockFileSessionStorage is used to mock sessions for
16 * functional testing when done in a single PHP process.
17 *
18 * No PHP session is actually started since a session can be initialized
19 * and shutdown only once per PHP execution cycle and this class does
20 * not pollute any session related globals, including session_*() functions
21 * or session.* PHP ini directives.
22 *
23 * @author Drak <drak@zikula.org>
24 */
25 class MockFileSessionStorage extends MockArraySessionStorage
26 {
27 private $savePath;
28
29 /**
30 * @param string $savePath Path of directory to save session files
31 * @param string $name Session name
32 * @param MetadataBag $metaBag MetadataBag instance
33 */
34 public function __construct($savePath = null, $name = 'MOCKSESSID', MetadataBag $metaBag = null)
35 {
36 if (null === $savePath) {
37 $savePath = sys_get_temp_dir();
38 }
39
40 if (!is_dir($savePath) && !@mkdir($savePath, 0777, true) && !is_dir($savePath)) {
41 throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $savePath));
42 }
43
44 $this->savePath = $savePath;
45
46 parent::__construct($name, $metaBag);
47 }
48
49 /**
50 * {@inheritdoc}
51 */
52 public function start()
53 {
54 if ($this->started) {
55 return true;
56 }
57
58 if (!$this->id) {
59 $this->id = $this->generateId();
60 }
61
62 $this->read();
63
64 $this->started = true;
65
66 return true;
67 }
68
69 /**
70 * {@inheritdoc}
71 */
72 public function regenerate($destroy = false, $lifetime = null)
73 {
74 if (!$this->started) {
75 $this->start();
76 }
77
78 if ($destroy) {
79 $this->destroy();
80 }
81
82 return parent::regenerate($destroy, $lifetime);
83 }
84
85 /**
86 * {@inheritdoc}
87 */
88 public function save()
89 {
90 if (!$this->started) {
91 throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.');
92 }
93
94 $data = $this->data;
95
96 foreach ($this->bags as $bag) {
97 if (empty($data[$key = $bag->getStorageKey()])) {
98 unset($data[$key]);
99 }
100 }
101 if ([$key = $this->metadataBag->getStorageKey()] === array_keys($data)) {
102 unset($data[$key]);
103 }
104
105 try {
106 if ($data) {
107 file_put_contents($this->getFilePath(), serialize($data));
108 } else {
109 $this->destroy();
110 }
111 } finally {
112 $this->data = $data;
113 }
114
115 // this is needed for Silex, where the session object is re-used across requests
116 // in functional tests. In Symfony, the container is rebooted, so we don't have
117 // this issue
118 $this->started = false;
119 }
120
121 /**
122 * Deletes a session from persistent storage.
123 * Deliberately leaves session data in memory intact.
124 */
125 private function destroy()
126 {
127 if (is_file($this->getFilePath())) {
128 unlink($this->getFilePath());
129 }
130 }
131
132 /**
133 * Calculate path to file.
134 *
135 * @return string File path
136 */
137 private function getFilePath()
138 {
139 return $this->savePath.'/'.$this->id.'.mocksess';
140 }
141
142 /**
143 * Reads session from storage and loads session.
144 */
145 private function read()
146 {
147 $filePath = $this->getFilePath();
148 $this->data = is_readable($filePath) && is_file($filePath) ? unserialize(file_get_contents($filePath)) : [];
149
150 $this->loadSession();
151 }
152 }
153