- Added namespace support finaly :-)
[activemongo.git] / tests / coverage / lib_Cache.php.html
blobfed480ced7fab561dff387a4f6920474ad8c3300
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3 <html lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
6 <title>ActiveMongo Tests</title>
7 <link rel="stylesheet" type="text/css" href="style.css">
8 <link rel="stylesheet" type="text/css" href="container.css">
9 <script type="text/javascript" src="yahoo-dom-event.js"></script>
10 <script type="text/javascript" src="container-min.js"></script>
11 </head>
13 <body class="yui-skin-sam">
14 <table width="100%" border="0" cellspacing="0" cellpadding="0">
15 <tr><td class="title">ActiveMongo Tests</td></tr>
16 <tr><td class="ruler"><img src="glass.png" width="3" height="3" alt=""></td></tr>
18 <tr>
19 <td width="100%">
20 <table cellpadding="1" border="0" width="100%">
21 <tr>
22 <td class="headerItem" width="20%">Current file:</td>
23 <td class="headerValue" width="80%"><a href="index.html">/home/crodas/projects/playground/ActiveMongo</a>/<a href="lib.html">lib</a>/<a href="lib_Cache.php.html">Cache.php</a></td>
24 </tr>
25 <tr>
26 <td class="legendItem" width="20%">Legend:</td>
27 <td class="legendValue" width="80%">
28 <span class="legendCov">executed</span>
29 <span class="legendNoCov">not executed</span>
30 <span class="legendDeadCode">dead code</span>
31 </td>
32 </tr>
33 </table>
34 </td>
35 </tr>
37 <tr>
38 <td class="ruler"><img src="glass.png" width="3" height="3" alt=""></td>
39 </tr>
40 </table>
42 <br />
44 <center>
45 <table width="90%" cellpadding="2" cellspacing="1" border="0">
46 <tr>
47 <td class="tableHead" width="30%">&nbsp;</td>
48 <td class="tableHead" colspan="9">Coverage</td>
49 </tr>
50 <tr>
51 <td class="tableHead">&nbsp;</td>
52 <td class="tableHead" colspan="3">Classes</td>
53 <td class="tableHead" colspan="3">Functions / Methods</td>
54 <td class="tableHead" colspan="3">Lines</td>
55 </tr>
56 <tr>
57 <td class="coverItem">Total</td>
58 <td class="coverBar" align="center" width="100">
59 <table border="0" cellspacing="0" cellpadding="1">
60 <tr>
61 <td class="coverBarOutline"><img src="scarlet_red.png" width="33" height="10" alt="33.33%"><img src="snow.png" width="67" height="10" alt="33.33%"></td>
62 </tr>
63 </table>
64 </td>
65 <td class="coverPerLo">33.33%</td>
66 <td class="coverNumLo">1 / 3</td>
67 <td class="coverBar" align="center" width="100">
68 <table border="0" cellspacing="0" cellpadding="1">
69 <tr>
70 <td class="coverBarOutline"><img src="butter.png" width="68" height="10" alt="68.00%"><img src="snow.png" width="32" height="10" alt="68.00%"></td>
71 </tr>
72 </table>
73 </td>
74 <td class="coverPerMed">68.00%</td>
75 <td class="coverNumMed">17 / 25</td>
76 <td class="coverBar" align="center" width="100">
77 <table border="0" cellspacing="0" cellpadding="1">
78 <tr>
79 <td class="coverBarOutline"><img src="chameleon.png" width="89" height="10" alt="89.26%"><img src="snow.png" width="11" height="10" alt="89.26%"></td>
80 </tr>
81 </table>
82 </td>
83 <td class="coverPerHi">89.26%</td>
84 <td class="coverNumHi">108 / 121</td>
85 </tr>
87 <tr>
88 <td class="tableHead" colspan="10">&nbsp;</td>
89 </tr>
90 <tr>
91 <td class="coverItem"><b><a href="#55">CacheCursor</a></b></td>
92 <td class="coverBar" align="center" width="100">
93 <table border="0" cellspacing="0" cellpadding="1">
94 <tr>
95 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
96 </tr>
97 </table>
98 </td>
99 <td class="coverPerLo">0.00%</td>
100 <td class="coverNumLo">0 / 1</td>
101 <td class="coverBar" align="center" width="100">
102 <table border="0" cellspacing="0" cellpadding="1">
103 <tr>
104 <td class="coverBarOutline"><img src="chameleon.png" width="88" height="10" alt="88.89%"><img src="snow.png" width="12" height="10" alt="88.89%"></td>
105 </tr>
106 </table>
107 </td>
108 <td class="coverPerHi">88.89%</td>
109 <td class="coverNumHi">8 / 9</td>
110 <td class="coverBar" align="center" width="100">
111 <table border="0" cellspacing="0" cellpadding="1">
112 <tr>
113 <td class="coverBarOutline"><img src="chameleon.png" width="94" height="10" alt="94.74%"><img src="snow.png" width="6" height="10" alt="94.74%"></td>
114 </tr>
115 </table>
116 </td>
117 <td class="coverPerHi">94.74%</td>
118 <td class="coverNumHi">18 / 19</td>
119 </tr>
121 <tr>
122 <td class="coverFile" colspan="4">&nbsp;<a href="#61">function __construct(Array $array)</a></td>
123 <td class="coverBar" align="center" width="100">
124 <table border="0" cellspacing="0" cellpadding="1">
125 <tr>
126 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
127 </tr>
128 </table>
129 </td>
130 <td class="coverPerHi">100.00%</td>
131 <td class="coverNumHi">1 / 1</td>
132 <td class="coverBar" align="center" width="100">
133 <table border="0" cellspacing="0" cellpadding="1">
134 <tr>
135 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
136 </tr>
137 </table>
138 </td>
139 <td class="coverPerHi">100.00%</td>
140 <td class="coverNumHi">4 / 4</td>
141 </tr>
143 <tr>
144 <td class="coverFile" colspan="4">&nbsp;<a href="#68">function reset()</a></td>
145 <td class="coverBar" align="center" width="100">
146 <table border="0" cellspacing="0" cellpadding="1">
147 <tr>
148 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
149 </tr>
150 </table>
151 </td>
152 <td class="coverPerHi">100.00%</td>
153 <td class="coverNumHi">1 / 1</td>
154 <td class="coverBar" align="center" width="100">
155 <table border="0" cellspacing="0" cellpadding="1">
156 <tr>
157 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
158 </tr>
159 </table>
160 </td>
161 <td class="coverPerHi">100.00%</td>
162 <td class="coverNumHi">2 / 2</td>
163 </tr>
165 <tr>
166 <td class="coverFile" colspan="4">&nbsp;<a href="#73">function key()</a></td>
167 <td class="coverBar" align="center" width="100">
168 <table border="0" cellspacing="0" cellpadding="1">
169 <tr>
170 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
171 </tr>
172 </table>
173 </td>
174 <td class="coverPerLo">0.00%</td>
175 <td class="coverNumLo">0 / 1</td>
176 <td class="coverBar" align="center" width="100">
177 <table border="0" cellspacing="0" cellpadding="1">
178 <tr>
179 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
180 </tr>
181 </table>
182 </td>
183 <td class="coverPerLo">0.00%</td>
184 <td class="coverNumLo">0 / 1</td>
185 </tr>
187 <tr>
188 <td class="coverFile" colspan="4">&nbsp;<a href="#78">function current()</a></td>
189 <td class="coverBar" align="center" width="100">
190 <table border="0" cellspacing="0" cellpadding="1">
191 <tr>
192 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
193 </tr>
194 </table>
195 </td>
196 <td class="coverPerHi">100.00%</td>
197 <td class="coverNumHi">1 / 1</td>
198 <td class="coverBar" align="center" width="100">
199 <table border="0" cellspacing="0" cellpadding="1">
200 <tr>
201 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
202 </tr>
203 </table>
204 </td>
205 <td class="coverPerHi">100.00%</td>
206 <td class="coverNumHi">3 / 3</td>
207 </tr>
209 <tr>
210 <td class="coverFile" colspan="4">&nbsp;<a href="#86">function next()</a></td>
211 <td class="coverBar" align="center" width="100">
212 <table border="0" cellspacing="0" cellpadding="1">
213 <tr>
214 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
215 </tr>
216 </table>
217 </td>
218 <td class="coverPerHi">100.00%</td>
219 <td class="coverNumHi">1 / 1</td>
220 <td class="coverBar" align="center" width="100">
221 <table border="0" cellspacing="0" cellpadding="1">
222 <tr>
223 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
224 </tr>
225 </table>
226 </td>
227 <td class="coverPerHi">100.00%</td>
228 <td class="coverNumHi">2 / 2</td>
229 </tr>
231 <tr>
232 <td class="coverFile" colspan="4">&nbsp;<a href="#91">function valid()</a></td>
233 <td class="coverBar" align="center" width="100">
234 <table border="0" cellspacing="0" cellpadding="1">
235 <tr>
236 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
237 </tr>
238 </table>
239 </td>
240 <td class="coverPerHi">100.00%</td>
241 <td class="coverNumHi">1 / 1</td>
242 <td class="coverBar" align="center" width="100">
243 <table border="0" cellspacing="0" cellpadding="1">
244 <tr>
245 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
246 </tr>
247 </table>
248 </td>
249 <td class="coverPerHi">100.00%</td>
250 <td class="coverNumHi">1 / 1</td>
251 </tr>
253 <tr>
254 <td class="coverFile" colspan="4">&nbsp;<a href="#96">function rewind()</a></td>
255 <td class="coverBar" align="center" width="100">
256 <table border="0" cellspacing="0" cellpadding="1">
257 <tr>
258 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
259 </tr>
260 </table>
261 </td>
262 <td class="coverPerHi">100.00%</td>
263 <td class="coverNumHi">1 / 1</td>
264 <td class="coverBar" align="center" width="100">
265 <table border="0" cellspacing="0" cellpadding="1">
266 <tr>
267 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
268 </tr>
269 </table>
270 </td>
271 <td class="coverPerHi">100.00%</td>
272 <td class="coverNumHi">3 / 3</td>
273 </tr>
275 <tr>
276 <td class="coverFile" colspan="4">&nbsp;<a href="#102">function getNext()</a></td>
277 <td class="coverBar" align="center" width="100">
278 <table border="0" cellspacing="0" cellpadding="1">
279 <tr>
280 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
281 </tr>
282 </table>
283 </td>
284 <td class="coverPerHi">100.00%</td>
285 <td class="coverNumHi">1 / 1</td>
286 <td class="coverBar" align="center" width="100">
287 <table border="0" cellspacing="0" cellpadding="1">
288 <tr>
289 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
290 </tr>
291 </table>
292 </td>
293 <td class="coverPerHi">100.00%</td>
294 <td class="coverNumHi">2 / 2</td>
295 </tr>
297 <tr>
298 <td class="coverFile" colspan="4">&nbsp;<a href="#108">function count()</a></td>
299 <td class="coverBar" align="center" width="100">
300 <table border="0" cellspacing="0" cellpadding="1">
301 <tr>
302 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
303 </tr>
304 </table>
305 </td>
306 <td class="coverPerHi">100.00%</td>
307 <td class="coverNumHi">1 / 1</td>
308 <td class="coverBar" align="center" width="100">
309 <table border="0" cellspacing="0" cellpadding="1">
310 <tr>
311 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
312 </tr>
313 </table>
314 </td>
315 <td class="coverPerHi">100.00%</td>
316 <td class="coverNumHi">1 / 1</td>
317 </tr>
319 <tr>
320 <td class="coverItem"><b><a href="#127">CacheDriver</a></b></td>
321 <td class="coverBar" align="center" width="100">
322 <table border="0" cellspacing="0" cellpadding="1">
323 <tr>
324 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
325 </tr>
326 </table>
327 </td>
328 <td class="coverPerHi">100.00%</td>
329 <td class="coverNumHi">1 / 1</td>
330 <td class="coverBar" align="center" width="100">
331 <table border="0" cellspacing="0" cellpadding="1">
332 <tr>
333 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
334 </tr>
335 </table>
336 </td>
337 <td class="coverPerHi">100.00%</td>
338 <td class="coverNumHi">4 / 4</td>
339 <td class="coverBar" align="center" width="100">
340 <table border="0" cellspacing="0" cellpadding="1">
341 <tr>
342 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
343 </tr>
344 </table>
345 </td>
346 <td class="coverPerHi">100.00%</td>
347 <td class="coverNumHi">15 / 15</td>
348 </tr>
350 <tr>
351 <td class="coverFile" colspan="4">&nbsp;<a href="#138">function serialize($object)</a></td>
352 <td class="coverBar" align="center" width="100">
353 <table border="0" cellspacing="0" cellpadding="1">
354 <tr>
355 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
356 </tr>
357 </table>
358 </td>
359 <td class="coverPerHi">100.00%</td>
360 <td class="coverNumHi">1 / 1</td>
361 <td class="coverBar" align="center" width="100">
362 <table border="0" cellspacing="0" cellpadding="1">
363 <tr>
364 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
365 </tr>
366 </table>
367 </td>
368 <td class="coverPerHi">100.00%</td>
369 <td class="coverNumHi">1 / 1</td>
370 </tr>
372 <tr>
373 <td class="coverFile" colspan="4">&nbsp;<a href="#150">function deserialize($string)</a></td>
374 <td class="coverBar" align="center" width="100">
375 <table border="0" cellspacing="0" cellpadding="1">
376 <tr>
377 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
378 </tr>
379 </table>
380 </td>
381 <td class="coverPerHi">100.00%</td>
382 <td class="coverNumHi">1 / 1</td>
383 <td class="coverBar" align="center" width="100">
384 <table border="0" cellspacing="0" cellpadding="1">
385 <tr>
386 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
387 </tr>
388 </table>
389 </td>
390 <td class="coverPerHi">100.00%</td>
391 <td class="coverNumHi">1 / 1</td>
392 </tr>
394 <tr>
395 <td class="coverFile" colspan="4">&nbsp;<a href="#170">function getMulti(Array $keys, Array &$objects)</a></td>
396 <td class="coverBar" align="center" width="100">
397 <table border="0" cellspacing="0" cellpadding="1">
398 <tr>
399 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
400 </tr>
401 </table>
402 </td>
403 <td class="coverPerHi">100.00%</td>
404 <td class="coverNumHi">1 / 1</td>
405 <td class="coverBar" align="center" width="100">
406 <table border="0" cellspacing="0" cellpadding="1">
407 <tr>
408 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
409 </tr>
410 </table>
411 </td>
412 <td class="coverPerHi">100.00%</td>
413 <td class="coverNumHi">6 / 6</td>
414 </tr>
416 <tr>
417 <td class="coverFile" colspan="4">&nbsp;<a href="#194">function setMulti(Array $objects, Array $ttl)</a></td>
418 <td class="coverBar" align="center" width="100">
419 <table border="0" cellspacing="0" cellpadding="1">
420 <tr>
421 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
422 </tr>
423 </table>
424 </td>
425 <td class="coverPerHi">100.00%</td>
426 <td class="coverNumHi">1 / 1</td>
427 <td class="coverBar" align="center" width="100">
428 <table border="0" cellspacing="0" cellpadding="1">
429 <tr>
430 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
431 </tr>
432 </table>
433 </td>
434 <td class="coverPerHi">100.00%</td>
435 <td class="coverNumHi">7 / 7</td>
436 </tr>
438 <tr>
439 <td class="coverItem"><b><a href="#230">ActiveMongo_Cache</a></b></td>
440 <td class="coverBar" align="center" width="100">
441 <table border="0" cellspacing="0" cellpadding="1">
442 <tr>
443 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
444 </tr>
445 </table>
446 </td>
447 <td class="coverPerLo">0.00%</td>
448 <td class="coverNumLo">0 / 1</td>
449 <td class="coverBar" align="center" width="100">
450 <table border="0" cellspacing="0" cellpadding="1">
451 <tr>
452 <td class="coverBarOutline"><img src="butter.png" width="41" height="10" alt="41.67%"><img src="snow.png" width="59" height="10" alt="41.67%"></td>
453 </tr>
454 </table>
455 </td>
456 <td class="coverPerMed">41.67%</td>
457 <td class="coverNumMed">5 / 12</td>
458 <td class="coverBar" align="center" width="100">
459 <table border="0" cellspacing="0" cellpadding="1">
460 <tr>
461 <td class="coverBarOutline"><img src="chameleon.png" width="86" height="10" alt="86.21%"><img src="snow.png" width="14" height="10" alt="86.21%"></td>
462 </tr>
463 </table>
464 </td>
465 <td class="coverPerHi">86.21%</td>
466 <td class="coverNumHi">75 / 87</td>
467 </tr>
469 <tr>
470 <td class="coverFile" colspan="4">&nbsp;<a href="#247">private function __construct()</a></td>
471 <td class="coverBar" align="center" width="100">
472 <table border="0" cellspacing="0" cellpadding="1">
473 <tr>
474 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
475 </tr>
476 </table>
477 </td>
478 <td class="coverPerHi">100.00%</td>
479 <td class="coverNumHi">1 / 1</td>
480 <td class="coverBar" align="center" width="100">
481 <table border="0" cellspacing="0" cellpadding="1">
482 <tr>
483 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
484 </tr>
485 </table>
486 </td>
487 <td class="coverPerHi">100.00%</td>
488 <td class="coverNumHi">5 / 5</td>
489 </tr>
491 <tr>
492 <td class="coverFile" colspan="4">&nbsp;<a href="#263">public static function Init()</a></td>
493 <td class="coverBar" align="center" width="100">
494 <table border="0" cellspacing="0" cellpadding="1">
495 <tr>
496 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
497 </tr>
498 </table>
499 </td>
500 <td class="coverPerHi">100.00%</td>
501 <td class="coverNumHi">1 / 1</td>
502 <td class="coverBar" align="center" width="100">
503 <table border="0" cellspacing="0" cellpadding="1">
504 <tr>
505 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
506 </tr>
507 </table>
508 </td>
509 <td class="coverPerHi">100.00%</td>
510 <td class="coverNumHi">4 / 4</td>
511 </tr>
513 <tr>
514 <td class="coverFile" colspan="4">&nbsp;<a href="#281">public static function setDriver(CacheDriver $driver)</a></td>
515 <td class="coverBar" align="center" width="100">
516 <table border="0" cellspacing="0" cellpadding="1">
517 <tr>
518 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
519 </tr>
520 </table>
521 </td>
522 <td class="coverPerHi">100.00%</td>
523 <td class="coverNumHi">1 / 1</td>
524 <td class="coverBar" align="center" width="100">
525 <table border="0" cellspacing="0" cellpadding="1">
526 <tr>
527 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
528 </tr>
529 </table>
530 </td>
531 <td class="coverPerHi">100.00%</td>
532 <td class="coverNumHi">3 / 3</td>
533 </tr>
535 <tr>
536 <td class="coverFile" colspan="4">&nbsp;<a href="#295">public static function enable()</a></td>
537 <td class="coverBar" align="center" width="100">
538 <table border="0" cellspacing="0" cellpadding="1">
539 <tr>
540 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
541 </tr>
542 </table>
543 </td>
544 <td class="coverPerLo">0.00%</td>
545 <td class="coverNumLo">0 / 1</td>
546 <td class="coverBar" align="center" width="100">
547 <table border="0" cellspacing="0" cellpadding="1">
548 <tr>
549 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
550 </tr>
551 </table>
552 </td>
553 <td class="coverPerLo">0.00%</td>
554 <td class="coverNumLo">0 / 3</td>
555 </tr>
557 <tr>
558 <td class="coverFile" colspan="4">&nbsp;<a href="#309">public static function disable()</a></td>
559 <td class="coverBar" align="center" width="100">
560 <table border="0" cellspacing="0" cellpadding="1">
561 <tr>
562 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
563 </tr>
564 </table>
565 </td>
566 <td class="coverPerLo">0.00%</td>
567 <td class="coverNumLo">0 / 1</td>
568 <td class="coverBar" align="center" width="100">
569 <table border="0" cellspacing="0" cellpadding="1">
570 <tr>
571 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
572 </tr>
573 </table>
574 </td>
575 <td class="coverPerLo">0.00%</td>
576 <td class="coverNumLo">0 / 3</td>
577 </tr>
579 <tr>
580 <td class="coverFile" colspan="4">&nbsp;<a href="#325">final protected function canUseCache($class)</a></td>
581 <td class="coverBar" align="center" width="100">
582 <table border="0" cellspacing="0" cellpadding="1">
583 <tr>
584 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
585 </tr>
586 </table>
587 </td>
588 <td class="coverPerLo">0.00%</td>
589 <td class="coverNumLo">0 / 1</td>
590 <td class="coverBar" align="center" width="100">
591 <table border="0" cellspacing="0" cellpadding="1">
592 <tr>
593 <td class="coverBarOutline"><img src="chameleon.png" width="75" height="10" alt="75.00%"><img src="snow.png" width="25" height="10" alt="75.00%"></td>
594 </tr>
595 </table>
596 </td>
597 <td class="coverPerHi">75.00%</td>
598 <td class="coverNumHi">3 / 4</td>
599 </tr>
601 <tr>
602 <td class="coverFile" colspan="4">&nbsp;<a href="#345">final protected function getQueryID($query_document)</a></td>
603 <td class="coverBar" align="center" width="100">
604 <table border="0" cellspacing="0" cellpadding="1">
605 <tr>
606 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
607 </tr>
608 </table>
609 </td>
610 <td class="coverPerHi">100.00%</td>
611 <td class="coverNumHi">1 / 1</td>
612 <td class="coverBar" align="center" width="100">
613 <table border="0" cellspacing="0" cellpadding="1">
614 <tr>
615 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
616 </tr>
617 </table>
618 </td>
619 <td class="coverPerHi">100.00%</td>
620 <td class="coverNumHi">2 / 2</td>
621 </tr>
623 <tr>
624 <td class="coverFile" colspan="4">&nbsp;<a href="#363">final static function deleteObject($id)</a></td>
625 <td class="coverBar" align="center" width="100">
626 <table border="0" cellspacing="0" cellpadding="1">
627 <tr>
628 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
629 </tr>
630 </table>
631 </td>
632 <td class="coverPerHi">100.00%</td>
633 <td class="coverNumHi">1 / 1</td>
634 <td class="coverBar" align="center" width="100">
635 <table border="0" cellspacing="0" cellpadding="1">
636 <tr>
637 <td class="coverBarOutline"><img src="chameleon.png" width="100" height="10" alt="100.00%"><img src="snow.png" width="0" height="10" alt="100.00%"></td>
638 </tr>
639 </table>
640 </td>
641 <td class="coverPerHi">100.00%</td>
642 <td class="coverNumHi">4 / 4</td>
643 </tr>
645 <tr>
646 <td class="coverFile" colspan="4">&nbsp;<a href="#380">final static function getObject($id)</a></td>
647 <td class="coverBar" align="center" width="100">
648 <table border="0" cellspacing="0" cellpadding="1">
649 <tr>
650 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
651 </tr>
652 </table>
653 </td>
654 <td class="coverPerLo">0.00%</td>
655 <td class="coverNumLo">0 / 1</td>
656 <td class="coverBar" align="center" width="100">
657 <table border="0" cellspacing="0" cellpadding="1">
658 <tr>
659 <td class="coverBarOutline"><img src="chameleon.png" width="85" height="10" alt="85.71%"><img src="snow.png" width="15" height="10" alt="85.71%"></td>
660 </tr>
661 </table>
662 </td>
663 <td class="coverPerHi">85.71%</td>
664 <td class="coverNumHi">6 / 7</td>
665 </tr>
667 <tr>
668 <td class="coverFile" colspan="4">&nbsp;<a href="#408">function QueryRead($class, $query_document, &$resultset, $use_cache=TRUE)</a></td>
669 <td class="coverBar" align="center" width="100">
670 <table border="0" cellspacing="0" cellpadding="1">
671 <tr>
672 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
673 </tr>
674 </table>
675 </td>
676 <td class="coverPerLo">0.00%</td>
677 <td class="coverNumLo">0 / 1</td>
678 <td class="coverBar" align="center" width="100">
679 <table border="0" cellspacing="0" cellpadding="1">
680 <tr>
681 <td class="coverBarOutline"><img src="chameleon.png" width="96" height="10" alt="96.55%"><img src="snow.png" width="4" height="10" alt="96.55%"></td>
682 </tr>
683 </table>
684 </td>
685 <td class="coverPerHi">96.55%</td>
686 <td class="coverNumHi">28 / 29</td>
687 </tr>
689 <tr>
690 <td class="coverFile" colspan="4">&nbsp;<a href="#468">function QuerySave($class, $query_document, $cursor)</a></td>
691 <td class="coverBar" align="center" width="100">
692 <table border="0" cellspacing="0" cellpadding="1">
693 <tr>
694 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
695 </tr>
696 </table>
697 </td>
698 <td class="coverPerLo">0.00%</td>
699 <td class="coverNumLo">0 / 1</td>
700 <td class="coverBar" align="center" width="100">
701 <table border="0" cellspacing="0" cellpadding="1">
702 <tr>
703 <td class="coverBarOutline"><img src="chameleon.png" width="92" height="10" alt="92.86%"><img src="snow.png" width="8" height="10" alt="92.86%"></td>
704 </tr>
705 </table>
706 </td>
707 <td class="coverPerHi">92.86%</td>
708 <td class="coverNumHi">13 / 14</td>
709 </tr>
711 <tr>
712 <td class="coverFile" colspan="4">&nbsp;<a href="#503">function UpdateDocumentHook($class, $document, $obj)</a></td>
713 <td class="coverBar" align="center" width="100">
714 <table border="0" cellspacing="0" cellpadding="1">
715 <tr>
716 <td class="coverBarOutline"><img src="scarlet_red.png" width="0" height="10" alt="0.00%"><img src="snow.png" width="100" height="10" alt="0.00%"></td>
717 </tr>
718 </table>
719 </td>
720 <td class="coverPerLo">0.00%</td>
721 <td class="coverNumLo">0 / 1</td>
722 <td class="coverBar" align="center" width="100">
723 <table border="0" cellspacing="0" cellpadding="1">
724 <tr>
725 <td class="coverBarOutline"><img src="chameleon.png" width="77" height="10" alt="77.78%"><img src="snow.png" width="23" height="10" alt="77.78%"></td>
726 </tr>
727 </table>
728 </td>
729 <td class="coverPerHi">77.78%</td>
730 <td class="coverNumHi">7 / 9</td>
731 </tr>
734 </table>
735 </center>
737 <br />
739 <table cellpadding="0" cellspacing="0" border="0">
740 <tr>
741 <td><br /></td>
742 </tr>
743 <tr>
744 <td>
745 <pre class="source">
746 <span class="lineNum" id="container1"><a name="1"></a><a href="#1" id="line1"> 1</a> </span> : &lt;?php
747 <span class="lineNum" id="container2"><a name="2"></a><a href="#2" id="line2"> 2</a> </span> : /*
748 <span class="lineNum" id="container3"><a name="3"></a><a href="#3" id="line3"> 3</a> </span> : +---------------------------------------------------------------------------------+
749 <span class="lineNum" id="container4"><a name="4"></a><a href="#4" id="line4"> 4</a> </span> : | Copyright (c) 2010 ActiveMongo |
750 <span class="lineNum" id="container5"><a name="5"></a><a href="#5" id="line5"> 5</a> </span> : +---------------------------------------------------------------------------------+
751 <span class="lineNum" id="container6"><a name="6"></a><a href="#6" id="line6"> 6</a> </span> : | Redistribution and use in source and binary forms, with or without |
752 <span class="lineNum" id="container7"><a name="7"></a><a href="#7" id="line7"> 7</a> </span> : | modification, are permitted provided that the following conditions are met: |
753 <span class="lineNum" id="container8"><a name="8"></a><a href="#8" id="line8"> 8</a> </span> : | 1. Redistributions of source code must retain the above copyright |
754 <span class="lineNum" id="container9"><a name="9"></a><a href="#9" id="line9"> 9</a> </span> : | notice, this list of conditions and the following disclaimer. |
755 <span class="lineNum" id="container10"><a name="10"></a><a href="#10" id="line10"> 10</a> </span> : | |
756 <span class="lineNum" id="container11"><a name="11"></a><a href="#11" id="line11"> 11</a> </span> : | 2. Redistributions in binary form must reproduce the above copyright |
757 <span class="lineNum" id="container12"><a name="12"></a><a href="#12" id="line12"> 12</a> </span> : | notice, this list of conditions and the following disclaimer in the |
758 <span class="lineNum" id="container13"><a name="13"></a><a href="#13" id="line13"> 13</a> </span> : | documentation and/or other materials provided with the distribution. |
759 <span class="lineNum" id="container14"><a name="14"></a><a href="#14" id="line14"> 14</a> </span> : | |
760 <span class="lineNum" id="container15"><a name="15"></a><a href="#15" id="line15"> 15</a> </span> : | 3. All advertising materials mentioning features or use of this software |
761 <span class="lineNum" id="container16"><a name="16"></a><a href="#16" id="line16"> 16</a> </span> : | must display the following acknowledgement: |
762 <span class="lineNum" id="container17"><a name="17"></a><a href="#17" id="line17"> 17</a> </span> : | This product includes software developed by César D. Rodas. |
763 <span class="lineNum" id="container18"><a name="18"></a><a href="#18" id="line18"> 18</a> </span> : | |
764 <span class="lineNum" id="container19"><a name="19"></a><a href="#19" id="line19"> 19</a> </span> : | 4. Neither the name of the César D. Rodas nor the |
765 <span class="lineNum" id="container20"><a name="20"></a><a href="#20" id="line20"> 20</a> </span> : | names of its contributors may be used to endorse or promote products |
766 <span class="lineNum" id="container21"><a name="21"></a><a href="#21" id="line21"> 21</a> </span> : | derived from this software without specific prior written permission. |
767 <span class="lineNum" id="container22"><a name="22"></a><a href="#22" id="line22"> 22</a> </span> : | |
768 <span class="lineNum" id="container23"><a name="23"></a><a href="#23" id="line23"> 23</a> </span> : | THIS SOFTWARE IS PROVIDED BY CÉSAR D. RODAS ''AS IS'' AND ANY |
769 <span class="lineNum" id="container24"><a name="24"></a><a href="#24" id="line24"> 24</a> </span> : | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
770 <span class="lineNum" id="container25"><a name="25"></a><a href="#25" id="line25"> 25</a> </span> : | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
771 <span class="lineNum" id="container26"><a name="26"></a><a href="#26" id="line26"> 26</a> </span> : | DISCLAIMED. IN NO EVENT SHALL CÉSAR D. RODAS BE LIABLE FOR ANY |
772 <span class="lineNum" id="container27"><a name="27"></a><a href="#27" id="line27"> 27</a> </span> : | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
773 <span class="lineNum" id="container28"><a name="28"></a><a href="#28" id="line28"> 28</a> </span> : | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
774 <span class="lineNum" id="container29"><a name="29"></a><a href="#29" id="line29"> 29</a> </span> : | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
775 <span class="lineNum" id="container30"><a name="30"></a><a href="#30" id="line30"> 30</a> </span> : | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
776 <span class="lineNum" id="container31"><a name="31"></a><a href="#31" id="line31"> 31</a> </span> : | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
777 <span class="lineNum" id="container32"><a name="32"></a><a href="#32" id="line32"> 32</a> </span> : | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE |
778 <span class="lineNum" id="container33"><a name="33"></a><a href="#33" id="line33"> 33</a> </span> : +---------------------------------------------------------------------------------+
779 <span class="lineNum" id="container34"><a name="34"></a><a href="#34" id="line34"> 34</a> </span> : | Authors: César Rodas &lt;crodas@php.net&gt; |
780 <span class="lineNum" id="container35"><a name="35"></a><a href="#35" id="line35"> 35</a> </span> : +---------------------------------------------------------------------------------+
781 <span class="lineNum" id="container36"><a name="36"></a><a href="#36" id="line36"> 36</a> </span> : */
782 <span class="lineNum" id="container37"><a name="37"></a><a href="#37" id="line37"> 37</a> </span> :
783 <span class="lineNum" id="container38"><a name="38"></a><a href="#38" id="line38"> 38</a> </span> : // class CursorCache {{{
784 <span class="lineNum" id="container39"><a name="39"></a><a href="#39" id="line39"> 39</a> </span> : /**
785 <span class="lineNum" id="container40"><a name="40"></a><a href="#40" id="line40"> 40</a> </span> : * Cursor used for cached items
786 <span class="lineNum" id="container41"><a name="41"></a><a href="#41" id="line41"> 41</a> </span> : *
787 <span class="lineNum" id="container42"><a name="42"></a><a href="#42" id="line42"> 42</a> </span> : * Hack for ActiveMongo, fake MongoCursor
788 <span class="lineNum" id="container43"><a name="43"></a><a href="#43" id="line43"> 43</a> </span> : * subclass that iterates in a given array.
789 <span class="lineNum" id="container44"><a name="44"></a><a href="#44" id="line44"> 44</a> </span> : *
790 <span class="lineNum" id="container45"><a name="45"></a><a href="#45" id="line45"> 45</a> </span> : * This avoid re-write the main iteration
791 <span class="lineNum" id="container46"><a name="46"></a><a href="#46" id="line46"> 46</a> </span> : * support at MongoDB, nevertheless this might
792 <span class="lineNum" id="container47"><a name="47"></a><a href="#47" id="line47"> 47</a> </span> : * be improved in the future.
793 <span class="lineNum" id="container48"><a name="48"></a><a href="#48" id="line48"> 48</a> </span> : *
794 <span class="lineNum" id="container49"><a name="49"></a><a href="#49" id="line49"> 49</a> </span> : * @author César D. Rodas &lt;crodas@php.net&gt;
795 <span class="lineNum" id="container50"><a name="50"></a><a href="#50" id="line50"> 50</a> </span> : * @license BSD License
796 <span class="lineNum" id="container51"><a name="51"></a><a href="#51" id="line51"> 51</a> </span> : * @package ActiveMongo
797 <span class="lineNum" id="container52"><a name="52"></a><a href="#52" id="line52"> 52</a> </span> : * @version 1.0
798 <span class="lineNum" id="container53"><a name="53"></a><a href="#53" id="line53"> 53</a> </span> : *
799 <span class="lineNum" id="container54"><a name="54"></a><a href="#54" id="line54"> 54</a> </span> : */
800 <span class="lineNum" id="container55"><a name="55"></a><a href="#55" id="line55"> 55</a> </span> : final class CacheCursor Extends MongoCursor
801 <span class="lineNum" id="container56"><a name="56"></a><a href="#56" id="line56"> 56</a> </span> : {
802 <span class="lineNum" id="container57"><a name="57"></a><a href="#57" id="line57"> 57</a> </span> : protected $var;
803 <span class="lineNum" id="container58"><a name="58"></a><a href="#58" id="line58"> 58</a> </span> : protected $size;
804 <span class="lineNum" id="container59"><a name="59"></a><a href="#59" id="line59"> 59</a> </span> : protected $pos;
805 <span class="lineNum" id="container60"><a name="60"></a><a href="#60" id="line60"> 60</a> </span> :
806 <span class="lineNum" id="container61"><a name="61"></a><a href="#61" id="line61"> 61</a> </span> : function __construct(Array $array)
807 <span class="lineNum" id="container62"><a name="62"></a><a href="#62" id="line62"> 62</a> </span> : {
808 <span class="lineNum" id="container63"><a name="63"></a><a href="#63" id="line63"> 63</a> </span><span class="lineCov"> 5 : $this-&gt;var = array_values($array); </span>
809 <span class="lineNum" id="container64"><a name="64"></a><a href="#64" id="line64"> 64</a> </span><span class="lineCov"> 5 : $this-&gt;size = count($array); </span>
810 <span class="lineNum" id="container65"><a name="65"></a><a href="#65" id="line65"> 65</a> </span><span class="lineCov"> 5 : $this-&gt;pos = 0; </span>
811 <span class="lineNum" id="container66"><a name="66"></a><a href="#66" id="line66"> 66</a> </span><span class="lineCov"> 5 : } </span>
812 <span class="lineNum" id="container67"><a name="67"></a><a href="#67" id="line67"> 67</a> </span> :
813 <span class="lineNum" id="container68"><a name="68"></a><a href="#68" id="line68"> 68</a> </span> : function reset()
814 <span class="lineNum" id="container69"><a name="69"></a><a href="#69" id="line69"> 69</a> </span> : {
815 <span class="lineNum" id="container70"><a name="70"></a><a href="#70" id="line70"> 70</a> </span><span class="lineCov"> 5 : $this-&gt;pos = -1; </span>
816 <span class="lineNum" id="container71"><a name="71"></a><a href="#71" id="line71"> 71</a> </span><span class="lineCov"> 5 : } </span>
817 <span class="lineNum" id="container72"><a name="72"></a><a href="#72" id="line72"> 72</a> </span> :
818 <span class="lineNum" id="container73"><a name="73"></a><a href="#73" id="line73"> 73</a> </span> : function key()
819 <span class="lineNum" id="container74"><a name="74"></a><a href="#74" id="line74"> 74</a> </span> : {
820 <span class="lineNum" id="container75"><a name="75"></a><a href="#75" id="line75"> 75</a> </span><span class="lineNoCov"> 0 : return (string)$this-&gt;var[$this-&gt;pos]['_id']; </span>
821 <span class="lineNum" id="container76"><a name="76"></a><a href="#76" id="line76"> 76</a> </span><span class="lineDeadCode"> : } </span>
822 <span class="lineNum" id="container77"><a name="77"></a><a href="#77" id="line77"> 77</a> </span> :
823 <span class="lineNum" id="container78"><a name="78"></a><a href="#78" id="line78"> 78</a> </span> : function current()
824 <span class="lineNum" id="container79"><a name="79"></a><a href="#79" id="line79"> 79</a> </span> : {
825 <span class="lineNum" id="container80"><a name="80"></a><a href="#80" id="line80"> 80</a> </span><span class="lineCov"> 1 : if (!$this-&gt;valid()) { </span>
826 <span class="lineNum" id="container81"><a name="81"></a><a href="#81" id="line81"> 81</a> </span><span class="lineCov"> 1 : return array(); </span>
827 <span class="lineNum" id="container82"><a name="82"></a><a href="#82" id="line82"> 82</a> </span><span class="lineDeadCode"> : } </span>
828 <span class="lineNum" id="container83"><a name="83"></a><a href="#83" id="line83"> 83</a> </span><span class="lineCov"> 1 : return $this-&gt;var[$this-&gt;pos]; </span>
829 <span class="lineNum" id="container84"><a name="84"></a><a href="#84" id="line84"> 84</a> </span><span class="lineDeadCode"> : } </span>
830 <span class="lineNum" id="container85"><a name="85"></a><a href="#85" id="line85"> 85</a> </span> :
831 <span class="lineNum" id="container86"><a name="86"></a><a href="#86" id="line86"> 86</a> </span> : function next()
832 <span class="lineNum" id="container87"><a name="87"></a><a href="#87" id="line87"> 87</a> </span> : {
833 <span class="lineNum" id="container88"><a name="88"></a><a href="#88" id="line88"> 88</a> </span><span class="lineCov"> 5 : ++$this-&gt;pos; </span>
834 <span class="lineNum" id="container89"><a name="89"></a><a href="#89" id="line89"> 89</a> </span><span class="lineCov"> 5 : } </span>
835 <span class="lineNum" id="container90"><a name="90"></a><a href="#90" id="line90"> 90</a> </span> :
836 <span class="lineNum" id="container91"><a name="91"></a><a href="#91" id="line91"> 91</a> </span> : function valid()
837 <span class="lineNum" id="container92"><a name="92"></a><a href="#92" id="line92"> 92</a> </span> : {
838 <span class="lineNum" id="container93"><a name="93"></a><a href="#93" id="line93"> 93</a> </span><span class="lineCov"> 3 : return isset($this-&gt;var[$this-&gt;pos]); </span>
839 <span class="lineNum" id="container94"><a name="94"></a><a href="#94" id="line94"> 94</a> </span><span class="lineDeadCode"> : } </span>
840 <span class="lineNum" id="container95"><a name="95"></a><a href="#95" id="line95"> 95</a> </span> :
841 <span class="lineNum" id="container96"><a name="96"></a><a href="#96" id="line96"> 96</a> </span> : function rewind()
842 <span class="lineNum" id="container97"><a name="97"></a><a href="#97" id="line97"> 97</a> </span> : {
843 <span class="lineNum" id="container98"><a name="98"></a><a href="#98" id="line98"> 98</a> </span><span class="lineCov"> 5 : $this-&gt;reset(); </span>
844 <span class="lineNum" id="container99"><a name="99"></a><a href="#99" id="line99"> 99</a> </span><span class="lineCov"> 5 : $this-&gt;next(); </span>
845 <span class="lineNum" id="container100"><a name="100"></a><a href="#100" id="line100"> 100</a> </span><span class="lineCov"> 5 : } </span>
846 <span class="lineNum" id="container101"><a name="101"></a><a href="#101" id="line101"> 101</a> </span> :
847 <span class="lineNum" id="container102"><a name="102"></a><a href="#102" id="line102"> 102</a> </span> : function getNext()
848 <span class="lineNum" id="container103"><a name="103"></a><a href="#103" id="line103"> 103</a> </span> : {
849 <span class="lineNum" id="container104"><a name="104"></a><a href="#104" id="line104"> 104</a> </span><span class="lineCov"> 5 : $this-&gt;rewind(); </span>
850 <span class="lineNum" id="container105"><a name="105"></a><a href="#105" id="line105"> 105</a> </span><span class="lineCov"> 5 : return $this-&gt;var[$this-&gt;pos]; </span>
851 <span class="lineNum" id="container106"><a name="106"></a><a href="#106" id="line106"> 106</a> </span><span class="lineDeadCode"> : } </span>
852 <span class="lineNum" id="container107"><a name="107"></a><a href="#107" id="line107"> 107</a> </span> :
853 <span class="lineNum" id="container108"><a name="108"></a><a href="#108" id="line108"> 108</a> </span> : function count()
854 <span class="lineNum" id="container109"><a name="109"></a><a href="#109" id="line109"> 109</a> </span> : {
855 <span class="lineNum" id="container110"><a name="110"></a><a href="#110" id="line110"> 110</a> </span><span class="lineCov"> 3 : return count($this-&gt;var); </span>
856 <span class="lineNum" id="container111"><a name="111"></a><a href="#111" id="line111"> 111</a> </span><span class="lineDeadCode"> : } </span>
857 <span class="lineNum" id="container112"><a name="112"></a><a href="#112" id="line112"> 112</a> </span> :
858 <span class="lineNum" id="container113"><a name="113"></a><a href="#113" id="line113"> 113</a> </span> : }
859 <span class="lineNum" id="container114"><a name="114"></a><a href="#114" id="line114"> 114</a> </span> : // }}}
860 <span class="lineNum" id="container115"><a name="115"></a><a href="#115" id="line115"> 115</a> </span> :
861 <span class="lineNum" id="container116"><a name="116"></a><a href="#116" id="line116"> 116</a> </span> : /**
862 <span class="lineNum" id="container117"><a name="117"></a><a href="#117" id="line117"> 117</a> </span> : * CacheDriver
863 <span class="lineNum" id="container118"><a name="118"></a><a href="#118" id="line118"> 118</a> </span> : *
864 <span class="lineNum" id="container119"><a name="119"></a><a href="#119" id="line119"> 119</a> </span> : * Cache base class, each driver must inherit
865 <span class="lineNum" id="container120"><a name="120"></a><a href="#120" id="line120"> 120</a> </span> : * this class, and must implement each method.
866 <span class="lineNum" id="container121"><a name="121"></a><a href="#121" id="line121"> 121</a> </span> : *
867 <span class="lineNum" id="container122"><a name="122"></a><a href="#122" id="line122"> 122</a> </span> : * @author César D. Rodas &lt;crodas@php.net&gt;
868 <span class="lineNum" id="container123"><a name="123"></a><a href="#123" id="line123"> 123</a> </span> : * @license BSD License
869 <span class="lineNum" id="container124"><a name="124"></a><a href="#124" id="line124"> 124</a> </span> : * @package ActiveMongo
870 <span class="lineNum" id="container125"><a name="125"></a><a href="#125" id="line125"> 125</a> </span> : * @version 1.0
871 <span class="lineNum" id="container126"><a name="126"></a><a href="#126" id="line126"> 126</a> </span> : */
872 <span class="lineNum" id="container127"><a name="127"></a><a href="#127" id="line127"> 127</a> </span> : abstract class CacheDriver
873 <span class="lineNum" id="container128"><a name="128"></a><a href="#128" id="line128"> 128</a> </span> : {
874 <span class="lineNum" id="container129"><a name="129"></a><a href="#129" id="line129"> 129</a> </span> :
875 <span class="lineNum" id="container130"><a name="130"></a><a href="#130" id="line130"> 130</a> </span> : // Serialization {{{
876 <span class="lineNum" id="container131"><a name="131"></a><a href="#131" id="line131"> 131</a> </span> : /**
877 <span class="lineNum" id="container132"><a name="132"></a><a href="#132" id="line132"> 132</a> </span> : * serialize -- by default with BSON
878 <span class="lineNum" id="container133"><a name="133"></a><a href="#133" id="line133"> 133</a> </span> : *
879 <span class="lineNum" id="container134"><a name="134"></a><a href="#134" id="line134"> 134</a> </span> : * @param object $object
880 <span class="lineNum" id="container135"><a name="135"></a><a href="#135" id="line135"> 135</a> </span> : *
881 <span class="lineNum" id="container136"><a name="136"></a><a href="#136" id="line136"> 136</a> </span> : * @return string
882 <span class="lineNum" id="container137"><a name="137"></a><a href="#137" id="line137"> 137</a> </span> : */
883 <span class="lineNum" id="container138"><a name="138"></a><a href="#138" id="line138"> 138</a> </span> : function serialize($object)
884 <span class="lineNum" id="container139"><a name="139"></a><a href="#139" id="line139"> 139</a> </span> : {
885 <span class="lineNum" id="container140"><a name="140"></a><a href="#140" id="line140"> 140</a> </span><span class="lineCov"> 5 : return bson_encode($object); </span>
886 <span class="lineNum" id="container141"><a name="141"></a><a href="#141" id="line141"> 141</a> </span><span class="lineDeadCode"> : } </span>
887 <span class="lineNum" id="container142"><a name="142"></a><a href="#142" id="line142"> 142</a> </span> :
888 <span class="lineNum" id="container143"><a name="143"></a><a href="#143" id="line143"> 143</a> </span> : /**
889 <span class="lineNum" id="container144"><a name="144"></a><a href="#144" id="line144"> 144</a> </span> : * deserialize -- by default with BSON
890 <span class="lineNum" id="container145"><a name="145"></a><a href="#145" id="line145"> 145</a> </span> : *
891 <span class="lineNum" id="container146"><a name="146"></a><a href="#146" id="line146"> 146</a> </span> : * @param string $string
892 <span class="lineNum" id="container147"><a name="147"></a><a href="#147" id="line147"> 147</a> </span> : *
893 <span class="lineNum" id="container148"><a name="148"></a><a href="#148" id="line148"> 148</a> </span> : * @return object
894 <span class="lineNum" id="container149"><a name="149"></a><a href="#149" id="line149"> 149</a> </span> : */
895 <span class="lineNum" id="container150"><a name="150"></a><a href="#150" id="line150"> 150</a> </span> : function deserialize($string)
896 <span class="lineNum" id="container151"><a name="151"></a><a href="#151" id="line151"> 151</a> </span> : {
897 <span class="lineNum" id="container152"><a name="152"></a><a href="#152" id="line152"> 152</a> </span><span class="lineCov"> 5 : return bson_decode($string); </span>
898 <span class="lineNum" id="container153"><a name="153"></a><a href="#153" id="line153"> 153</a> </span><span class="lineDeadCode"> : } </span>
899 <span class="lineNum" id="container154"><a name="154"></a><a href="#154" id="line154"> 154</a> </span> : // }}}
900 <span class="lineNum" id="container155"><a name="155"></a><a href="#155" id="line155"> 155</a> </span> :
901 <span class="lineNum" id="container156"><a name="156"></a><a href="#156" id="line156"> 156</a> </span> : // void getMulti (Array $keys, Array &amp;$objects) {{{
902 <span class="lineNum" id="container157"><a name="157"></a><a href="#157" id="line157"> 157</a> </span> : /**
903 <span class="lineNum" id="container158"><a name="158"></a><a href="#158" id="line158"> 158</a> </span> : * Simple but inneficient implementation of
904 <span class="lineNum" id="container159"><a name="159"></a><a href="#159" id="line159"> 159</a> </span> : * the getMulti. It retrieve multiple objects
905 <span class="lineNum" id="container160"><a name="160"></a><a href="#160" id="line160"> 160</a> </span> : * from the cache that matchs the array of keys.
906 <span class="lineNum" id="container161"><a name="161"></a><a href="#161" id="line161"> 161</a> </span> : *
907 <span class="lineNum" id="container162"><a name="162"></a><a href="#162" id="line162"> 162</a> </span> : * If the cache supports multiple
908 <span class="lineNum" id="container163"><a name="163"></a><a href="#163" id="line163"> 163</a> </span> : * get (as memcached does) it should be overrided.
909 <span class="lineNum" id="container164"><a name="164"></a><a href="#164" id="line164"> 164</a> </span> : *
910 <span class="lineNum" id="container165"><a name="165"></a><a href="#165" id="line165"> 165</a> </span> : *
911 <span class="lineNum" id="container166"><a name="166"></a><a href="#166" id="line166"> 166</a> </span> : * @param array $keys
912 <span class="lineNum" id="container167"><a name="167"></a><a href="#167" id="line167"> 167</a> </span> : * @param array &amp;$objects
913 <span class="lineNum" id="container168"><a name="168"></a><a href="#168" id="line168"> 168</a> </span> : *
914 <span class="lineNum" id="container169"><a name="169"></a><a href="#169" id="line169"> 169</a> </span> : */
915 <span class="lineNum" id="container170"><a name="170"></a><a href="#170" id="line170"> 170</a> </span> : function getMulti(Array $keys, Array &amp;$objects)
916 <span class="lineNum" id="container171"><a name="171"></a><a href="#171" id="line171"> 171</a> </span> : {
917 <span class="lineNum" id="container172"><a name="172"></a><a href="#172" id="line172"> 172</a> </span><span class="lineCov"> 5 : foreach ($keys as $key) { </span>
918 <span class="lineNum" id="container173"><a name="173"></a><a href="#173" id="line173"> 173</a> </span><span class="lineCov"> 5 : if ($this-&gt;get($key, $objects[$key]) === FALSE) { </span>
919 <span class="lineNum" id="container174"><a name="174"></a><a href="#174" id="line174"> 174</a> </span><span class="lineCov"> 1 : $objects[$key] = FALSE; </span>
920 <span class="lineNum" id="container175"><a name="175"></a><a href="#175" id="line175"> 175</a> </span><span class="lineCov"> 1 : } </span>
921 <span class="lineNum" id="container176"><a name="176"></a><a href="#176" id="line176"> 176</a> </span><span class="lineCov"> 5 : } </span>
922 <span class="lineNum" id="container177"><a name="177"></a><a href="#177" id="line177"> 177</a> </span><span class="lineCov"> 5 : } </span>
923 <span class="lineNum" id="container178"><a name="178"></a><a href="#178" id="line178"> 178</a> </span> : // }}}
924 <span class="lineNum" id="container179"><a name="179"></a><a href="#179" id="line179"> 179</a> </span> :
925 <span class="lineNum" id="container180"><a name="180"></a><a href="#180" id="line180"> 180</a> </span> : // setMulti(Array $objects, Array $ttl) {{{
926 <span class="lineNum" id="container181"><a name="181"></a><a href="#181" id="line181"> 181</a> </span> : /**
927 <span class="lineNum" id="container182"><a name="182"></a><a href="#182" id="line182"> 182</a> </span> : * Simple but inneficient implementation of the
928 <span class="lineNum" id="container183"><a name="183"></a><a href="#183" id="line183"> 183</a> </span> : * setMulti, it basically push a set of objects
929 <span class="lineNum" id="container184"><a name="184"></a><a href="#184" id="line184"> 184</a> </span> : * to the cache at once.
930 <span class="lineNum" id="container185"><a name="185"></a><a href="#185" id="line185"> 185</a> </span> : *
931 <span class="lineNum" id="container186"><a name="186"></a><a href="#186" id="line186"> 186</a> </span> : * If the cache driver support this operation,
932 <span class="lineNum" id="container187"><a name="187"></a><a href="#187" id="line187"> 187</a> </span> : * this method should be overrided.
933 <span class="lineNum" id="container188"><a name="188"></a><a href="#188" id="line188"> 188</a> </span> : *
934 <span class="lineNum" id="container189"><a name="189"></a><a href="#189" id="line189"> 189</a> </span> : * @param Array $objects
935 <span class="lineNum" id="container190"><a name="190"></a><a href="#190" id="line190"> 190</a> </span> : * @param Array $ttl
936 <span class="lineNum" id="container191"><a name="191"></a><a href="#191" id="line191"> 191</a> </span> : *
937 <span class="lineNum" id="container192"><a name="192"></a><a href="#192" id="line192"> 192</a> </span> : * @retun voie
938 <span class="lineNum" id="container193"><a name="193"></a><a href="#193" id="line193"> 193</a> </span> : */
939 <span class="lineNum" id="container194"><a name="194"></a><a href="#194" id="line194"> 194</a> </span> : function setMulti(Array $objects, Array $ttl)
940 <span class="lineNum" id="container195"><a name="195"></a><a href="#195" id="line195"> 195</a> </span> : {
941 <span class="lineNum" id="container196"><a name="196"></a><a href="#196" id="line196"> 196</a> </span><span class="lineCov"> 4 : foreach ($objects as $id =&gt; $value) { </span>
942 <span class="lineNum" id="container197"><a name="197"></a><a href="#197" id="line197"> 197</a> </span><span class="lineCov"> 4 : if (!isset($ttl[$id])) { </span>
943 <span class="lineNum" id="container198"><a name="198"></a><a href="#198" id="line198"> 198</a> </span><span class="lineCov"> 1 : $ttl[$id] = 3600; </span>
944 <span class="lineNum" id="container199"><a name="199"></a><a href="#199" id="line199"> 199</a> </span><span class="lineCov"> 1 : } </span>
945 <span class="lineNum" id="container200"><a name="200"></a><a href="#200" id="line200"> 200</a> </span><span class="lineCov"> 4 : $this-&gt;set($id, $value, $ttl[$id]); </span>
946 <span class="lineNum" id="container201"><a name="201"></a><a href="#201" id="line201"> 201</a> </span><span class="lineCov"> 4 : } </span>
947 <span class="lineNum" id="container202"><a name="202"></a><a href="#202" id="line202"> 202</a> </span><span class="lineCov"> 4 : } </span>
948 <span class="lineNum" id="container203"><a name="203"></a><a href="#203" id="line203"> 203</a> </span> : // }}}
949 <span class="lineNum" id="container204"><a name="204"></a><a href="#204" id="line204"> 204</a> </span> :
950 <span class="lineNum" id="container205"><a name="205"></a><a href="#205" id="line205"> 205</a> </span> : abstract function get($key, &amp;$object);
951 <span class="lineNum" id="container206"><a name="206"></a><a href="#206" id="line206"> 206</a> </span> :
952 <span class="lineNum" id="container207"><a name="207"></a><a href="#207" id="line207"> 207</a> </span> : abstract function set($key, $document, $ttl);
953 <span class="lineNum" id="container208"><a name="208"></a><a href="#208" id="line208"> 208</a> </span> :
954 <span class="lineNum" id="container209"><a name="209"></a><a href="#209" id="line209"> 209</a> </span> : abstract function delete(Array $key);
955 <span class="lineNum" id="container210"><a name="210"></a><a href="#210" id="line210"> 210</a> </span> :
956 <span class="lineNum" id="container211"><a name="211"></a><a href="#211" id="line211"> 211</a> </span> : }
957 <span class="lineNum" id="container212"><a name="212"></a><a href="#212" id="line212"> 212</a> </span> :
958 <span class="lineNum" id="container213"><a name="213"></a><a href="#213" id="line213"> 213</a> </span> : /**
959 <span class="lineNum" id="container214"><a name="214"></a><a href="#214" id="line214"> 214</a> </span> : * CacheDriver
960 <span class="lineNum" id="container215"><a name="215"></a><a href="#215" id="line215"> 215</a> </span> : *
961 <span class="lineNum" id="container216"><a name="216"></a><a href="#216" id="line216"> 216</a> </span> : * Plug-in which adds cache capabilities to all
962 <span class="lineNum" id="container217"><a name="217"></a><a href="#217" id="line217"> 217</a> </span> : * ActiveMongo objects. The cache could be enabled
963 <span class="lineNum" id="container218"><a name="218"></a><a href="#218" id="line218"> 218</a> </span> : * for all objects (by default disabled), or for specified
964 <span class="lineNum" id="container219"><a name="219"></a><a href="#219" id="line219"> 219</a> </span> : * objects which has the static property cacheable to TRUE.
965 <span class="lineNum" id="container220"><a name="220"></a><a href="#220" id="line220"> 220</a> </span> : *
966 <span class="lineNum" id="container221"><a name="221"></a><a href="#221" id="line221"> 221</a> </span> : * At query time is also posible to disable the cache, passing
967 <span class="lineNum" id="container222"><a name="222"></a><a href="#222" id="line222"> 222</a> </span> : * false to doQuery, also this method will override the cache
968 <span class="lineNum" id="container223"><a name="223"></a><a href="#223" id="line223"> 223</a> </span> : * values if the query can use cache.
969 <span class="lineNum" id="container224"><a name="224"></a><a href="#224" id="line224"> 224</a> </span> : *
970 <span class="lineNum" id="container225"><a name="225"></a><a href="#225" id="line225"> 225</a> </span> : * @author César D. Rodas &lt;crodas@php.net&gt;
971 <span class="lineNum" id="container226"><a name="226"></a><a href="#226" id="line226"> 226</a> </span> : * @license BSD License
972 <span class="lineNum" id="container227"><a name="227"></a><a href="#227" id="line227"> 227</a> </span> : * @package ActiveMongo
973 <span class="lineNum" id="container228"><a name="228"></a><a href="#228" id="line228"> 228</a> </span> : * @version 1.0
974 <span class="lineNum" id="container229"><a name="229"></a><a href="#229" id="line229"> 229</a> </span> : */
975 <span class="lineNum" id="container230"><a name="230"></a><a href="#230" id="line230"> 230</a> </span> : final class ActiveMongo_Cache
976 <span class="lineNum" id="container231"><a name="231"></a><a href="#231" id="line231"> 231</a> </span> : {
977 <span class="lineNum" id="container232"><a name="232"></a><a href="#232" id="line232"> 232</a> </span> : private static $instance;
978 <span class="lineNum" id="container233"><a name="233"></a><a href="#233" id="line233"> 233</a> </span> : private $enabled;
979 <span class="lineNum" id="container234"><a name="234"></a><a href="#234" id="line234"> 234</a> </span> : private $driver;
980 <span class="lineNum" id="container235"><a name="235"></a><a href="#235" id="line235"> 235</a> </span> :
981 <span class="lineNum" id="container236"><a name="236"></a><a href="#236" id="line236"> 236</a> </span> : // __construct() {{{
982 <span class="lineNum" id="container237"><a name="237"></a><a href="#237" id="line237"> 237</a> </span> : /**
983 <span class="lineNum" id="container238"><a name="238"></a><a href="#238" id="line238"> 238</a> </span> : * Class contructor
984 <span class="lineNum" id="container239"><a name="239"></a><a href="#239" id="line239"> 239</a> </span> : *
985 <span class="lineNum" id="container240"><a name="240"></a><a href="#240" id="line240"> 240</a> </span> : * This is class is private, so it can be contructed
986 <span class="lineNum" id="container241"><a name="241"></a><a href="#241" id="line241"> 241</a> </span> : * only using the singleton interfaz.
987 <span class="lineNum" id="container242"><a name="242"></a><a href="#242" id="line242"> 242</a> </span> : *
988 <span class="lineNum" id="container243"><a name="243"></a><a href="#243" id="line243"> 243</a> </span> : * This method also setup all needed hooks
989 <span class="lineNum" id="container244"><a name="244"></a><a href="#244" id="line244"> 244</a> </span> : *
990 <span class="lineNum" id="container245"><a name="245"></a><a href="#245" id="line245"> 245</a> </span> : * @return void
991 <span class="lineNum" id="container246"><a name="246"></a><a href="#246" id="line246"> 246</a> </span> : */
992 <span class="lineNum" id="container247"><a name="247"></a><a href="#247" id="line247"> 247</a> </span> : private function __construct()
993 <span class="lineNum" id="container248"><a name="248"></a><a href="#248" id="line248"> 248</a> </span> : {
994 <span class="lineNum" id="container249"><a name="249"></a><a href="#249" id="line249"> 249</a> </span><span class="lineCov"> 1 : ActiveMongo::addEvent('before_query', array($this, 'QueryRead')); </span>
995 <span class="lineNum" id="container250"><a name="250"></a><a href="#250" id="line250"> 250</a> </span><span class="lineCov"> 1 : ActiveMongo::addEvent('after_query', array($this, 'QuerySave')); </span>
996 <span class="lineNum" id="container251"><a name="251"></a><a href="#251" id="line251"> 251</a> </span><span class="lineCov"> 1 : ActiveMongo::addEvent('after_create', array($this, 'UpdateDocumentHook')); </span>
997 <span class="lineNum" id="container252"><a name="252"></a><a href="#252" id="line252"> 252</a> </span><span class="lineCov"> 1 : ActiveMongo::addEvent('after_update', array($this, 'UpdateDocumentHook')); </span>
998 <span class="lineNum" id="container253"><a name="253"></a><a href="#253" id="line253"> 253</a> </span><span class="lineCov"> 1 : } </span>
999 <span class="lineNum" id="container254"><a name="254"></a><a href="#254" id="line254"> 254</a> </span> : // }}}
1000 <span class="lineNum" id="container255"><a name="255"></a><a href="#255" id="line255"> 255</a> </span> :
1001 <span class="lineNum" id="container256"><a name="256"></a><a href="#256" id="line256"> 256</a> </span> : // Init() {{{
1002 <span class="lineNum" id="container257"><a name="257"></a><a href="#257" id="line257"> 257</a> </span> : /**
1003 <span class="lineNum" id="container258"><a name="258"></a><a href="#258" id="line258"> 258</a> </span> : * Initialize the Cache system, this is done
1004 <span class="lineNum" id="container259"><a name="259"></a><a href="#259" id="line259"> 259</a> </span> : * automatically.
1005 <span class="lineNum" id="container260"><a name="260"></a><a href="#260" id="line260"> 260</a> </span> : *
1006 <span class="lineNum" id="container261"><a name="261"></a><a href="#261" id="line261"> 261</a> </span> : * @return void
1007 <span class="lineNum" id="container262"><a name="262"></a><a href="#262" id="line262"> 262</a> </span> : */
1008 <span class="lineNum" id="container263"><a name="263"></a><a href="#263" id="line263"> 263</a> </span> : public static function Init()
1009 <span class="lineNum" id="container264"><a name="264"></a><a href="#264" id="line264"> 264</a> </span> : {
1010 <span class="lineNum" id="container265"><a name="265"></a><a href="#265" id="line265"> 265</a> </span><span class="lineCov"> 2 : if (self::$instance) { </span>
1011 <span class="lineNum" id="container266"><a name="266"></a><a href="#266" id="line266"> 266</a> </span><span class="lineCov"> 1 : return; </span>
1012 <span class="lineNum" id="container267"><a name="267"></a><a href="#267" id="line267"> 267</a> </span><span class="lineDeadCode"> : } </span>
1013 <span class="lineNum" id="container268"><a name="268"></a><a href="#268" id="line268"> 268</a> </span><span class="lineCov"> 1 : self::$instance = new ActiveMongo_Cache; </span>
1014 <span class="lineNum" id="container269"><a name="269"></a><a href="#269" id="line269"> 269</a> </span><span class="lineCov"> 1 : } </span>
1015 <span class="lineNum" id="container270"><a name="270"></a><a href="#270" id="line270"> 270</a> </span> : // }}}
1016 <span class="lineNum" id="container271"><a name="271"></a><a href="#271" id="line271"> 271</a> </span> :
1017 <span class="lineNum" id="container272"><a name="272"></a><a href="#272" id="line272"> 272</a> </span> : // setDriver(CacheDriver $driver) {{{
1018 <span class="lineNum" id="container273"><a name="273"></a><a href="#273" id="line273"> 273</a> </span> : /**
1019 <span class="lineNum" id="container274"><a name="274"></a><a href="#274" id="line274"> 274</a> </span> : * Set the CacheDriver object that will be used
1020 <span class="lineNum" id="container275"><a name="275"></a><a href="#275" id="line275"> 275</a> </span> : * to cache object, must be a sub-class of CacheDriver
1021 <span class="lineNum" id="container276"><a name="276"></a><a href="#276" id="line276"> 276</a> </span> : *
1022 <span class="lineNum" id="container277"><a name="277"></a><a href="#277" id="line277"> 277</a> </span> : * @param CacheDriver $driver
1023 <span class="lineNum" id="container278"><a name="278"></a><a href="#278" id="line278"> 278</a> </span> : *
1024 <span class="lineNum" id="container279"><a name="279"></a><a href="#279" id="line279"> 279</a> </span> : * @return void
1025 <span class="lineNum" id="container280"><a name="280"></a><a href="#280" id="line280"> 280</a> </span> : */
1026 <span class="lineNum" id="container281"><a name="281"></a><a href="#281" id="line281"> 281</a> </span> : public static function setDriver(CacheDriver $driver)
1027 <span class="lineNum" id="container282"><a name="282"></a><a href="#282" id="line282"> 282</a> </span> : {
1028 <span class="lineNum" id="container283"><a name="283"></a><a href="#283" id="line283"> 283</a> </span><span class="lineCov"> 1 : self::Init(); </span>
1029 <span class="lineNum" id="container284"><a name="284"></a><a href="#284" id="line284"> 284</a> </span><span class="lineCov"> 1 : self::$instance-&gt;driver = &amp;$driver; </span>
1030 <span class="lineNum" id="container285"><a name="285"></a><a href="#285" id="line285"> 285</a> </span><span class="lineCov"> 1 : } </span>
1031 <span class="lineNum" id="container286"><a name="286"></a><a href="#286" id="line286"> 286</a> </span> : // }}}
1032 <span class="lineNum" id="container287"><a name="287"></a><a href="#287" id="line287"> 287</a> </span> :
1033 <span class="lineNum" id="container288"><a name="288"></a><a href="#288" id="line288"> 288</a> </span> : // enable() {{{
1034 <span class="lineNum" id="container289"><a name="289"></a><a href="#289" id="line289"> 289</a> </span> : /**
1035 <span class="lineNum" id="container290"><a name="290"></a><a href="#290" id="line290"> 290</a> </span> : * Enable the cache for all classes, even those
1036 <span class="lineNum" id="container291"><a name="291"></a><a href="#291" id="line291"> 291</a> </span> : * which does not has the state property $cacheable
1037 <span class="lineNum" id="container292"><a name="292"></a><a href="#292" id="line292"> 292</a> </span> : *
1038 <span class="lineNum" id="container293"><a name="293"></a><a href="#293" id="line293"> 293</a> </span> : * @return void
1039 <span class="lineNum" id="container294"><a name="294"></a><a href="#294" id="line294"> 294</a> </span> : */
1040 <span class="lineNum" id="container295"><a name="295"></a><a href="#295" id="line295"> 295</a> </span> : public static function enable()
1041 <span class="lineNum" id="container296"><a name="296"></a><a href="#296" id="line296"> 296</a> </span> : {
1042 <span class="lineNum" id="container297"><a name="297"></a><a href="#297" id="line297"> 297</a> </span><span class="lineNoCov"> 0 : self::Init(); </span>
1043 <span class="lineNum" id="container298"><a name="298"></a><a href="#298" id="line298"> 298</a> </span><span class="lineNoCov"> 0 : self::$instance-&gt;enabled = TRUE; </span>
1044 <span class="lineNum" id="container299"><a name="299"></a><a href="#299" id="line299"> 299</a> </span><span class="lineNoCov"> 0 : } </span>
1045 <span class="lineNum" id="container300"><a name="300"></a><a href="#300" id="line300"> 300</a> </span> : // }}}
1046 <span class="lineNum" id="container301"><a name="301"></a><a href="#301" id="line301"> 301</a> </span> :
1047 <span class="lineNum" id="container302"><a name="302"></a><a href="#302" id="line302"> 302</a> </span> : // disable() {{{
1048 <span class="lineNum" id="container303"><a name="303"></a><a href="#303" id="line303"> 303</a> </span> : /**
1049 <span class="lineNum" id="container304"><a name="304"></a><a href="#304" id="line304"> 304</a> </span> : * Disable the cache for all classes, except those
1050 <span class="lineNum" id="container305"><a name="305"></a><a href="#305" id="line305"> 305</a> </span> : * which has the state property $cacheable =TRUE
1051 <span class="lineNum" id="container306"><a name="306"></a><a href="#306" id="line306"> 306</a> </span> : *
1052 <span class="lineNum" id="container307"><a name="307"></a><a href="#307" id="line307"> 307</a> </span> : * @return void
1053 <span class="lineNum" id="container308"><a name="308"></a><a href="#308" id="line308"> 308</a> </span> : */
1054 <span class="lineNum" id="container309"><a name="309"></a><a href="#309" id="line309"> 309</a> </span> : public static function disable()
1055 <span class="lineNum" id="container310"><a name="310"></a><a href="#310" id="line310"> 310</a> </span> : {
1056 <span class="lineNum" id="container311"><a name="311"></a><a href="#311" id="line311"> 311</a> </span><span class="lineNoCov"> 0 : self::Init(); </span>
1057 <span class="lineNum" id="container312"><a name="312"></a><a href="#312" id="line312"> 312</a> </span><span class="lineNoCov"> 0 : self::$instance-&gt;enabled = FALSE; </span>
1058 <span class="lineNum" id="container313"><a name="313"></a><a href="#313" id="line313"> 313</a> </span><span class="lineNoCov"> 0 : } </span>
1059 <span class="lineNum" id="container314"><a name="314"></a><a href="#314" id="line314"> 314</a> </span> : // }}}
1060 <span class="lineNum" id="container315"><a name="315"></a><a href="#315" id="line315"> 315</a> </span> :
1061 <span class="lineNum" id="container316"><a name="316"></a><a href="#316" id="line316"> 316</a> </span> : // canUseCache($class) {{{
1062 <span class="lineNum" id="container317"><a name="317"></a><a href="#317" id="line317"> 317</a> </span> : /**
1063 <span class="lineNum" id="container318"><a name="318"></a><a href="#318" id="line318"> 318</a> </span> : * Return TRUE is the current query
1064 <span class="lineNum" id="container319"><a name="319"></a><a href="#319" id="line319"> 319</a> </span> : * can use a cache.
1065 <span class="lineNum" id="container320"><a name="320"></a><a href="#320" id="line320"> 320</a> </span> : *
1066 <span class="lineNum" id="container321"><a name="321"></a><a href="#321" id="line321"> 321</a> </span> : * @param string $class Class name
1067 <span class="lineNum" id="container322"><a name="322"></a><a href="#322" id="line322"> 322</a> </span> : *
1068 <span class="lineNum" id="container323"><a name="323"></a><a href="#323" id="line323"> 323</a> </span> : * @return bool
1069 <span class="lineNum" id="container324"><a name="324"></a><a href="#324" id="line324"> 324</a> </span> : */
1070 <span class="lineNum" id="container325"><a name="325"></a><a href="#325" id="line325"> 325</a> </span> : final protected function canUseCache($class)
1071 <span class="lineNum" id="container326"><a name="326"></a><a href="#326" id="line326"> 326</a> </span> : {
1072 <span class="lineNum" id="container327"><a name="327"></a><a href="#327" id="line327"> 327</a> </span><span class="lineCov"> 5 : if (!$this-&gt;driver InstanceOf CacheDriver) { </span>
1073 <span class="lineNum" id="container328"><a name="328"></a><a href="#328" id="line328"> 328</a> </span><span class="lineNoCov"> 0 : return FALSE; </span>
1074 <span class="lineNum" id="container329"><a name="329"></a><a href="#329" id="line329"> 329</a> </span><span class="lineDeadCode"> : } </span>
1075 <span class="lineNum" id="container330"><a name="330"></a><a href="#330" id="line330"> 330</a> </span><span class="lineCov"> 5 : $enable = isset($class::$cacheable) ? $class::$cacheable : $this-&gt;enabled; </span>
1076 <span class="lineNum" id="container331"><a name="331"></a><a href="#331" id="line331"> 331</a> </span><span class="lineCov"> 5 : return $enable; </span>
1077 <span class="lineNum" id="container332"><a name="332"></a><a href="#332" id="line332"> 332</a> </span><span class="lineDeadCode"> : } </span>
1078 <span class="lineNum" id="container333"><a name="333"></a><a href="#333" id="line333"> 333</a> </span> : // }}}
1079 <span class="lineNum" id="container334"><a name="334"></a><a href="#334" id="line334"> 334</a> </span> :
1080 <span class="lineNum" id="container335"><a name="335"></a><a href="#335" id="line335"> 335</a> </span> : // getQueryID(Array $query_docuement) {{{
1081 <span class="lineNum" id="container336"><a name="336"></a><a href="#336" id="line336"> 336</a> </span> : /**
1082 <span class="lineNum" id="container337"><a name="337"></a><a href="#337" id="line337"> 337</a> </span> : * Get a ID from a given query, right now it is very
1083 <span class="lineNum" id="container338"><a name="338"></a><a href="#338" id="line338"> 338</a> </span> : * simple, it serialize the query document, it should
1084 <span class="lineNum" id="container339"><a name="339"></a><a href="#339" id="line339"> 339</a> </span> : * be improved to easily delete old queries
1085 <span class="lineNum" id="container340"><a name="340"></a><a href="#340" id="line340"> 340</a> </span> : *
1086 <span class="lineNum" id="container341"><a name="341"></a><a href="#341" id="line341"> 341</a> </span> : * @param array $query_document
1087 <span class="lineNum" id="container342"><a name="342"></a><a href="#342" id="line342"> 342</a> </span> : *
1088 <span class="lineNum" id="container343"><a name="343"></a><a href="#343" id="line343"> 343</a> </span> : * @return string
1089 <span class="lineNum" id="container344"><a name="344"></a><a href="#344" id="line344"> 344</a> </span> : */
1090 <span class="lineNum" id="container345"><a name="345"></a><a href="#345" id="line345"> 345</a> </span> : final protected function getQueryID($query_document)
1091 <span class="lineNum" id="container346"><a name="346"></a><a href="#346" id="line346"> 346</a> </span> : {
1092 <span class="lineNum" id="container347"><a name="347"></a><a href="#347" id="line347"> 347</a> </span> : /* TODO: Peform some sort of sorting */
1093 <span class="lineNum" id="container348"><a name="348"></a><a href="#348" id="line348"> 348</a> </span> : /* to treat queries with same parameters but */
1094 <span class="lineNum" id="container349"><a name="349"></a><a href="#349" id="line349"> 349</a> </span> : /* different order equal */
1095 <span class="lineNum" id="container350"><a name="350"></a><a href="#350" id="line350"> 350</a> </span> :
1096 <span class="lineNum" id="container351"><a name="351"></a><a href="#351" id="line351"> 351</a> </span><span class="lineCov"> 5 : $id = $this-&gt;driver-&gt;serialize($query_document); </span>
1097 <span class="lineNum" id="container352"><a name="352"></a><a href="#352" id="line352"> 352</a> </span> :
1098 <span class="lineNum" id="container353"><a name="353"></a><a href="#353" id="line353"> 353</a> </span><span class="lineCov"> 5 : return sha1($id); </span>
1099 <span class="lineNum" id="container354"><a name="354"></a><a href="#354" id="line354"> 354</a> </span><span class="lineDeadCode"> : } </span>
1100 <span class="lineNum" id="container355"><a name="355"></a><a href="#355" id="line355"> 355</a> </span> : // }}}
1101 <span class="lineNum" id="container356"><a name="356"></a><a href="#356" id="line356"> 356</a> </span> :
1102 <span class="lineNum" id="container357"><a name="357"></a><a href="#357" id="line357"> 357</a> </span> : // deleteObject($id) {{{
1103 <span class="lineNum" id="container358"><a name="358"></a><a href="#358" id="line358"> 358</a> </span> : /**
1104 <span class="lineNum" id="container359"><a name="359"></a><a href="#359" id="line359"> 359</a> </span> : * Delete an object from the cache by its $id
1105 <span class="lineNum" id="container360"><a name="360"></a><a href="#360" id="line360"> 360</a> </span> : *
1106 <span class="lineNum" id="container361"><a name="361"></a><a href="#361" id="line361"> 361</a> </span> : * @return void
1107 <span class="lineNum" id="container362"><a name="362"></a><a href="#362" id="line362"> 362</a> </span> : */
1108 <span class="lineNum" id="container363"><a name="363"></a><a href="#363" id="line363"> 363</a> </span> : final static function deleteObject($id)
1109 <span class="lineNum" id="container364"><a name="364"></a><a href="#364" id="line364"> 364</a> </span> : {
1110 <span class="lineNum" id="container365"><a name="365"></a><a href="#365" id="line365"> 365</a> </span><span class="lineCov"> 1 : self::Init(); </span>
1111 <span class="lineNum" id="container366"><a name="366"></a><a href="#366" id="line366"> 366</a> </span><span class="lineCov"> 1 : $self = self::$instance; </span>
1112 <span class="lineNum" id="container367"><a name="367"></a><a href="#367" id="line367"> 367</a> </span><span class="lineCov"> 1 : $self-&gt;driver-&gt;delete(array((string)$id)); </span>
1113 <span class="lineNum" id="container368"><a name="368"></a><a href="#368" id="line368"> 368</a> </span><span class="lineCov"> 1 : } </span>
1114 <span class="lineNum" id="container369"><a name="369"></a><a href="#369" id="line369"> 369</a> </span> : // }}}
1115 <span class="lineNum" id="container370"><a name="370"></a><a href="#370" id="line370"> 370</a> </span> :
1116 <span class="lineNum" id="container371"><a name="371"></a><a href="#371" id="line371"> 371</a> </span> : // mixed getObject($id) {{{
1117 <span class="lineNum" id="container372"><a name="372"></a><a href="#372" id="line372"> 372</a> </span> : /**
1118 <span class="lineNum" id="container373"><a name="373"></a><a href="#373" id="line373"> 373</a> </span> : * Return an object from the cache, if it doesn't
1119 <span class="lineNum" id="container374"><a name="374"></a><a href="#374" id="line374"> 374</a> </span> : * exists it would return FALSE
1120 <span class="lineNum" id="container375"><a name="375"></a><a href="#375" id="line375"> 375</a> </span> : *
1121 <span class="lineNum" id="container376"><a name="376"></a><a href="#376" id="line376"> 376</a> </span> : * @param mixed $id
1122 <span class="lineNum" id="container377"><a name="377"></a><a href="#377" id="line377"> 377</a> </span> : * @return mixed $object
1123 <span class="lineNum" id="container378"><a name="378"></a><a href="#378" id="line378"> 378</a> </span> : *
1124 <span class="lineNum" id="container379"><a name="379"></a><a href="#379" id="line379"> 379</a> </span> : */
1125 <span class="lineNum" id="container380"><a name="380"></a><a href="#380" id="line380"> 380</a> </span> : final static function getObject($id)
1126 <span class="lineNum" id="container381"><a name="381"></a><a href="#381" id="line381"> 381</a> </span> : {
1127 <span class="lineNum" id="container382"><a name="382"></a><a href="#382" id="line382"> 382</a> </span><span class="lineCov"> 1 : self::Init(); </span>
1128 <span class="lineNum" id="container383"><a name="383"></a><a href="#383" id="line383"> 383</a> </span><span class="lineCov"> 1 : $self = self::$instance; </span>
1129 <span class="lineNum" id="container384"><a name="384"></a><a href="#384" id="line384"> 384</a> </span><span class="lineCov"> 1 : if (!$self-&gt;driver) { </span>
1130 <span class="lineNum" id="container385"><a name="385"></a><a href="#385" id="line385"> 385</a> </span><span class="lineNoCov"> 0 : return FALSE; </span>
1131 <span class="lineNum" id="container386"><a name="386"></a><a href="#386" id="line386"> 386</a> </span><span class="lineDeadCode"> : } </span>
1132 <span class="lineNum" id="container387"><a name="387"></a><a href="#387" id="line387"> 387</a> </span><span class="lineCov"> 1 : $object = FALSE; </span>
1133 <span class="lineNum" id="container388"><a name="388"></a><a href="#388" id="line388"> 388</a> </span><span class="lineCov"> 1 : $self-&gt;driver-&gt;get((string)$id, $object); </span>
1134 <span class="lineNum" id="container389"><a name="389"></a><a href="#389" id="line389"> 389</a> </span> :
1135 <span class="lineNum" id="container390"><a name="390"></a><a href="#390" id="line390"> 390</a> </span><span class="lineCov"> 1 : return $object; </span>
1136 <span class="lineNum" id="container391"><a name="391"></a><a href="#391" id="line391"> 391</a> </span><span class="lineDeadCode"> : } </span>
1137 <span class="lineNum" id="container392"><a name="392"></a><a href="#392" id="line392"> 392</a> </span> : // }}}
1138 <span class="lineNum" id="container393"><a name="393"></a><a href="#393" id="line393"> 393</a> </span> :
1139 <span class="lineNum" id="container394"><a name="394"></a><a href="#394" id="line394"> 394</a> </span> : // QueryRead($class, $query_document, &amp;$resultset, $use_cache=TRUE){{{
1140 <span class="lineNum" id="container395"><a name="395"></a><a href="#395" id="line395"> 395</a> </span> : /**
1141 <span class="lineNum" id="container396"><a name="396"></a><a href="#396" id="line396"> 396</a> </span> : * Return the resultset for the current query from the cache if the
1142 <span class="lineNum" id="container397"><a name="397"></a><a href="#397" id="line397"> 397</a> </span> : * cache is enabled, if the current query can be cacheable and if
1143 <span class="lineNum" id="container398"><a name="398"></a><a href="#398" id="line398"> 398</a> </span> : * it already exists on cache.
1144 <span class="lineNum" id="container399"><a name="399"></a><a href="#399" id="line399"> 399</a> </span> : *
1145 <span class="lineNum" id="container400"><a name="400"></a><a href="#400" id="line400"> 400</a> </span> : * @param string $class Class name
1146 <span class="lineNum" id="container401"><a name="401"></a><a href="#401" id="line401"> 401</a> </span> : * @param array $query_document Query sent to mongodb
1147 <span class="lineNum" id="container402"><a name="402"></a><a href="#402" id="line402"> 402</a> </span> : * @param array &amp;$resultset The resultset
1148 <span class="lineNum" id="container403"><a name="403"></a><a href="#403" id="line403"> 403</a> </span> : * @param bool $use_cache True if cache can be used
1149 <span class="lineNum" id="container404"><a name="404"></a><a href="#404" id="line404"> 404</a> </span> : *
1150 <span class="lineNum" id="container405"><a name="405"></a><a href="#405" id="line405"> 405</a> </span> : *
1151 <span class="lineNum" id="container406"><a name="406"></a><a href="#406" id="line406"> 406</a> </span> : * @return mixed FALSE or NULL
1152 <span class="lineNum" id="container407"><a name="407"></a><a href="#407" id="line407"> 407</a> </span> : */
1153 <span class="lineNum" id="container408"><a name="408"></a><a href="#408" id="line408"> 408</a> </span> : function QueryRead($class, $query_document, &amp;$resultset, $use_cache=TRUE)
1154 <span class="lineNum" id="container409"><a name="409"></a><a href="#409" id="line409"> 409</a> </span> : {
1155 <span class="lineNum" id="container410"><a name="410"></a><a href="#410" id="line410"> 410</a> </span><span class="lineCov"> 5 : if (!$this-&gt;canUseCache($class) || !$use_cache) { </span>
1156 <span class="lineNum" id="container411"><a name="411"></a><a href="#411" id="line411"> 411</a> </span><span class="lineCov"> 2 : return; </span>
1157 <span class="lineNum" id="container412"><a name="412"></a><a href="#412" id="line412"> 412</a> </span><span class="lineDeadCode"> : } </span>
1158 <span class="lineNum" id="container413"><a name="413"></a><a href="#413" id="line413"> 413</a> </span> :
1159 <span class="lineNum" id="container414"><a name="414"></a><a href="#414" id="line414"> 414</a> </span><span class="lineCov"> 5 : $query_id = $this-&gt;getQueryID($query_document); </span>
1160 <span class="lineNum" id="container415"><a name="415"></a><a href="#415" id="line415"> 415</a> </span> :
1161 <span class="lineNum" id="container416"><a name="416"></a><a href="#416" id="line416"> 416</a> </span><span class="lineCov"> 5 : if ($this-&gt;driver-&gt;get($query_id, $query_result) === FALSE) { </span>
1162 <span class="lineNum" id="container417"><a name="417"></a><a href="#417" id="line417"> 417</a> </span><span class="lineCov"> 2 : return; </span>
1163 <span class="lineNum" id="container418"><a name="418"></a><a href="#418" id="line418"> 418</a> </span><span class="lineDeadCode"> : } </span>
1164 <span class="lineNum" id="container419"><a name="419"></a><a href="#419" id="line419"> 419</a> </span> :
1165 <span class="lineNum" id="container420"><a name="420"></a><a href="#420" id="line420"> 420</a> </span><span class="lineCov"> 5 : if (!is_array($query_result) || count($query_result) == 0) { </span>
1166 <span class="lineNum" id="container421"><a name="421"></a><a href="#421" id="line421"> 421</a> </span><span class="lineNoCov"> 0 : return; </span>
1167 <span class="lineNum" id="container422"><a name="422"></a><a href="#422" id="line422"> 422</a> </span><span class="lineDeadCode"> : } </span>
1168 <span class="lineNum" id="container423"><a name="423"></a><a href="#423" id="line423"> 423</a> </span> :
1169 <span class="lineNum" id="container424"><a name="424"></a><a href="#424" id="line424"> 424</a> </span><span class="lineCov"> 5 : $toquery = array(); </span>
1170 <span class="lineNum" id="container425"><a name="425"></a><a href="#425" id="line425"> 425</a> </span><span class="lineCov"> 5 : $result = array(); </span>
1171 <span class="lineNum" id="container426"><a name="426"></a><a href="#426" id="line426"> 426</a> </span> :
1172 <span class="lineNum" id="container427"><a name="427"></a><a href="#427" id="line427"> 427</a> </span><span class="lineCov"> 5 : $cache_ids = array_combine(array_keys($query_result), array_keys($query_result));</span>
1173 <span class="lineNum" id="container428"><a name="428"></a><a href="#428" id="line428"> 428</a> </span><span class="lineCov"> 5 : $this-&gt;driver-&gt;getMulti($cache_ids, $result); </span>
1174 <span class="lineNum" id="container429"><a name="429"></a><a href="#429" id="line429"> 429</a> </span> :
1175 <span class="lineNum" id="container430"><a name="430"></a><a href="#430" id="line430"> 430</a> </span><span class="lineCov"> 5 : foreach ($result as $id =&gt; $doc) { </span>
1176 <span class="lineNum" id="container431"><a name="431"></a><a href="#431" id="line431"> 431</a> </span><span class="lineCov"> 5 : if (!is_array($doc)) { </span>
1177 <span class="lineNum" id="container432"><a name="432"></a><a href="#432" id="line432"> 432</a> </span><span class="lineCov"> 1 : $toquery[$id] = $query_result[$id]; </span>
1178 <span class="lineNum" id="container433"><a name="433"></a><a href="#433" id="line433"> 433</a> </span><span class="lineCov"> 1 : } </span>
1179 <span class="lineNum" id="container434"><a name="434"></a><a href="#434" id="line434"> 434</a> </span><span class="lineCov"> 5 : } </span>
1180 <span class="lineNum" id="container435"><a name="435"></a><a href="#435" id="line435"> 435</a> </span> :
1181 <span class="lineNum" id="container436"><a name="436"></a><a href="#436" id="line436"> 436</a> </span><span class="lineCov"> 5 : if (count($toquery) &gt; 0) { </span>
1182 <span class="lineNum" id="container437"><a name="437"></a><a href="#437" id="line437"> 437</a> </span><span class="lineCov"> 1 : $db = new $class; </span>
1183 <span class="lineNum" id="container438"><a name="438"></a><a href="#438" id="line438"> 438</a> </span><span class="lineCov"> 1 : $db-&gt;where('_id IN', array_values($toquery)); </span>
1184 <span class="lineNum" id="container439"><a name="439"></a><a href="#439" id="line439"> 439</a> </span><span class="lineCov"> 1 : $db-&gt;doQuery(FALSE); </span>
1185 <span class="lineNum" id="container440"><a name="440"></a><a href="#440" id="line440"> 440</a> </span><span class="lineCov"> 1 : $dresult = array(); </span>
1186 <span class="lineNum" id="container441"><a name="441"></a><a href="#441" id="line441"> 441</a> </span><span class="lineCov"> 1 : foreach ($db as $doc) { </span>
1187 <span class="lineNum" id="container442"><a name="442"></a><a href="#442" id="line442"> 442</a> </span><span class="lineCov"> 1 : $dresult[$doc-&gt;key()] = $doc-&gt;getArray(); </span>
1188 <span class="lineNum" id="container443"><a name="443"></a><a href="#443" id="line443"> 443</a> </span><span class="lineCov"> 1 : } </span>
1189 <span class="lineNum" id="container444"><a name="444"></a><a href="#444" id="line444"> 444</a> </span><span class="lineCov"> 1 : $this-&gt;driver-&gt;setMulti($dresult, array()); </span>
1190 <span class="lineNum" id="container445"><a name="445"></a><a href="#445" id="line445"> 445</a> </span><span class="lineCov"> 1 : $result = array_merge($result, $dresult); </span>
1191 <span class="lineNum" id="container446"><a name="446"></a><a href="#446" id="line446"> 446</a> </span><span class="lineCov"> 1 : } </span>
1192 <span class="lineNum" id="container447"><a name="447"></a><a href="#447" id="line447"> 447</a> </span> :
1193 <span class="lineNum" id="container448"><a name="448"></a><a href="#448" id="line448"> 448</a> </span> :
1194 <span class="lineNum" id="container449"><a name="449"></a><a href="#449" id="line449"> 449</a> </span><span class="lineCov"> 5 : $resultset = new CacheCursor($result); </span>
1195 <span class="lineNum" id="container450"><a name="450"></a><a href="#450" id="line450"> 450</a> </span> :
1196 <span class="lineNum" id="container451"><a name="451"></a><a href="#451" id="line451"> 451</a> </span> : /* Return FALSE to prevent the execution of
1197 <span class="lineNum" id="container452"><a name="452"></a><a href="#452" id="line452"> 452</a> </span> : * any hook similar hook
1198 <span class="lineNum" id="container453"><a name="453"></a><a href="#453" id="line453"> 453</a> </span> : */
1199 <span class="lineNum" id="container454"><a name="454"></a><a href="#454" id="line454"> 454</a> </span><span class="lineCov"> 5 : return FALSE; </span>
1200 <span class="lineNum" id="container455"><a name="455"></a><a href="#455" id="line455"> 455</a> </span><span class="lineDeadCode"> : } </span>
1201 <span class="lineNum" id="container456"><a name="456"></a><a href="#456" id="line456"> 456</a> </span> : // }}}
1202 <span class="lineNum" id="container457"><a name="457"></a><a href="#457" id="line457"> 457</a> </span> :
1203 <span class="lineNum" id="container458"><a name="458"></a><a href="#458" id="line458"> 458</a> </span> : // QuerySave($class, $query_document, $cursor) {{{
1204 <span class="lineNum" id="container459"><a name="459"></a><a href="#459" id="line459"> 459</a> </span> : /**
1205 <span class="lineNum" id="container460"><a name="460"></a><a href="#460" id="line460"> 460</a> </span> : * Save the current resultset into the cache
1206 <span class="lineNum" id="container461"><a name="461"></a><a href="#461" id="line461"> 461</a> </span> : *
1207 <span class="lineNum" id="container462"><a name="462"></a><a href="#462" id="line462"> 462</a> </span> : * @param string $class
1208 <span class="lineNum" id="container463"><a name="463"></a><a href="#463" id="line463"> 463</a> </span> : * @param array $query_document
1209 <span class="lineNum" id="container464"><a name="464"></a><a href="#464" id="line464"> 464</a> </span> : * @param MongoCursor $cursor
1210 <span class="lineNum" id="container465"><a name="465"></a><a href="#465" id="line465"> 465</a> </span> : *
1211 <span class="lineNum" id="container466"><a name="466"></a><a href="#466" id="line466"> 466</a> </span> : * @return void
1212 <span class="lineNum" id="container467"><a name="467"></a><a href="#467" id="line467"> 467</a> </span> : */
1213 <span class="lineNum" id="container468"><a name="468"></a><a href="#468" id="line468"> 468</a> </span> : function QuerySave($class, $query_document, $cursor)
1214 <span class="lineNum" id="container469"><a name="469"></a><a href="#469" id="line469"> 469</a> </span> : {
1215 <span class="lineNum" id="container470"><a name="470"></a><a href="#470" id="line470"> 470</a> </span><span class="lineCov"> 4 : if (!$this-&gt;canUseCache($class)) { </span>
1216 <span class="lineNum" id="container471"><a name="471"></a><a href="#471" id="line471"> 471</a> </span><span class="lineNoCov"> 0 : return; </span>
1217 <span class="lineNum" id="container472"><a name="472"></a><a href="#472" id="line472"> 472</a> </span><span class="lineDeadCode"> : } </span>
1218 <span class="lineNum" id="container473"><a name="473"></a><a href="#473" id="line473"> 473</a> </span> :
1219 <span class="lineNum" id="container474"><a name="474"></a><a href="#474" id="line474"> 474</a> </span><span class="lineCov"> 4 : $query_id = $this-&gt;getQueryID($query_document); </span>
1220 <span class="lineNum" id="container475"><a name="475"></a><a href="#475" id="line475"> 475</a> </span><span class="lineCov"> 4 : $ids = array(); </span>
1221 <span class="lineNum" id="container476"><a name="476"></a><a href="#476" id="line476"> 476</a> </span><span class="lineCov"> 4 : $ttl = array(); </span>
1222 <span class="lineNum" id="container477"><a name="477"></a><a href="#477" id="line477"> 477</a> </span><span class="lineCov"> 4 : $docs = array(); </span>
1223 <span class="lineNum" id="container478"><a name="478"></a><a href="#478" id="line478"> 478</a> </span> :
1224 <span class="lineNum" id="container479"><a name="479"></a><a href="#479" id="line479"> 479</a> </span><span class="lineCov"> 4 : foreach ($cursor as $id=&gt;$document) { </span>
1225 <span class="lineNum" id="container480"><a name="480"></a><a href="#480" id="line480"> 480</a> </span><span class="lineCov"> 4 : $ids[$id] = $document['_id']; </span>
1226 <span class="lineNum" id="container481"><a name="481"></a><a href="#481" id="line481"> 481</a> </span><span class="lineCov"> 4 : $docs[$id] = $document; </span>
1227 <span class="lineNum" id="container482"><a name="482"></a><a href="#482" id="line482"> 482</a> </span><span class="lineCov"> 4 : $ttl[$id] = 3600; </span>
1228 <span class="lineNum" id="container483"><a name="483"></a><a href="#483" id="line483"> 483</a> </span><span class="lineCov"> 4 : } </span>
1229 <span class="lineNum" id="container484"><a name="484"></a><a href="#484" id="line484"> 484</a> </span> :
1230 <span class="lineNum" id="container485"><a name="485"></a><a href="#485" id="line485"> 485</a> </span><span class="lineCov"> 4 : $this-&gt;driver-&gt;setMulti($docs, $ttl); </span>
1231 <span class="lineNum" id="container486"><a name="486"></a><a href="#486" id="line486"> 486</a> </span><span class="lineCov"> 4 : $this-&gt;driver-&gt;set($query_id, $ids, 3600); </span>
1232 <span class="lineNum" id="container487"><a name="487"></a><a href="#487" id="line487"> 487</a> </span><span class="lineCov"> 4 : } </span>
1233 <span class="lineNum" id="container488"><a name="488"></a><a href="#488" id="line488"> 488</a> </span> : // }}}
1234 <span class="lineNum" id="container489"><a name="489"></a><a href="#489" id="line489"> 489</a> </span> :
1235 <span class="lineNum" id="container490"><a name="490"></a><a href="#490" id="line490"> 490</a> </span> : // UpdateDocumentHook($class, $document, $obj) {{{
1236 <span class="lineNum" id="container491"><a name="491"></a><a href="#491" id="line491"> 491</a> </span> : /**
1237 <span class="lineNum" id="container492"><a name="492"></a><a href="#492" id="line492"> 492</a> </span> : * Update Hook
1238 <span class="lineNum" id="container493"><a name="493"></a><a href="#493" id="line493"> 493</a> </span> : *
1239 <span class="lineNum" id="container494"><a name="494"></a><a href="#494" id="line494"> 494</a> </span> : * Save or Replace an object (document)
1240 <span class="lineNum" id="container495"><a name="495"></a><a href="#495" id="line495"> 495</a> </span> : * into the cache.
1241 <span class="lineNum" id="container496"><a name="496"></a><a href="#496" id="line496"> 496</a> </span> : *
1242 <span class="lineNum" id="container497"><a name="497"></a><a href="#497" id="line497"> 497</a> </span> : * @param string $class Class name
1243 <span class="lineNum" id="container498"><a name="498"></a><a href="#498" id="line498"> 498</a> </span> : * @param object $document Document sent to mongodb
1244 <span class="lineNum" id="container499"><a name="499"></a><a href="#499" id="line499"> 499</a> </span> : * @param object $obj ActiveMongo Object
1245 <span class="lineNum" id="container500"><a name="500"></a><a href="#500" id="line500"> 500</a> </span> : *
1246 <span class="lineNum" id="container501"><a name="501"></a><a href="#501" id="line501"> 501</a> </span> : * @return NULL
1247 <span class="lineNum" id="container502"><a name="502"></a><a href="#502" id="line502"> 502</a> </span> : */
1248 <span class="lineNum" id="container503"><a name="503"></a><a href="#503" id="line503"> 503</a> </span> : function UpdateDocumentHook($class, $document, $obj)
1249 <span class="lineNum" id="container504"><a name="504"></a><a href="#504" id="line504"> 504</a> </span> : {
1250 <span class="lineNum" id="container505"><a name="505"></a><a href="#505" id="line505"> 505</a> </span><span class="lineCov"> 4 : if (!$this-&gt;canUseCache($class)) { </span>
1251 <span class="lineNum" id="container506"><a name="506"></a><a href="#506" id="line506"> 506</a> </span><span class="lineNoCov"> 0 : return; </span>
1252 <span class="lineNum" id="container507"><a name="507"></a><a href="#507" id="line507"> 507</a> </span><span class="lineDeadCode"> : } </span>
1253 <span class="lineNum" id="container508"><a name="508"></a><a href="#508" id="line508"> 508</a> </span> :
1254 <span class="lineNum" id="container509"><a name="509"></a><a href="#509" id="line509"> 509</a> </span><span class="lineCov"> 4 : if (!isset($obj['_id'])) { </span>
1255 <span class="lineNum" id="container510"><a name="510"></a><a href="#510" id="line510"> 510</a> </span><span class="lineCov"> 3 : if (!isset($document['_id'])) { </span>
1256 <span class="lineNum" id="container511"><a name="511"></a><a href="#511" id="line511"> 511</a> </span><span class="lineNoCov"> 0 : return; /* Weird condition */ </span>
1257 <span class="lineNum" id="container512"><a name="512"></a><a href="#512" id="line512"> 512</a> </span><span class="lineDeadCode"> : } </span>
1258 <span class="lineNum" id="container513"><a name="513"></a><a href="#513" id="line513"> 513</a> </span><span class="lineCov"> 3 : $obj['_id'] = $document['_id']; </span>
1259 <span class="lineNum" id="container514"><a name="514"></a><a href="#514" id="line514"> 514</a> </span><span class="lineCov"> 3 : } </span>
1260 <span class="lineNum" id="container515"><a name="515"></a><a href="#515" id="line515"> 515</a> </span> :
1261 <span class="lineNum" id="container516"><a name="516"></a><a href="#516" id="line516"> 516</a> </span><span class="lineCov"> 4 : $this-&gt;driver-&gt;set((string)$obj['_id'], $obj, 3600); </span>
1262 <span class="lineNum" id="container517"><a name="517"></a><a href="#517" id="line517"> 517</a> </span><span class="lineCov"> 4 : } </span>
1263 <span class="lineNum" id="container518"><a name="518"></a><a href="#518" id="line518"> 518</a> </span> : // }}}
1264 <span class="lineNum" id="container519"><a name="519"></a><a href="#519" id="line519"> 519</a> </span> :
1265 <span class="lineNum" id="container520"><a name="520"></a><a href="#520" id="line520"> 520</a> </span> : }
1266 <span class="lineNum" id="container521"><a name="521"></a><a href="#521" id="line521"> 521</a> </span> :
1267 <span class="lineNum" id="container522"><a name="522"></a><a href="#522" id="line522"> 522</a> </span> : /*
1268 <span class="lineNum" id="container523"><a name="523"></a><a href="#523" id="line523"> 523</a> </span> : * Local variables:
1269 <span class="lineNum" id="container524"><a name="524"></a><a href="#524" id="line524"> 524</a> </span> : * tab-width: 4
1270 <span class="lineNum" id="container525"><a name="525"></a><a href="#525" id="line525"> 525</a> </span> : * c-basic-offset: 4
1271 <span class="lineNum" id="container526"><a name="526"></a><a href="#526" id="line526"> 526</a> </span> : * End:
1272 <span class="lineNum" id="container527"><a name="527"></a><a href="#527" id="line527"> 527</a> </span> : * vim600: sw=4 ts=4 fdm=marker
1273 <span class="lineNum" id="container528"><a name="528"></a><a href="#528" id="line528"> 528</a> </span> : * vim&lt;600: sw=4 ts=4
1274 <span class="lineNum" id="container529"><a name="529"></a><a href="#529" id="line529"> 529</a> </span> : */
1276 </pre>
1277 </td>
1278 </tr>
1279 </table>
1281 <table width="100%" border="0" cellspacing="0" cellpadding="0">
1282 <tr><td class="ruler"><img src="glass.png" width="3" height="3" alt=""></td></tr>
1283 <tr><td class="versionInfo">Generated by <a href="http://www.phpunit.de/" target="_top">PHPUnit 3.4.12</a> and <a href="http://www.xdebug.org/" target="_top">Xdebug 2.0.5</a> using <a href="http://www.php.net/" target="_top">PHP 5.3.2</a> at Wed May 26 12:04:20 PYT 2010.</td></tr>
1284 </table>
1286 <br />
1288 <script type="text/javascript">
1289 //<![CDATA[
1290 $E = YAHOO.util.Event;
1291 YAHOO.namespace("phpunit.container");
1292 YAHOO.phpunit.container.panelsData = {
1293 "panel63": {
1294 "header": "5 tests cover line 63",
1295 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1296 "footer": ""
1298 "panel64": {
1299 "header": "5 tests cover line 64",
1300 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1301 "footer": ""
1303 "panel65": {
1304 "header": "5 tests cover line 65",
1305 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1306 "footer": ""
1308 "panel66": {
1309 "header": "5 tests cover line 66",
1310 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1311 "footer": ""
1313 "panel70": {
1314 "header": "5 tests cover line 70",
1315 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1316 "footer": ""
1318 "panel71": {
1319 "header": "5 tests cover line 71",
1320 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1321 "footer": ""
1323 "panel80": {
1324 "header": "1 test covers line 80",
1325 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheMultiple</li></ul>",
1326 "footer": ""
1328 "panel81": {
1329 "header": "1 test covers line 81",
1330 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheMultiple</li></ul>",
1331 "footer": ""
1333 "panel83": {
1334 "header": "1 test covers line 83",
1335 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheMultiple</li></ul>",
1336 "footer": ""
1338 "panel88": {
1339 "header": "5 tests cover line 88",
1340 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1341 "footer": ""
1343 "panel89": {
1344 "header": "5 tests cover line 89",
1345 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1346 "footer": ""
1348 "panel93": {
1349 "header": "3 tests cover line 93",
1350 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1351 "footer": ""
1353 "panel98": {
1354 "header": "5 tests cover line 98",
1355 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1356 "footer": ""
1358 "panel99": {
1359 "header": "5 tests cover line 99",
1360 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1361 "footer": ""
1363 "panel100": {
1364 "header": "5 tests cover line 100",
1365 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1366 "footer": ""
1368 "panel104": {
1369 "header": "5 tests cover line 104",
1370 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1371 "footer": ""
1373 "panel105": {
1374 "header": "5 tests cover line 105",
1375 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1376 "footer": ""
1378 "panel110": {
1379 "header": "3 tests cover line 110",
1380 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1381 "footer": ""
1383 "panel140": {
1384 "header": "5 tests cover line 140",
1385 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1386 "footer": ""
1388 "panel152": {
1389 "header": "5 tests cover line 152",
1390 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1391 "footer": ""
1393 "panel172": {
1394 "header": "5 tests cover line 172",
1395 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1396 "footer": ""
1398 "panel173": {
1399 "header": "5 tests cover line 173",
1400 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1401 "footer": ""
1403 "panel174": {
1404 "header": "1 test covers line 174",
1405 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1406 "footer": ""
1408 "panel175": {
1409 "header": "1 test covers line 175",
1410 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1411 "footer": ""
1413 "panel176": {
1414 "header": "5 tests cover line 176",
1415 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1416 "footer": ""
1418 "panel177": {
1419 "header": "5 tests cover line 177",
1420 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1421 "footer": ""
1423 "panel196": {
1424 "header": "4 tests cover line 196",
1425 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1426 "footer": ""
1428 "panel197": {
1429 "header": "4 tests cover line 197",
1430 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1431 "footer": ""
1433 "panel198": {
1434 "header": "1 test covers line 198",
1435 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1436 "footer": ""
1438 "panel199": {
1439 "header": "1 test covers line 199",
1440 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1441 "footer": ""
1443 "panel200": {
1444 "header": "4 tests cover line 200",
1445 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1446 "footer": ""
1448 "panel201": {
1449 "header": "4 tests cover line 201",
1450 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1451 "footer": ""
1453 "panel202": {
1454 "header": "4 tests cover line 202",
1455 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1456 "footer": ""
1458 "panel249": {
1459 "header": "1 test covers line 249",
1460 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1461 "footer": ""
1463 "panel250": {
1464 "header": "1 test covers line 250",
1465 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1466 "footer": ""
1468 "panel251": {
1469 "header": "1 test covers line 251",
1470 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1471 "footer": ""
1473 "panel252": {
1474 "header": "1 test covers line 252",
1475 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1476 "footer": ""
1478 "panel253": {
1479 "header": "1 test covers line 253",
1480 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1481 "footer": ""
1483 "panel265": {
1484 "header": "2 tests cover line 265",
1485 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1486 "footer": ""
1488 "panel266": {
1489 "header": "1 test covers line 266",
1490 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1491 "footer": ""
1493 "panel268": {
1494 "header": "1 test covers line 268",
1495 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1496 "footer": ""
1498 "panel269": {
1499 "header": "1 test covers line 269",
1500 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1501 "footer": ""
1503 "panel283": {
1504 "header": "1 test covers line 283",
1505 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1506 "footer": ""
1508 "panel284": {
1509 "header": "1 test covers line 284",
1510 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1511 "footer": ""
1513 "panel285": {
1514 "header": "1 test covers line 285",
1515 "body": "<ul><li class=\"testPassed\">CacheTest::testInit</li></ul>",
1516 "footer": ""
1518 "panel327": {
1519 "header": "5 tests cover line 327",
1520 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1521 "footer": ""
1523 "panel330": {
1524 "header": "5 tests cover line 330",
1525 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1526 "footer": ""
1528 "panel331": {
1529 "header": "5 tests cover line 331",
1530 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1531 "footer": ""
1533 "panel351": {
1534 "header": "5 tests cover line 351",
1535 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1536 "footer": ""
1538 "panel353": {
1539 "header": "5 tests cover line 353",
1540 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1541 "footer": ""
1543 "panel365": {
1544 "header": "1 test covers line 365",
1545 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1546 "footer": ""
1548 "panel366": {
1549 "header": "1 test covers line 366",
1550 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1551 "footer": ""
1553 "panel367": {
1554 "header": "1 test covers line 367",
1555 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1556 "footer": ""
1558 "panel368": {
1559 "header": "1 test covers line 368",
1560 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1561 "footer": ""
1563 "panel382": {
1564 "header": "1 test covers line 382",
1565 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1566 "footer": ""
1568 "panel383": {
1569 "header": "1 test covers line 383",
1570 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1571 "footer": ""
1573 "panel384": {
1574 "header": "1 test covers line 384",
1575 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1576 "footer": ""
1578 "panel387": {
1579 "header": "1 test covers line 387",
1580 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1581 "footer": ""
1583 "panel388": {
1584 "header": "1 test covers line 388",
1585 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1586 "footer": ""
1588 "panel390": {
1589 "header": "1 test covers line 390",
1590 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1591 "footer": ""
1593 "panel410": {
1594 "header": "5 tests cover line 410",
1595 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1596 "footer": ""
1598 "panel411": {
1599 "header": "2 tests cover line 411",
1600 "body": "<ul><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1601 "footer": ""
1603 "panel414": {
1604 "header": "5 tests cover line 414",
1605 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1606 "footer": ""
1608 "panel416": {
1609 "header": "5 tests cover line 416",
1610 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1611 "footer": ""
1613 "panel417": {
1614 "header": "2 tests cover line 417",
1615 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li></ul>",
1616 "footer": ""
1618 "panel420": {
1619 "header": "5 tests cover line 420",
1620 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1621 "footer": ""
1623 "panel424": {
1624 "header": "5 tests cover line 424",
1625 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1626 "footer": ""
1628 "panel425": {
1629 "header": "5 tests cover line 425",
1630 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1631 "footer": ""
1633 "panel427": {
1634 "header": "5 tests cover line 427",
1635 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1636 "footer": ""
1638 "panel428": {
1639 "header": "5 tests cover line 428",
1640 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1641 "footer": ""
1643 "panel430": {
1644 "header": "5 tests cover line 430",
1645 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1646 "footer": ""
1648 "panel431": {
1649 "header": "5 tests cover line 431",
1650 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1651 "footer": ""
1653 "panel432": {
1654 "header": "1 test covers line 432",
1655 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1656 "footer": ""
1658 "panel433": {
1659 "header": "1 test covers line 433",
1660 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1661 "footer": ""
1663 "panel434": {
1664 "header": "5 tests cover line 434",
1665 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1666 "footer": ""
1668 "panel436": {
1669 "header": "5 tests cover line 436",
1670 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1671 "footer": ""
1673 "panel437": {
1674 "header": "1 test covers line 437",
1675 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1676 "footer": ""
1678 "panel438": {
1679 "header": "1 test covers line 438",
1680 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1681 "footer": ""
1683 "panel439": {
1684 "header": "1 test covers line 439",
1685 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1686 "footer": ""
1688 "panel440": {
1689 "header": "1 test covers line 440",
1690 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1691 "footer": ""
1693 "panel441": {
1694 "header": "1 test covers line 441",
1695 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1696 "footer": ""
1698 "panel442": {
1699 "header": "1 test covers line 442",
1700 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1701 "footer": ""
1703 "panel443": {
1704 "header": "1 test covers line 443",
1705 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1706 "footer": ""
1708 "panel444": {
1709 "header": "1 test covers line 444",
1710 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1711 "footer": ""
1713 "panel445": {
1714 "header": "1 test covers line 445",
1715 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1716 "footer": ""
1718 "panel446": {
1719 "header": "1 test covers line 446",
1720 "body": "<ul><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1721 "footer": ""
1723 "panel449": {
1724 "header": "5 tests cover line 449",
1725 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1726 "footer": ""
1728 "panel454": {
1729 "header": "5 tests cover line 454",
1730 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1731 "footer": ""
1733 "panel470": {
1734 "header": "4 tests cover line 470",
1735 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1736 "footer": ""
1738 "panel474": {
1739 "header": "4 tests cover line 474",
1740 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1741 "footer": ""
1743 "panel475": {
1744 "header": "4 tests cover line 475",
1745 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1746 "footer": ""
1748 "panel476": {
1749 "header": "4 tests cover line 476",
1750 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1751 "footer": ""
1753 "panel477": {
1754 "header": "4 tests cover line 477",
1755 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1756 "footer": ""
1758 "panel479": {
1759 "header": "4 tests cover line 479",
1760 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1761 "footer": ""
1763 "panel480": {
1764 "header": "4 tests cover line 480",
1765 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1766 "footer": ""
1768 "panel481": {
1769 "header": "4 tests cover line 481",
1770 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1771 "footer": ""
1773 "panel482": {
1774 "header": "4 tests cover line 482",
1775 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1776 "footer": ""
1778 "panel483": {
1779 "header": "4 tests cover line 483",
1780 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1781 "footer": ""
1783 "panel485": {
1784 "header": "4 tests cover line 485",
1785 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1786 "footer": ""
1788 "panel486": {
1789 "header": "4 tests cover line 486",
1790 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1791 "footer": ""
1793 "panel487": {
1794 "header": "4 tests cover line 487",
1795 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li><li class=\"testPassed\">CacheTest::testFetchFromCache</li></ul>",
1796 "footer": ""
1798 "panel505": {
1799 "header": "4 tests cover line 505",
1800 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1801 "footer": ""
1803 "panel509": {
1804 "header": "4 tests cover line 509",
1805 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1806 "footer": ""
1808 "panel510": {
1809 "header": "3 tests cover line 510",
1810 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1811 "footer": ""
1813 "panel513": {
1814 "header": "3 tests cover line 513",
1815 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1816 "footer": ""
1818 "panel514": {
1819 "header": "3 tests cover line 514",
1820 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1821 "footer": ""
1823 "panel516": {
1824 "header": "4 tests cover line 516",
1825 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1826 "footer": ""
1828 "panel517": {
1829 "header": "4 tests cover line 517",
1830 "body": "<ul><li class=\"testPassed\">CacheTest::testCacheSimple</li><li class=\"testPassed\">CacheTest::testCacheMultiple</li><li class=\"testPassed\">CacheTest::testUpdateCache</li><li class=\"testPassed\">CacheTest::testUpdateQueryCache</li></ul>",
1831 "footer": ""
1833 "dummy": ""
1836 YAHOO.phpunit.container.prepare = function (e) {
1837 var elemId = $E.getTarget(e).id;
1838 var line = elemId.substr(4);
1839 var panelId = "panel" + line;
1840 var containerId = "container" + line;
1842 var panelData = YAHOO.phpunit.container.panelsData[panelId];
1844 var panel = new YAHOO.widget.Panel(panelId, { visible:false, draggable:false, close:true } );
1845 panel.setHeader(panelData["header"]);
1846 panel.setBody(panelData["body"]);
1847 panel.setFooter(panelData["footer"]);
1848 panel.render(containerId);
1850 $E.addListener(elemId, "click", panel.show, panel, true);
1851 $E.removeListener(elemId, "mouseover");
1854 function init() {
1855 var ypc = YAHOO.phpunit.container;
1856 for (var panelId in ypc.panelsData) {
1857 var elemId = "line" + panelId.substr(5);
1858 $E.addListener(elemId, "mouseover", ypc.prepare);
1862 $E.addListener(window, "load", init);
1863 //]]>
1864 </script>
1865 </body>
1866 </html>