comparison vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.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\Flash;
13
14 /**
15 * AutoExpireFlashBag flash message container.
16 *
17 * @author Drak <drak@zikula.org>
18 */
19 class AutoExpireFlashBag implements FlashBagInterface
20 {
21 private $name = 'flashes';
22
23 /**
24 * Flash messages.
25 *
26 * @var array
27 */
28 private $flashes = array('display' => array(), 'new' => array());
29
30 /**
31 * The storage key for flashes in the session.
32 *
33 * @var string
34 */
35 private $storageKey;
36
37 /**
38 * Constructor.
39 *
40 * @param string $storageKey The key used to store flashes in the session
41 */
42 public function __construct($storageKey = '_sf2_flashes')
43 {
44 $this->storageKey = $storageKey;
45 }
46
47 /**
48 * {@inheritdoc}
49 */
50 public function getName()
51 {
52 return $this->name;
53 }
54
55 public function setName($name)
56 {
57 $this->name = $name;
58 }
59
60 /**
61 * {@inheritdoc}
62 */
63 public function initialize(array &$flashes)
64 {
65 $this->flashes = &$flashes;
66
67 // The logic: messages from the last request will be stored in new, so we move them to previous
68 // This request we will show what is in 'display'. What is placed into 'new' this time round will
69 // be moved to display next time round.
70 $this->flashes['display'] = array_key_exists('new', $this->flashes) ? $this->flashes['new'] : array();
71 $this->flashes['new'] = array();
72 }
73
74 /**
75 * {@inheritdoc}
76 */
77 public function add($type, $message)
78 {
79 $this->flashes['new'][$type][] = $message;
80 }
81
82 /**
83 * {@inheritdoc}
84 */
85 public function peek($type, array $default = array())
86 {
87 return $this->has($type) ? $this->flashes['display'][$type] : $default;
88 }
89
90 /**
91 * {@inheritdoc}
92 */
93 public function peekAll()
94 {
95 return array_key_exists('display', $this->flashes) ? (array) $this->flashes['display'] : array();
96 }
97
98 /**
99 * {@inheritdoc}
100 */
101 public function get($type, array $default = array())
102 {
103 $return = $default;
104
105 if (!$this->has($type)) {
106 return $return;
107 }
108
109 if (isset($this->flashes['display'][$type])) {
110 $return = $this->flashes['display'][$type];
111 unset($this->flashes['display'][$type]);
112 }
113
114 return $return;
115 }
116
117 /**
118 * {@inheritdoc}
119 */
120 public function all()
121 {
122 $return = $this->flashes['display'];
123 $this->flashes = array('new' => array(), 'display' => array());
124
125 return $return;
126 }
127
128 /**
129 * {@inheritdoc}
130 */
131 public function setAll(array $messages)
132 {
133 $this->flashes['new'] = $messages;
134 }
135
136 /**
137 * {@inheritdoc}
138 */
139 public function set($type, $messages)
140 {
141 $this->flashes['new'][$type] = (array) $messages;
142 }
143
144 /**
145 * {@inheritdoc}
146 */
147 public function has($type)
148 {
149 return array_key_exists($type, $this->flashes['display']) && $this->flashes['display'][$type];
150 }
151
152 /**
153 * {@inheritdoc}
154 */
155 public function keys()
156 {
157 return array_keys($this->flashes['display']);
158 }
159
160 /**
161 * {@inheritdoc}
162 */
163 public function getStorageKey()
164 {
165 return $this->storageKey;
166 }
167
168 /**
169 * {@inheritdoc}
170 */
171 public function clear()
172 {
173 return $this->all();
174 }
175 }