1 : <?php
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 : require_once 'Zend/Mail/Storage/Exception.php';
24 :
25 :
26 :
27 :
28 :
29 :
30 : abstract class Zend_Mail_Storage_Abstract implements Countable, ArrayAccess, SeekableIterator
31 : {
32 :
33 :
34 :
35 : protected $_has = array('uniqueid' => false,
36 : 'delete' => false,
37 : 'create' => false,
38 : 'top' => false,
39 : 'fetchPart' => true);
40 :
41 :
42 :
43 :
44 : protected $_iterationPos = 0;
45 :
46 :
47 :
48 :
49 : protected $_iterationMax = null;
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 : public function __get($var)
64 : {
65 7 : if(strpos($var, 'has') === 0) {
66 6 : $var = strtolower(substr($var, 3));
67 6 : return isset($this->_has[$var]) ? $this->_has[$var] : null;
68 : }
69 :
70 1 : throw new Zend_Mail_Storage_Exception($var . ' not found');
71 : }
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 : public function getCapabilities()
80 : {
81 0 : return $this->_has;
82 : }
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 : abstract public function countMessages($flags = null);
94 :
95 :
96 :
97 :
98 :
99 :
100 :
101 :
102 : abstract public function getSize($id = 0);
103 :
104 :
105 :
106 :
107 :
108 :
109 :
110 :
111 : abstract public function getMessage($id);
112 :
113 :
114 : abstract public function getRaw($id, $part);
115 :
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 : abstract public function __construct($params);
124 :
125 :
126 :
127 :
128 :
129 : public function __destruct()
130 : {
131 63 : $this->close();
132 63 : }
133 :
134 :
135 :
136 :
137 :
138 :
139 : abstract public function close();
140 :
141 :
142 :
143 :
144 :
145 : abstract public function noop();
146 :
147 :
148 :
149 :
150 : abstract public function removeMessage($id);
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 : public function count()
160 : {
161 1 : return $this->countMessages();
162 : }
163 :
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 : public function offsetExists($id)
172 : {
173 : try {
174 2 : if ($this->getMessage($id)) {
175 1 : return true;
176 : }
177 1 : } catch(Zend_Mail_Storage_Exception $e) {}
178 :
179 1 : return false;
180 : }
181 :
182 :
183 :
184 :
185 :
186 :
187 :
188 :
189 : public function offsetGet($id)
190 : {
191 3 : return $this->getMessage($id);
192 : }
193 :
194 :
195 :
196 :
197 :
198 :
199 :
200 :
201 :
202 :
203 : public function offsetSet($id, $value)
204 : {
205 1 : throw new Zend_Mail_Storage_Exception('cannot write mail messages via array access');
206 : }
207 :
208 :
209 :
210 :
211 :
212 :
213 :
214 :
215 : public function offsetUnset($id)
216 : {
217 0 : return $this->removeMessage($id);
218 : }
219 :
220 :
221 :
222 :
223 :
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 : public function rewind()
232 : {
233 5 : $this->_iterationMax = $this->countMessages();
234 5 : $this->_iterationPos = 1;
235 5 : }
236 :
237 :
238 :
239 :
240 :
241 :
242 :
243 : public function current()
244 : {
245 5 : return $this->getMessage($this->_iterationPos);
246 : }
247 :
248 :
249 :
250 :
251 :
252 :
253 :
254 : public function key()
255 : {
256 5 : return $this->_iterationPos;
257 : }
258 :
259 :
260 :
261 :
262 :
263 :
264 :
265 : public function next()
266 : {
267 5 : ++$this->_iterationPos;
268 5 : }
269 :
270 :
271 :
272 :
273 :
274 :
275 :
276 : public function valid()
277 : {
278 5 : if($this->_iterationMax === null) {
279 0 : $this->_iterationMax = $this->countMessages();
280 0 : }
281 5 : return $this->_iterationPos && $this->_iterationPos <= $this->_iterationMax;
282 : }
283 :
284 :
285 :
286 :
287 :
288 :
289 :
290 :
291 : public function seek($pos)
292 : {
293 2 : if($this->_iterationMax === null) {
294 0 : $this->_iterationMax = $this->countMessages();
295 0 : }
296 :
297 2 : if ($pos > $this->_iterationMax) {
298 0 : throw new OutOfBoundsException('this position does not exist');
299 : }
300 2 : $this->_iterationPos = $pos;
301 2 : }
302 :
303 : }
304 :
|