Author: romanb Date: 2008-09-12 11:55:06 +0100 (Fri, 12 Sep 2008) New Revision: 4932
Added: trunk/lib/Doctrine/Common/ trunk/lib/Doctrine/Common/EventManager.php trunk/lib/Doctrine/Common/EventSubscriber.php trunk/lib/Doctrine/Common/Events/ trunk/lib/Doctrine/Common/Events/Event.php Removed: trunk/lib/Doctrine/Event.php trunk/lib/Doctrine/EventManager.php Modified: trunk/lib/Doctrine/Connection.php trunk/lib/Doctrine/ConnectionFactory.php trunk/lib/Doctrine/EntityManager.php trunk/tests/lib/Doctrine_OrmTestSuite.php trunk/tests/lib/mocks/Doctrine_EntityManagerMock.php Log: moved event stuff Added: trunk/lib/Doctrine/Common/EventManager.php =================================================================== --- trunk/lib/Doctrine/Common/EventManager.php (rev 0) +++ trunk/lib/Doctrine/Common/EventManager.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -0,0 +1,116 @@ +<?php +/* + * $Id$ + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * and is licensed under the LGPL. For more information, see + * <http://www.phpdoctrine.org>. + */ + +#namespace Doctrine::Common; + +/** + * The EventManager is the central point of Doctrine's event listener system. + * Listeners are registered on the manager and events are dispatched through the + * manager. + * + * @author Roman Borschel <[EMAIL PROTECTED]> + * @author Guilherme Blanco <[EMAIL PROTECTED]> + * @since 2.0 + */ +class Doctrine_Common_EventManager +{ + /** + * Map of registered listeners. + * <event> => <listeners> + * + * @var array + */ + private $_listeners = array(); + + /** + * Dispatches an event to all registered listeners. + * + * @param string|Event $event The name of the event or the event object. + * @return boolean + */ + public function dispatchEvent($event) + { + $argIsCallback = is_string($event); + $callback = $argIsCallback ? $event : $event->getType(); + + if (isset($this->_listeners[$callback])) { + $event = $argIsCallback ? new Doctrine_Event($event) : $event; + foreach ($this->_listeners[$callback] as $listener) { + $listener->$callback($event); + } + return ! $event->getDefaultPrevented(); + } + return true; + } + + /** + * Gets the listeners of a specific event or all listeners. + * + * @param string $event The name of the event. + * @return + */ + public function getListeners($event = null) + { + return $event ? $this->_listeners[$event] : $this->_listeners; + } + + /** + * Checks whether an event has any registered listeners. + * + * @param string $event + * @return boolean + */ + public function hasListeners($event) + { + return isset($this->_listeners[$event]); + } + + /** + * Adds an event listener that listens on the specified events. + * + * @param string|array $events The event(s) to listen on. + * @param object $listener The listener object. + */ + public function addEventListener($events, $listener) + { + // TODO: maybe check for duplicate registrations? + if ( ! is_array($events)) { + $events = array($events); + } + + foreach ($events as $event) { + $this->_listeners[$event] = $listener; + } + } + + /** + * Adds an EventSubscriber. The subscriber is asked for all the events he is + * interested in and added as a listener for these events. + * + * @param Doctrine::Common::Event::EventSubscriber $subscriber The subscriber. + */ + public function addEventSubscriber(Doctrine_Common_EventSubscriber $subscriber) + { + $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber); + } +} + +?> \ No newline at end of file Added: trunk/lib/Doctrine/Common/EventSubscriber.php =================================================================== --- trunk/lib/Doctrine/Common/EventSubscriber.php (rev 0) +++ trunk/lib/Doctrine/Common/EventSubscriber.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -0,0 +1,39 @@ +<?php +/* + * $Id: EventListener.php 4653 2008-07-10 17:17:58Z romanb $ + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * and is licensed under the LGPL. For more information, see + * <http://www.phpdoctrine.org>. + */ + +#namespace Doctrine::Common; + +/** + * An EventSubscriber knows itself what events it is interested in. + * If an EventSubscriber is added to an EventManager, the manager invokes + * getSubscribedEvents() and registers the subscriber as a listener for all + * returned events. + * + * @author Roman Borschel <[EMAIL PROTECTED]> + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @link www.phpdoctrine.org + * @since 2.0 + * @version $Revision: 4653 $ + */ +interface Doctrine_Common_EventSubscriber +{ + public function getSubscribedEvents(); +} Added: trunk/lib/Doctrine/Common/Events/Event.php =================================================================== --- trunk/lib/Doctrine/Common/Events/Event.php (rev 0) +++ trunk/lib/Doctrine/Common/Events/Event.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -0,0 +1,78 @@ +<?php +/* + * $Id$ + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * and is licensed under the LGPL. For more information, see + * <http://www.phpdoctrine.org>. + */ + +#namespace Doctrine::Common::Events; + +/** + * Doctrine_Event + * + * @author Konsta Vesterinen <[EMAIL PROTECTED]> + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @package Doctrine + * @subpackage Event + * @link www.phpdoctrine.org + * @since 2.0 + * @version $Revision$ + */ +class Doctrine_Common_Events_Event +{ + /* Event callback constants */ + const preDelete = 'preDelete'; + const postDelete = 'postDelete'; + //...more + + + protected $_type; + protected $_target; + protected $_defaultPrevented; + + + public function __construct($type, $target = null) + { + $this->_type = $type; + $this->_target = $target; + $this->_defaultPrevented = false; + } + + + public function getType() + { + return $this->_type; + } + + + public function preventDefault() + { + $this->_defaultPrevented = true; + } + + + public function getDefaultPrevented() + { + return $this->_defaultPrevented; + } + + + public function getTarget() + { + return $this->_target; + } +} Modified: trunk/lib/Doctrine/Connection.php =================================================================== --- trunk/lib/Doctrine/Connection.php 2008-09-12 10:50:20 UTC (rev 4931) +++ trunk/lib/Doctrine/Connection.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -175,7 +175,7 @@ $this->_config = new Doctrine_Configuration(); } if ( ! $eventManager) { - $this->_eventManager = new Doctrine_EventManager(); + $this->_eventManager = new Doctrine_Common_EventManager(); } // create platform Modified: trunk/lib/Doctrine/ConnectionFactory.php =================================================================== --- trunk/lib/Doctrine/ConnectionFactory.php 2008-09-12 10:50:20 UTC (rev 4931) +++ trunk/lib/Doctrine/ConnectionFactory.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -59,14 +59,14 @@ * @return Connection */ public function createConnection(array $params, Doctrine_Configuration $config = null, - Doctrine_EventManager $eventManager = null) + Doctrine_Common_EventManager $eventManager = null) { // create default config and event manager, if not set if ( ! $config) { $config = new Doctrine_Configuration(); } if ( ! $eventManager) { - $eventManager = new Doctrine_EventManager(); + $eventManager = new Doctrine_Common_EventManager(); } // check for existing pdo object Modified: trunk/lib/Doctrine/EntityManager.php =================================================================== --- trunk/lib/Doctrine/EntityManager.php 2008-09-12 10:50:20 UTC (rev 4931) +++ trunk/lib/Doctrine/EntityManager.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -149,7 +149,7 @@ * @param string $name */ protected function __construct(Doctrine_Connection $conn, $name, Doctrine_Configuration $config, - Doctrine_EventManager $eventManager) + Doctrine_Common_EventManager $eventManager) { $this->_conn = $conn; $this->_name = $name; Deleted: trunk/lib/Doctrine/Event.php =================================================================== --- trunk/lib/Doctrine/Event.php 2008-09-12 10:50:20 UTC (rev 4931) +++ trunk/lib/Doctrine/Event.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -1,78 +0,0 @@ -<?php -/* - * $Id$ - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This software consists of voluntary contributions made by many individuals - * and is licensed under the LGPL. For more information, see - * <http://www.phpdoctrine.org>. - */ - -#namespace Doctrine::ORM::Events; - -/** - * Doctrine_Event - * - * @author Konsta Vesterinen <[EMAIL PROTECTED]> - * @license http://www.opensource.org/licenses/lgpl-license.php LGPL - * @package Doctrine - * @subpackage Event - * @link www.phpdoctrine.org - * @since 2.0 - * @version $Revision$ - */ -class Doctrine_Event -{ - /* Event callback constants */ - const preDelete = 'preDelete'; - const postDelete = 'postDelete'; - //...more - - - protected $_type; - protected $_target; - protected $_defaultPrevented; - - - public function __construct($type, $target = null) - { - $this->_type = $type; - $this->_target = $target; - $this->_defaultPrevented = false; - } - - - public function getType() - { - return $this->_type; - } - - - public function preventDefault() - { - $this->_defaultPrevented = true; - } - - - public function getDefaultPrevented() - { - return $this->_defaultPrevented; - } - - - public function getTarget() - { - return $this->_target; - } -} Deleted: trunk/lib/Doctrine/EventManager.php =================================================================== --- trunk/lib/Doctrine/EventManager.php 2008-09-12 10:50:20 UTC (rev 4931) +++ trunk/lib/Doctrine/EventManager.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -1,116 +0,0 @@ -<?php -/* - * $Id$ - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This software consists of voluntary contributions made by many individuals - * and is licensed under the LGPL. For more information, see - * <http://www.phpdoctrine.org>. - */ - -#namespace Doctrine::Common::Event; - -/** - * The EventManager is the central point of Doctrine's event listener system. - * Listeners are registered on the manager and events are dispatched through the - * manager. - * - * @author Roman Borschel <[EMAIL PROTECTED]> - * @author Guilherme Blanco <[EMAIL PROTECTED]> - * @since 2.0 - */ -class Doctrine_EventManager -{ - /** - * Map of registered listeners. - * <event> => <listeners> - * - * @var array - */ - private $_listeners = array(); - - /** - * Dispatches an event to all registered listeners. - * - * @param string|Event $event The name of the event or the event object. - * @return boolean - */ - public function dispatchEvent($event) - { - $argIsCallback = is_string($event); - $callback = $argIsCallback ? $event : $event->getType(); - - if (isset($this->_listeners[$callback])) { - $event = $argIsCallback ? new Doctrine_Event($event) : $event; - foreach ($this->_listeners[$callback] as $listener) { - $listener->$callback($event); - } - return ! $event->getDefaultPrevented(); - } - return true; - } - - /** - * Gets the listeners of a specific event or all listeners. - * - * @param string $event The name of the event. - * @return - */ - public function getListeners($event = null) - { - return $event ? $this->_listeners[$event] : $this->_listeners; - } - - /** - * Checks whether an event has any registered listeners. - * - * @param string $event - * @return boolean - */ - public function hasListeners($event) - { - return isset($this->_listeners[$event]); - } - - /** - * Adds an event listener that listens on the specified events. - * - * @param string|array $events The event(s) to listen on. - * @param object $listener The listener object. - */ - public function addEventListener($events, $listener) - { - // TODO: maybe check for duplicate registrations? - if ( ! is_array($events)) { - $events = array($events); - } - - foreach ($events as $event) { - $this->_listeners[$event] = $listener; - } - } - - /** - * Adds an EventSubscriber. The subscriber is asked for all the events he is - * interested in and added as a listener for these events. - * - * @param Doctrine::Common::Event::EventSubscriber $subscriber The subscriber. - */ - public function addEventSubscriber(Doctrine_EventSubscriber $subscriber) - { - $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber); - } -} - -?> \ No newline at end of file Modified: trunk/tests/lib/Doctrine_OrmTestSuite.php =================================================================== --- trunk/tests/lib/Doctrine_OrmTestSuite.php 2008-09-12 10:50:20 UTC (rev 4931) +++ trunk/tests/lib/Doctrine_OrmTestSuite.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -11,7 +11,7 @@ protected function setUp() { $config = new Doctrine_Configuration(); - $eventManager = new Doctrine_EventManager(); + $eventManager = new Doctrine_Common_EventManager(); $connectionOptions = array( 'driverClass' => 'Doctrine_ConnectionMock', 'user' => 'john', Modified: trunk/tests/lib/mocks/Doctrine_EntityManagerMock.php =================================================================== --- trunk/tests/lib/mocks/Doctrine_EntityManagerMock.php 2008-09-12 10:50:20 UTC (rev 4931) +++ trunk/tests/lib/mocks/Doctrine_EntityManagerMock.php 2008-09-12 10:55:06 UTC (rev 4932) @@ -34,13 +34,13 @@ * @return unknown */ public static function create($conn, $name, Doctrine_Configuration $config = null, - Doctrine_EventManager $eventManager = null) + Doctrine_Common_EventManager $eventManager = null) { if (is_null($config)) { $config = new Doctrine_Configuration(); } if (is_null($eventManager)) { - $eventManager = new Doctrine_EventManager(); + $eventManager = new Doctrine_Common_EventManager(); } return new Doctrine_EntityManagerMock($conn, $name, $config, $eventManager); --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "doctrine-svn" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.co.uk/group/doctrine-svn?hl=en-GB -~----------~----~----~----~------~----~------~--~---
