comparison vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents 4c8ae668cc8c
children 129ea1e6d783
comparison
equal deleted inserted replaced
13:5fb285c0d0e3 14:1fec387a4317
22 * 22 *
23 * @author Drak <drak@zikula.org> 23 * @author Drak <drak@zikula.org>
24 */ 24 */
25 class MockFileSessionStorage extends MockArraySessionStorage 25 class MockFileSessionStorage extends MockArraySessionStorage
26 { 26 {
27 /**
28 * @var string
29 */
30 private $savePath; 27 private $savePath;
31 28
32 /** 29 /**
33 * Constructor.
34 *
35 * @param string $savePath Path of directory to save session files 30 * @param string $savePath Path of directory to save session files
36 * @param string $name Session name 31 * @param string $name Session name
37 * @param MetadataBag $metaBag MetadataBag instance 32 * @param MetadataBag $metaBag MetadataBag instance
38 */ 33 */
39 public function __construct($savePath = null, $name = 'MOCKSESSID', MetadataBag $metaBag = null) 34 public function __construct($savePath = null, $name = 'MOCKSESSID', MetadataBag $metaBag = null)
94 { 89 {
95 if (!$this->started) { 90 if (!$this->started) {
96 throw new \RuntimeException('Trying to save a session that was not started yet or was already closed'); 91 throw new \RuntimeException('Trying to save a session that was not started yet or was already closed');
97 } 92 }
98 93
99 file_put_contents($this->getFilePath(), serialize($this->data)); 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 (array($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 }
100 114
101 // this is needed for Silex, where the session object is re-used across requests 115 // this is needed for Silex, where the session object is re-used across requests
102 // in functional tests. In Symfony, the container is rebooted, so we don't have 116 // in functional tests. In Symfony, the container is rebooted, so we don't have
103 // this issue 117 // this issue
104 $this->started = false; 118 $this->started = false;