File indexing completed on 2024-12-22 05:36:38

0001 <?php
0002 /**
0003  * Zend Framework
0004  *
0005  * LICENSE
0006  *
0007  * This source file is subject to the new BSD license that is bundled
0008  * with this package in the file LICENSE.txt.
0009  * It is also available through the world-wide-web at this URL:
0010  * http://framework.zend.com/license/new-bsd
0011  * If you did not receive a copy of the license and are unable to
0012  * obtain it through the world-wide-web, please send an email
0013  * to license@zend.com so we can send you a copy immediately.
0014  *
0015  * @category   Zend
0016  * @package    Zend_EventManager
0017  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0018  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0019  */
0020 
0021 // require_once 'Zend/Stdlib/CallbackHandler.php';
0022 // require_once 'Zend/Stdlib/PriorityQueue.php';
0023 
0024 /**
0025  * Event manager: notification system
0026  *
0027  * Use the EventManager when you want to create a per-instance notification 
0028  * system for your objects.
0029  *
0030  * @category   Zend
0031  * @package    Zend_EventManager
0032  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0033  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0034  */
0035 class Zend_EventManager_GlobalEventManager
0036 {
0037     /**
0038      * @var Zend_EventManager_EventCollection
0039      */
0040     protected static $events;
0041 
0042     /**
0043      * Set the event collection on which this will operate
0044      * 
0045      * @param  null|Zend_EventManager_EventCollection $events 
0046      * @return void
0047      */
0048     public static function setEventCollection(Zend_EventManager_EventCollection $events = null)
0049     {
0050         self::$events = $events;
0051     }
0052 
0053     /**
0054      * Get event collection on which this operates
0055      *
0056      * @return Zend_EventManager_EventCollection
0057      */
0058     public static function getEventCollection()
0059     {
0060         if (null === self::$events) {
0061             self::setEventCollection(new Zend_EventManager_EventManager());
0062         }
0063         return self::$events;
0064     }
0065 
0066     /**
0067      * Trigger an event
0068      * 
0069      * @param  string $event 
0070      * @param  object|string $context 
0071      * @param  array|object $argv 
0072      * @return Zend_EventManager_ResponseCollection
0073      */
0074     public static function trigger($event, $context, $argv = array())
0075     {
0076         return self::getEventCollection()->trigger($event, $context, $argv);
0077     }
0078 
0079     /**
0080      * Trigger listeenrs until return value of one causes a callback to evaluate 
0081      * to true.
0082      * 
0083      * @param  string $event 
0084      * @param  string|object $context 
0085      * @param  array|object $argv 
0086      * @param  callback $callback 
0087      * @return Zend_EventManager_ResponseCollection
0088      */
0089     public static function triggerUntil($event, $context, $argv, $callback)
0090     {
0091         return self::getEventCollection()->triggerUntil($event, $context, $argv, $callback);
0092     }
0093 
0094     /**
0095      * Attach a listener to an event
0096      * 
0097      * @param  string $event 
0098      * @param  callback $callback 
0099      * @param  int $priority 
0100      * @return Zend_Stdlib_CallbackHandler
0101      */
0102     public static function attach($event, $callback, $priority = 1)
0103     {
0104         return self::getEventCollection()->attach($event, $callback, $priority);
0105     }
0106 
0107     /**
0108      * Detach a callback from a listener
0109      * 
0110      * @param  Zend_Stdlib_CallbackHandler $listener 
0111      * @return bool
0112      */
0113     public static function detach(Zend_Stdlib_CallbackHandler $listener)
0114     {
0115         return self::getEventCollection()->detach($listener);
0116     }
0117 
0118     /**
0119      * Retrieve list of events this object manages
0120      * 
0121      * @return array
0122      */
0123     public static function getEvents()
0124     {
0125         return self::getEventCollection()->getEvents();
0126     }
0127 
0128     /**
0129      * Retrieve all listeners for a given event
0130      * 
0131      * @param  string $event 
0132      * @return Zend_Stdlib_PriorityQueue|array
0133      */
0134     public static function getListeners($event)
0135     {
0136         return self::getEventCollection()->getListeners($event);
0137     }
0138 
0139     /**
0140      * Clear all listeners for a given event
0141      * 
0142      * @param  string $event 
0143      * @return void
0144      */
0145     public static function clearListeners($event)
0146     {
0147         return self::getEventCollection()->clearListeners($event);
0148     }
0149 }