13 * to license@zend.com so we can send you a copy immediately. |
13 * to license@zend.com so we can send you a copy immediately. |
14 * |
14 * |
15 * @category Zend |
15 * @category Zend |
16 * @package Zend_Controller |
16 * @package Zend_Controller |
17 * @subpackage Zend_Controller_Action_Helper |
17 * @subpackage Zend_Controller_Action_Helper |
18 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
18 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) |
19 * @license http://framework.zend.com/license/new-bsd New BSD License |
19 * @license http://framework.zend.com/license/new-bsd New BSD License |
20 */ |
20 */ |
21 |
21 |
22 /** |
22 /** |
23 * @see Zend_Session |
23 * @see Zend_Session |
34 * |
34 * |
35 * @uses Zend_Controller_Action_Helper_Abstract |
35 * @uses Zend_Controller_Action_Helper_Abstract |
36 * @category Zend |
36 * @category Zend |
37 * @package Zend_Controller |
37 * @package Zend_Controller |
38 * @subpackage Zend_Controller_Action_Helper |
38 * @subpackage Zend_Controller_Action_Helper |
39 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
39 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) |
40 * @license http://framework.zend.com/license/new-bsd New BSD License |
40 * @license http://framework.zend.com/license/new-bsd New BSD License |
41 * @version $Id: FlashMessenger.php 20096 2010-01-06 02:05:09Z bkarwin $ |
41 * @version $Id: FlashMessenger.php 24813 2012-05-22 16:49:24Z adamlundrigan $ |
42 */ |
42 */ |
43 class Zend_Controller_Action_Helper_FlashMessenger extends Zend_Controller_Action_Helper_Abstract implements IteratorAggregate, Countable |
43 class Zend_Controller_Action_Helper_FlashMessenger extends Zend_Controller_Action_Helper_Abstract implements IteratorAggregate, Countable |
44 { |
44 { |
45 /** |
45 /** |
46 * $_messages - Messages from previous request |
46 * $_messages - Messages from previous request |
110 public function setNamespace($namespace = 'default') |
110 public function setNamespace($namespace = 'default') |
111 { |
111 { |
112 $this->_namespace = $namespace; |
112 $this->_namespace = $namespace; |
113 return $this; |
113 return $this; |
114 } |
114 } |
|
115 |
|
116 /** |
|
117 * getNamespace() - return the current namepsace |
|
118 * |
|
119 * @return string |
|
120 */ |
|
121 public function getNamespace() |
|
122 { |
|
123 return $this->_namespace; |
|
124 } |
115 |
125 |
116 /** |
126 /** |
117 * resetNamespace() - reset the namespace to the default |
127 * resetNamespace() - reset the namespace to the default |
118 * |
128 * |
119 * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface |
129 * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface |
128 * addMessage() - Add a message to flash message |
138 * addMessage() - Add a message to flash message |
129 * |
139 * |
130 * @param string $message |
140 * @param string $message |
131 * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface |
141 * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface |
132 */ |
142 */ |
133 public function addMessage($message) |
143 public function addMessage($message, $namespace = null) |
134 { |
144 { |
|
145 if (!is_string($namespace) || $namespace == '') { |
|
146 $namespace = $this->getNamespace(); |
|
147 } |
|
148 |
135 if (self::$_messageAdded === false) { |
149 if (self::$_messageAdded === false) { |
136 self::$_session->setExpirationHops(1, null, true); |
150 self::$_session->setExpirationHops(1, null, true); |
137 } |
151 } |
138 |
152 |
139 if (!is_array(self::$_session->{$this->_namespace})) { |
153 if (!is_array(self::$_session->{$this->_namespace})) { |
140 self::$_session->{$this->_namespace} = array(); |
154 self::$_session->{$namespace} = array(); |
141 } |
155 } |
142 |
156 |
143 self::$_session->{$this->_namespace}[] = $message; |
157 self::$_session->{$namespace}[] = $message; |
|
158 self::$_messageAdded = true; |
144 |
159 |
145 return $this; |
160 return $this; |
146 } |
161 } |
147 |
162 |
148 /** |
163 /** |
149 * hasMessages() - Wether a specific namespace has messages |
164 * hasMessages() - Wether a specific namespace has messages |
150 * |
165 * |
151 * @return boolean |
166 * @return boolean |
152 */ |
167 */ |
153 public function hasMessages() |
168 public function hasMessages($namespace = null) |
154 { |
169 { |
155 return isset(self::$_messages[$this->_namespace]); |
170 if (!is_string($namespace) || $namespace == '') { |
|
171 $namespace = $this->getNamespace(); |
|
172 } |
|
173 |
|
174 return isset(self::$_messages[$namespace]); |
156 } |
175 } |
157 |
176 |
158 /** |
177 /** |
159 * getMessages() - Get messages from a specific namespace |
178 * getMessages() - Get messages from a specific namespace |
160 * |
179 * |
161 * @return array |
180 * @return array |
162 */ |
181 */ |
163 public function getMessages() |
182 public function getMessages($namespace = null) |
164 { |
183 { |
165 if ($this->hasMessages()) { |
184 if (!is_string($namespace) || $namespace == '') { |
166 return self::$_messages[$this->_namespace]; |
185 $namespace = $this->getNamespace(); |
|
186 } |
|
187 |
|
188 if ($this->hasMessages($namespace)) { |
|
189 return self::$_messages[$namespace]; |
167 } |
190 } |
168 |
191 |
169 return array(); |
192 return array(); |
170 } |
193 } |
171 |
194 |
172 /** |
195 /** |
173 * Clear all messages from the previous request & current namespace |
196 * Clear all messages from the previous request & current namespace |
174 * |
197 * |
175 * @return boolean True if messages were cleared, false if none existed |
198 * @return boolean True if messages were cleared, false if none existed |
176 */ |
199 */ |
177 public function clearMessages() |
200 public function clearMessages($namespace = null) |
178 { |
201 { |
179 if ($this->hasMessages()) { |
202 if (!is_string($namespace) || $namespace == '') { |
180 unset(self::$_messages[$this->_namespace]); |
203 $namespace = $this->getNamespace(); |
|
204 } |
|
205 |
|
206 if ($this->hasMessages($namespace)) { |
|
207 unset(self::$_messages[$namespace]); |
181 return true; |
208 return true; |
182 } |
209 } |
183 |
210 |
184 return false; |
211 return false; |
185 } |
212 } |
188 * hasCurrentMessages() - check to see if messages have been added to current |
215 * hasCurrentMessages() - check to see if messages have been added to current |
189 * namespace within this request |
216 * namespace within this request |
190 * |
217 * |
191 * @return boolean |
218 * @return boolean |
192 */ |
219 */ |
193 public function hasCurrentMessages() |
220 public function hasCurrentMessages($namespace = null) |
194 { |
221 { |
195 return isset(self::$_session->{$this->_namespace}); |
222 if (!is_string($namespace) || $namespace == '') { |
|
223 $namespace = $this->getNamespace(); |
|
224 } |
|
225 |
|
226 return isset(self::$_session->{$namespace}); |
196 } |
227 } |
197 |
228 |
198 /** |
229 /** |
199 * getCurrentMessages() - get messages that have been added to the current |
230 * getCurrentMessages() - get messages that have been added to the current |
200 * namespace within this request |
231 * namespace within this request |
201 * |
232 * |
202 * @return array |
233 * @return array |
203 */ |
234 */ |
204 public function getCurrentMessages() |
235 public function getCurrentMessages($namespace = null) |
205 { |
236 { |
|
237 if (!is_string($namespace) || $namespace == '') { |
|
238 $namespace = $this->getNamespace(); |
|
239 } |
|
240 |
|
241 if ($this->hasCurrentMessages($namespace)) { |
|
242 return self::$_session->{$namespace}; |
|
243 } |
|
244 |
|
245 return array(); |
|
246 } |
|
247 |
|
248 /** |
|
249 * clear messages from the current request & current namespace |
|
250 * |
|
251 * @return boolean |
|
252 */ |
|
253 public function clearCurrentMessages($namespace = null) |
|
254 { |
|
255 if (!is_string($namespace) || $namespace == '') { |
|
256 $namespace = $this->getNamespace(); |
|
257 } |
|
258 |
206 if ($this->hasCurrentMessages()) { |
259 if ($this->hasCurrentMessages()) { |
207 return self::$_session->{$this->_namespace}; |
260 unset(self::$_session->{$namespace}); |
208 } |
|
209 |
|
210 return array(); |
|
211 } |
|
212 |
|
213 /** |
|
214 * clear messages from the current request & current namespace |
|
215 * |
|
216 * @return boolean |
|
217 */ |
|
218 public function clearCurrentMessages() |
|
219 { |
|
220 if ($this->hasCurrentMessages()) { |
|
221 unset(self::$_session->{$this->_namespace}); |
|
222 return true; |
261 return true; |
223 } |
262 } |
224 |
263 |
225 return false; |
264 return false; |
226 } |
265 } |
228 /** |
267 /** |
229 * getIterator() - complete the IteratorAggregate interface, for iterating |
268 * getIterator() - complete the IteratorAggregate interface, for iterating |
230 * |
269 * |
231 * @return ArrayObject |
270 * @return ArrayObject |
232 */ |
271 */ |
233 public function getIterator() |
272 public function getIterator($namespace = null) |
234 { |
273 { |
235 if ($this->hasMessages()) { |
274 if (!is_string($namespace) || $namespace == '') { |
236 return new ArrayObject($this->getMessages()); |
275 $namespace = $this->getNamespace(); |
|
276 } |
|
277 |
|
278 if ($this->hasMessages($namespace)) { |
|
279 return new ArrayObject($this->getMessages($namespace)); |
237 } |
280 } |
238 |
281 |
239 return new ArrayObject(); |
282 return new ArrayObject(); |
240 } |
283 } |
241 |
284 |
242 /** |
285 /** |
243 * count() - Complete the countable interface |
286 * count() - Complete the countable interface |
244 * |
287 * |
245 * @return int |
288 * @return int |
246 */ |
289 */ |
247 public function count() |
290 public function count($namespace = null) |
248 { |
291 { |
249 if ($this->hasMessages()) { |
292 if (!is_string($namespace) || $namespace == '') { |
250 return count($this->getMessages()); |
293 $namespace = $this->getNamespace(); |
|
294 } |
|
295 |
|
296 if ($this->hasMessages($namespace)) { |
|
297 return count($this->getMessages($namespace)); |
251 } |
298 } |
252 |
299 |
253 return 0; |
300 return 0; |
254 } |
301 } |
255 |
302 |