# Coverage for Doctrine_Record_Listener_Chain

Back to coverage report

1 | <?php
2 | /*
3 | * $Id$
4 | *
5 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16 | *
17 | * This software consists of voluntary contributions made by many individuals
18 | * and is licensed under the LGPL. For more information, see
19 | * <http://www.phpdoctrine.org>.
20 | */
21 | Doctrine::autoload('Doctrine_Access');
22 |
23 | /**
24 | * Doctrine_Record_Listener_Chain
25 | * this class represents a chain of different listeners,
26 | * useful for having multiple listeners listening the events at the same time
27 | *
28 | * @package Doctrine
29 | * @subpackage Record
30 | * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
31 | * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
32 | * @link www.phpdoctrine.org
33 | * @since 1.0
34 | * @version $Revision$
35 | */
36 | class Doctrine_Record_Listener_Chain extends Doctrine_Access implements Doctrine_Record_Listener_Interface
37 | {
38 | /**
39 | * @var array $listeners an array containing all listeners
40 | */
41 | protected $_listeners = array();
42 |
43 | /**
44 | * add
45 | * adds a listener to the chain of listeners
46 | *
47 | * @param object $listener
48 | * @param string $name
49 | * @return void
50 | */
51 | public function add($listener, $name = null)
52 | {
53 | if ( ! ($listener instanceof Doctrine_Record_Listener_Interface) &&
54 | ! ($listener instanceof Doctrine_Overloadable)) {
55 |
56 | throw new Doctrine_EventListener_Exception("Couldn't add eventlistener. Record listeners should implement either Doctrine_EventListener_Interface or Doctrine_Overloadable");
57 | }
58 | if ($name === null) {
59 | $this->_listeners[] = $listener;
60 | } else {
61 | $this->_listeners[$name] = $listener;
62 | }
63 | }
64 |
65 | /**
66 | * returns a Doctrine_Record_Listener on success
67 | * and null on failure
68 | *
69 | * @param mixed $key
70 | * @return mixed
71 | */
72 | public function get($key)
73 | {
74 | if ( ! isset($this->_listeners[$key])) {
75 | return null;
76 | }
77 | return $this->_listeners[$key];
78 | }
79 |
80 | /**
81 | * set
82 | *
83 | * @param mixed $key
84 | * @param Doctrine_Record_Listener $listener listener to be added
85 | * @return Doctrine_Record_Listener_Chain this object
86 | */
87 | public function set($key, Doctrine_EventListener $listener)
88 | {
89 | $this->_listeners[$key] = $listener;
90 | }
91 |
92 | public function preSerialize(Doctrine_Event $event)
93 | {
94 | foreach ($this->_listeners as $listener) {
95 | $listener->preSerialize($event);
96 | }
97 | }
98 |
99 | public function postSerialize(Doctrine_Event $event)
100 | {
101 | foreach ($this->_listeners as $listener) {
102 | $listener->preSerialize($event);
103 | }
104 | }
105 |
106 | public function preUnserialize(Doctrine_Event $event)
107 | {
108 | foreach ($this->_listeners as $listener) {
109 | $listener->preUnserialize($event);
110 | }
111 | }
112 |
113 | public function postUnserialize(Doctrine_Event $event)
114 | {
115 | foreach ($this->_listeners as $listener) {
116 | $listener->postUnserialize($event);
117 | }
118 | }
119 |
120 | public function preSave(Doctrine_Event $event)
121 | {
122 | foreach ($this->_listeners as $listener) {
123 | $listener->preSave($event);
124 | }
125 | }
126 |
127 | public function postSave(Doctrine_Event $event)
128 | {
129 | foreach ($this->_listeners as $listener) {
130 | $listener->postSave($event);
131 | }
132 | }
133 |
134 | public function preDelete(Doctrine_Event $event)
135 | {
136 | foreach ($this->_listeners as $listener) {
137 | $listener->preDelete($event);
138 | }
139 | }
140 |
141 | public function postDelete(Doctrine_Event $event)
142 | {
143 | foreach ($this->_listeners as $listener) {
144 | $listener->postDelete($event);
145 | }
146 | }
147 |
148 | public function preUpdate(Doctrine_Event $event)
149 | {
150 | foreach ($this->_listeners as $listener) {
151 | $listener->preUpdate($event);
152 | }
153 | }
154 |
155 | public function postUpdate(Doctrine_Event $event)
156 | {
157 | foreach ($this->_listeners as $listener) {
158 | $listener->postUpdate($event);
159 | }
160 | }
161 |
162 | public function preInsert(Doctrine_Event $event)
163 | {
164 | foreach ($this->_listeners as $listener) {
165 | $listener->preInsert($event);
166 | }
167 | }
168 |
169 | public function postInsert(Doctrine_Event $event)
170 | {
171 | foreach ($this->_listeners as $listener) {
172 | $listener->postInsert($event);
173 | }
174 | }
175 |
176 |
177 | public function preHydrate(Doctrine_Event $event)
178 | {
179 | foreach ($this->_listeners as $listener) {
180 | $listener->preHydrate($event);
181 | }
182 | }
183 | public function postHydrate(Doctrine_Event $event)
184 | {
185 | foreach ($this->_listeners as $listener) {
186 | $listener->postHydrate($event);
187 | }
188 | }
189 | }