web/lib/Zend/Controller/Action/Helper/FlashMessenger.php
changeset 807 877f952ae2bd
parent 207 621fa6caec0c
child 1230 68c69c656a2c
equal deleted inserted replaced
805:5e7a0fedabdf 807:877f952ae2bd
    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 
   257      * Strategy pattern: proxy to addMessage()
   304      * Strategy pattern: proxy to addMessage()
   258      *
   305      *
   259      * @param  string $message
   306      * @param  string $message
   260      * @return void
   307      * @return void
   261      */
   308      */
   262     public function direct($message)
   309     public function direct($message, $namespace=NULL)
   263     {
   310     {
   264         return $this->addMessage($message);
   311         return $this->addMessage($message, $namespace);
   265     }
   312     }
   266 }
   313 }