Doctrine_Transaction.html 57.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<html>
    <head>
        <title>Coverage for Doctrine_Transaction</title>
        <style type="text/css">
            .covered{ background: green;}
            .normal{ background: white;}
            .red{ background: red;}
            .orange{ background: #f90;}
       </style>
</head>
<body><h1>Coverage for Doctrine_Transaction</h1><p><a href="index.php">Back to coverage report</a></p><table>
<tr><td>1</td>
<td class="normal">&lt;?php
</td></tr>
<tr><td>2</td>
<td class="normal">/*
</td></tr>
<tr><td>3</td>
19
<td class="normal">&nbsp;*&nbsp;&nbsp;$Id:&nbsp;Transaction.php&nbsp;3032&nbsp;2007-10-29&nbsp;19:50:16Z&nbsp;meus&nbsp;$
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
</td></tr>
<tr><td>4</td>
<td class="normal">&nbsp;*
</td></tr>
<tr><td>5</td>
<td class="normal">&nbsp;*&nbsp;THIS&nbsp;SOFTWARE&nbsp;IS&nbsp;PROVIDED&nbsp;BY&nbsp;THE&nbsp;COPYRIGHT&nbsp;HOLDERS&nbsp;AND&nbsp;CONTRIBUTORS
</td></tr>
<tr><td>6</td>
<td class="normal">&nbsp;*&nbsp;&quot;AS&nbsp;IS&quot;&nbsp;AND&nbsp;ANY&nbsp;EXPRESS&nbsp;OR&nbsp;IMPLIED&nbsp;WARRANTIES,&nbsp;INCLUDING,&nbsp;BUT&nbsp;NOT
</td></tr>
<tr><td>7</td>
<td class="normal">&nbsp;*&nbsp;LIMITED&nbsp;TO,&nbsp;THE&nbsp;IMPLIED&nbsp;WARRANTIES&nbsp;OF&nbsp;MERCHANTABILITY&nbsp;AND&nbsp;FITNESS&nbsp;FOR
</td></tr>
<tr><td>8</td>
<td class="normal">&nbsp;*&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE&nbsp;ARE&nbsp;DISCLAIMED.&nbsp;IN&nbsp;NO&nbsp;EVENT&nbsp;SHALL&nbsp;THE&nbsp;COPYRIGHT
</td></tr>
<tr><td>9</td>
<td class="normal">&nbsp;*&nbsp;OWNER&nbsp;OR&nbsp;CONTRIBUTORS&nbsp;BE&nbsp;LIABLE&nbsp;FOR&nbsp;ANY&nbsp;DIRECT,&nbsp;INDIRECT,&nbsp;INCIDENTAL,
</td></tr>
<tr><td>10</td>
<td class="normal">&nbsp;*&nbsp;SPECIAL,&nbsp;EXEMPLARY,&nbsp;OR&nbsp;CONSEQUENTIAL&nbsp;DAMAGES&nbsp;(INCLUDING,&nbsp;BUT&nbsp;NOT
</td></tr>
<tr><td>11</td>
<td class="normal">&nbsp;*&nbsp;LIMITED&nbsp;TO,&nbsp;PROCUREMENT&nbsp;OF&nbsp;SUBSTITUTE&nbsp;GOODS&nbsp;OR&nbsp;SERVICES;&nbsp;LOSS&nbsp;OF&nbsp;USE,
</td></tr>
<tr><td>12</td>
<td class="normal">&nbsp;*&nbsp;DATA,&nbsp;OR&nbsp;PROFITS;&nbsp;OR&nbsp;BUSINESS&nbsp;INTERRUPTION)&nbsp;HOWEVER&nbsp;CAUSED&nbsp;AND&nbsp;ON&nbsp;ANY
</td></tr>
<tr><td>13</td>
<td class="normal">&nbsp;*&nbsp;THEORY&nbsp;OF&nbsp;LIABILITY,&nbsp;WHETHER&nbsp;IN&nbsp;CONTRACT,&nbsp;STRICT&nbsp;LIABILITY,&nbsp;OR&nbsp;TORT
</td></tr>
<tr><td>14</td>
<td class="normal">&nbsp;*&nbsp;(INCLUDING&nbsp;NEGLIGENCE&nbsp;OR&nbsp;OTHERWISE)&nbsp;ARISING&nbsp;IN&nbsp;ANY&nbsp;WAY&nbsp;OUT&nbsp;OF&nbsp;THE&nbsp;USE
</td></tr>
<tr><td>15</td>
<td class="normal">&nbsp;*&nbsp;OF&nbsp;THIS&nbsp;SOFTWARE,&nbsp;EVEN&nbsp;IF&nbsp;ADVISED&nbsp;OF&nbsp;THE&nbsp;POSSIBILITY&nbsp;OF&nbsp;SUCH&nbsp;DAMAGE.
</td></tr>
<tr><td>16</td>
<td class="normal">&nbsp;*
</td></tr>
<tr><td>17</td>
<td class="normal">&nbsp;*&nbsp;This&nbsp;software&nbsp;consists&nbsp;of&nbsp;voluntary&nbsp;contributions&nbsp;made&nbsp;by&nbsp;many&nbsp;individuals
</td></tr>
<tr><td>18</td>
<td class="normal">&nbsp;*&nbsp;and&nbsp;is&nbsp;licensed&nbsp;under&nbsp;the&nbsp;LGPL.&nbsp;For&nbsp;more&nbsp;information,&nbsp;see
</td></tr>
<tr><td>19</td>
<td class="normal">&nbsp;*&nbsp;&lt;http://www.phpdoctrine.com&gt;.
</td></tr>
<tr><td>20</td>
<td class="normal">&nbsp;*/
</td></tr>
<tr><td>21</td>
<td class="covered">Doctrine::autoload('Doctrine_Connection_Module');
</td></tr>
<tr><td>22</td>
<td class="normal">/**
</td></tr>
<tr><td>23</td>
<td class="normal">&nbsp;*&nbsp;Doctrine_Transaction
</td></tr>
<tr><td>24</td>
<td class="normal">&nbsp;*&nbsp;Handles&nbsp;transaction&nbsp;savepoint&nbsp;and&nbsp;isolation&nbsp;abstraction
</td></tr>
<tr><td>25</td>
<td class="normal">&nbsp;*
</td></tr>
<tr><td>26</td>
<td class="normal">&nbsp;*&nbsp;@author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Konsta&nbsp;Vesterinen&nbsp;&lt;kvesteri@cc.hut.fi&gt;
</td></tr>
<tr><td>27</td>
<td class="normal">&nbsp;*&nbsp;@author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lukas&nbsp;Smith&nbsp;&lt;smith@pooteeweet.org&gt;&nbsp;(PEAR&nbsp;MDB2&nbsp;library)
</td></tr>
<tr><td>28</td>
<td class="normal">&nbsp;*&nbsp;@license&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.opensource.org/licenses/lgpl-license.php&nbsp;LGPL
</td></tr>
<tr><td>29</td>
<td class="normal">&nbsp;*&nbsp;@package&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Doctrine
</td></tr>
<tr><td>30</td>
<td class="normal">&nbsp;*&nbsp;@subpackage&nbsp;&nbsp;Transaction
</td></tr>
<tr><td>31</td>
<td class="normal">&nbsp;*&nbsp;@link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;www.phpdoctrine.com
</td></tr>
<tr><td>32</td>
<td class="normal">&nbsp;*&nbsp;@since&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0
</td></tr>
<tr><td>33</td>
109
<td class="normal">&nbsp;*&nbsp;@version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$Revision:&nbsp;3032&nbsp;$
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
</td></tr>
<tr><td>34</td>
<td class="normal">&nbsp;*/
</td></tr>
<tr><td>35</td>
<td class="covered">class&nbsp;Doctrine_Transaction&nbsp;extends&nbsp;Doctrine_Connection_Module
</td></tr>
<tr><td>36</td>
<td class="normal">{
</td></tr>
<tr><td>37</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
</td></tr>
<tr><td>38</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Doctrine_Transaction&nbsp;is&nbsp;in&nbsp;sleep&nbsp;state&nbsp;when&nbsp;it&nbsp;has&nbsp;no&nbsp;active&nbsp;transactions
</td></tr>
<tr><td>39</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
</td></tr>
<tr><td>40</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;STATE_SLEEP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;
</td></tr>
<tr><td>41</td>
133
<td class="normal">
134 135
</td></tr>
<tr><td>42</td>
136
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
137 138
</td></tr>
<tr><td>43</td>
139
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Doctrine_Transaction&nbsp;is&nbsp;in&nbsp;active&nbsp;state&nbsp;when&nbsp;it&nbsp;has&nbsp;one&nbsp;active&nbsp;transaction
140 141
</td></tr>
<tr><td>44</td>
142
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
143 144
</td></tr>
<tr><td>45</td>
145
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;STATE_ACTIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;
146 147
</td></tr>
<tr><td>46</td>
148
<td class="normal">
149 150
</td></tr>
<tr><td>47</td>
151
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
152 153
</td></tr>
<tr><td>48</td>
154
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Doctrine_Transaction&nbsp;is&nbsp;in&nbsp;busy&nbsp;state&nbsp;when&nbsp;it&nbsp;has&nbsp;multiple&nbsp;active&nbsp;transactions
155 156
</td></tr>
<tr><td>49</td>
157
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
158 159
</td></tr>
<tr><td>50</td>
160
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;STATE_BUSY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;2;
161 162
</td></tr>
<tr><td>51</td>
163
<td class="normal">
164 165
</td></tr>
<tr><td>52</td>
166
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
167 168
</td></tr>
<tr><td>53</td>
169
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;integer&nbsp;$transactionLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;nesting&nbsp;level&nbsp;of&nbsp;transactions,&nbsp;used&nbsp;by&nbsp;transaction&nbsp;methods
170 171
</td></tr>
<tr><td>54</td>
172
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
173 174
</td></tr>
<tr><td>55</td>
175
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$transactionLevel&nbsp;&nbsp;=&nbsp;0;
176 177
</td></tr>
<tr><td>56</td>
178
<td class="normal">
179 180 181 182 183
</td></tr>
<tr><td>57</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
</td></tr>
<tr><td>58</td>
184
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array&nbsp;$invalid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;array&nbsp;containing&nbsp;all&nbsp;invalid&nbsp;records&nbsp;within&nbsp;this&nbsp;transaction
185 186 187 188 189
</td></tr>
<tr><td>59</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
</td></tr>
<tr><td>60</td>
190
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$invalid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;array();
191 192
</td></tr>
<tr><td>61</td>
193
<td class="normal">
194 195
</td></tr>
<tr><td>62</td>
196
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
197 198
</td></tr>
<tr><td>63</td>
199
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array&nbsp;$savepoints&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;array&nbsp;containing&nbsp;all&nbsp;savepoints
200 201
</td></tr>
<tr><td>64</td>
202
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
203 204
</td></tr>
<tr><td>65</td>
205
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$savePoints&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;array();
206 207
</td></tr>
<tr><td>66</td>
208
<td class="normal">
209 210
</td></tr>
<tr><td>67</td>
211
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
212 213
</td></tr>
<tr><td>68</td>
214
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array&nbsp;$_collections&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;array&nbsp;of&nbsp;Doctrine_Collection&nbsp;objects&nbsp;that&nbsp;were&nbsp;affected&nbsp;during&nbsp;the&nbsp;Transaction
215 216
</td></tr>
<tr><td>69</td>
217
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
218 219
</td></tr>
<tr><td>70</td>
220
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_collections&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;array();
221 222
</td></tr>
<tr><td>71</td>
223
<td class="normal">
224 225
</td></tr>
<tr><td>72</td>
226
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
227 228
</td></tr>
<tr><td>73</td>
229
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;addCollection
230 231
</td></tr>
<tr><td>74</td>
232
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;adds&nbsp;a&nbsp;collection&nbsp;in&nbsp;the&nbsp;internal&nbsp;array&nbsp;of&nbsp;collections
233 234
</td></tr>
<tr><td>75</td>
235
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
236 237
</td></tr>
<tr><td>76</td>
238
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;at&nbsp;the&nbsp;end&nbsp;of&nbsp;each&nbsp;commit&nbsp;this&nbsp;array&nbsp;is&nbsp;looped&nbsp;over&nbsp;and
239 240
</td></tr>
<tr><td>77</td>
241
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;of&nbsp;every&nbsp;collection&nbsp;Doctrine&nbsp;then&nbsp;takes&nbsp;a&nbsp;snapshot&nbsp;in&nbsp;order
242 243
</td></tr>
<tr><td>78</td>
244
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;to&nbsp;keep&nbsp;the&nbsp;collections&nbsp;up&nbsp;to&nbsp;date&nbsp;with&nbsp;the&nbsp;database
245 246
</td></tr>
<tr><td>79</td>
247
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
248 249
</td></tr>
<tr><td>80</td>
250
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Doctrine_Collection&nbsp;$coll&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;collection&nbsp;to&nbsp;be&nbsp;added
251 252
</td></tr>
<tr><td>81</td>
253
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Doctrine_Transaction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;object
254 255
</td></tr>
<tr><td>82</td>
256
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
257 258
</td></tr>
<tr><td>83</td>
259
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;addCollection(Doctrine_Collection&nbsp;$coll)
260 261
</td></tr>
<tr><td>84</td>
262
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
263 264
</td></tr>
<tr><td>85</td>
265
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_collections[]&nbsp;=&nbsp;$coll;
266 267
</td></tr>
<tr><td>86</td>
268
<td class="normal">
269 270
</td></tr>
<tr><td>87</td>
271
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this;
272 273
</td></tr>
<tr><td>88</td>
274
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
275 276
</td></tr>
<tr><td>89</td>
277
<td class="normal">
278 279
</td></tr>
<tr><td>90</td>
280
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
281 282
</td></tr>
<tr><td>91</td>
283
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;getState
284 285
</td></tr>
<tr><td>92</td>
286
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;returns&nbsp;the&nbsp;state&nbsp;of&nbsp;this&nbsp;connection
287 288
</td></tr>
<tr><td>93</td>
289
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
290 291
</td></tr>
<tr><td>94</td>
292
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;Doctrine_Connection_Transaction::STATE_*&nbsp;constants
293 294
</td></tr>
<tr><td>95</td>
295
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;connection&nbsp;state
296 297
</td></tr>
<tr><td>96</td>
298
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
299 300
</td></tr>
<tr><td>97</td>
301
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getState()
302 303
</td></tr>
<tr><td>98</td>
304
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
305 306
</td></tr>
<tr><td>99</td>
307
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;($this-&gt;transactionLevel)&nbsp;{
308 309
</td></tr>
<tr><td>100</td>
310
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;0:
311 312
</td></tr>
<tr><td>101</td>
313
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Doctrine_Transaction::STATE_SLEEP;
314 315
</td></tr>
<tr><td>102</td>
316
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
317 318
</td></tr>
<tr><td>103</td>
319
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1:
320 321
</td></tr>
<tr><td>104</td>
322
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Doctrine_Transaction::STATE_ACTIVE;
323 324
</td></tr>
<tr><td>105</td>
325
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
326 327
</td></tr>
<tr><td>106</td>
328
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:
329 330
</td></tr>
<tr><td>107</td>
331
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Doctrine_Transaction::STATE_BUSY;
332 333
</td></tr>
<tr><td>108</td>
334
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
335 336
</td></tr>
<tr><td>109</td>
337
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
338 339
</td></tr>
<tr><td>110</td>
340
<td class="normal">
341 342
</td></tr>
<tr><td>111</td>
343
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
344 345
</td></tr>
<tr><td>112</td>
346
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;addInvalid
347 348
</td></tr>
<tr><td>113</td>
349
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;adds&nbsp;record&nbsp;into&nbsp;invalid&nbsp;records&nbsp;list
350 351
</td></tr>
<tr><td>114</td>
352
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
353 354
</td></tr>
<tr><td>115</td>
355
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Doctrine_Record&nbsp;$record
356 357
</td></tr>
<tr><td>116</td>
358
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;if&nbsp;record&nbsp;already&nbsp;existed&nbsp;in&nbsp;invalid&nbsp;records&nbsp;list,
359 360
</td></tr>
<tr><td>117</td>
361
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherwise&nbsp;true
362 363
</td></tr>
<tr><td>118</td>
364
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
365 366
</td></tr>
<tr><td>119</td>
367
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;addInvalid(Doctrine_Record&nbsp;$record)
368 369
</td></tr>
<tr><td>120</td>
370
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
371 372
</td></tr>
<tr><td>121</td>
373
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(in_array($record,&nbsp;$this-&gt;invalid,&nbsp;true))&nbsp;{
374 375
</td></tr>
<tr><td>122</td>
376
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;
377 378
</td></tr>
<tr><td>123</td>
379
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
380 381
</td></tr>
<tr><td>124</td>
382
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;invalid[]&nbsp;=&nbsp;$record;
383 384
</td></tr>
<tr><td>125</td>
385
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;
386 387
</td></tr>
<tr><td>126</td>
388
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
389 390
</td></tr>
<tr><td>127</td>
391
<td class="normal">
392 393
</td></tr>
<tr><td>128</td>
394
<td class="normal">
395 396
</td></tr>
<tr><td>129</td>
397
<td class="normal">&nbsp;&nbsp;&nbsp;/**
398 399
</td></tr>
<tr><td>130</td>
400
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Return&nbsp;the&nbsp;invalid&nbsp;records
401 402
</td></tr>
<tr><td>131</td>
403
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;*
404 405
</td></tr>
<tr><td>132</td>
406
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array&nbsp;An&nbsp;array&nbsp;of&nbsp;invalid&nbsp;records
407 408
</td></tr>
<tr><td>133</td>
409
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;
410 411
</td></tr>
<tr><td>134</td>
412
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getInvalid(){
413 414
</td></tr>
<tr><td>135</td>
415
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;invalid;
416 417
</td></tr>
<tr><td>136</td>
418
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
419 420
</td></tr>
<tr><td>137</td>
421
<td class="normal">
422 423
</td></tr>
<tr><td>138</td>
424
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
425 426
</td></tr>
<tr><td>139</td>
427
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;getTransactionLevel
428 429
</td></tr>
<tr><td>140</td>
430
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;get&nbsp;the&nbsp;current&nbsp;transaction&nbsp;nesting&nbsp;level
431 432
</td></tr>
<tr><td>141</td>
433
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
434 435
</td></tr>
<tr><td>142</td>
436
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;integer
437 438
</td></tr>
<tr><td>143</td>
439
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
440 441
</td></tr>
<tr><td>144</td>
442
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getTransactionLevel()
443 444
</td></tr>
<tr><td>145</td>
445
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
446 447
</td></tr>
<tr><td>146</td>
448
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;transactionLevel;
449 450
</td></tr>
<tr><td>147</td>
451
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
452 453
</td></tr>
<tr><td>148</td>
454
<td class="normal">
455 456
</td></tr>
<tr><td>149</td>
457
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
458 459
</td></tr>
<tr><td>150</td>
460
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;getTransactionLevel
461 462
</td></tr>
<tr><td>151</td>
463
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;set&nbsp;the&nbsp;current&nbsp;transaction&nbsp;nesting&nbsp;level
464 465
</td></tr>
<tr><td>152</td>
466
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
467 468
</td></tr>
<tr><td>153</td>
469
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Doctrine_Transaction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;object
470 471
</td></tr>
<tr><td>154</td>
472
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
473 474
</td></tr>
<tr><td>155</td>
475
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;setTransactionLevel($level)
476 477
</td></tr>
<tr><td>156</td>
478
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
479 480
</td></tr>
<tr><td>157</td>
481
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;transactionLevel&nbsp;=&nbsp;$level;
482 483
</td></tr>
<tr><td>158</td>
484
<td class="normal">
485 486
</td></tr>
<tr><td>159</td>
487
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this;
488 489
</td></tr>
<tr><td>160</td>
490
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
491 492
</td></tr>
<tr><td>161</td>
493
<td class="normal">
494 495
</td></tr>
<tr><td>162</td>
496
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
497 498
</td></tr>
<tr><td>163</td>
499
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;beginTransaction
500 501
</td></tr>
<tr><td>164</td>
502
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Start&nbsp;a&nbsp;transaction&nbsp;or&nbsp;set&nbsp;a&nbsp;savepoint.
503 504
</td></tr>
<tr><td>165</td>
505
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
506 507
</td></tr>
<tr><td>166</td>
508
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;if&nbsp;trying&nbsp;to&nbsp;set&nbsp;a&nbsp;savepoint&nbsp;and&nbsp;there&nbsp;is&nbsp;no&nbsp;active&nbsp;transaction
509 510
</td></tr>
<tr><td>167</td>
511
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;a&nbsp;new&nbsp;transaction&nbsp;is&nbsp;being&nbsp;started
512 513
</td></tr>
<tr><td>168</td>
514
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
515 516
</td></tr>
<tr><td>169</td>
517
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Listeners:&nbsp;onPreTransactionBegin,&nbsp;onTransactionBegin
518 519
</td></tr>
<tr><td>170</td>
520
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
521 522
</td></tr>
<tr><td>171</td>
523
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$savepoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;of&nbsp;a&nbsp;savepoint&nbsp;to&nbsp;set
524 525
</td></tr>
<tr><td>172</td>
526
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Doctrine_Transaction_Exception&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;transaction&nbsp;fails&nbsp;at&nbsp;database&nbsp;level&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
527 528
</td></tr>
<tr><td>173</td>
529
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current&nbsp;transaction&nbsp;nesting&nbsp;level
530 531
</td></tr>
<tr><td>174</td>
532
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
533 534
</td></tr>
<tr><td>175</td>
535
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;beginTransaction($savepoint&nbsp;=&nbsp;null)
536 537
</td></tr>
<tr><td>176</td>
538
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
539 540
</td></tr>
<tr><td>177</td>
541
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn-&gt;connect();
542 543
</td></tr>
<tr><td>178</td>
544
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
545 546
</td></tr>
<tr><td>179</td>
547
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener&nbsp;=&nbsp;$this-&gt;conn-&gt;getAttribute(Doctrine::ATTR_LISTENER);
548 549
</td></tr>
<tr><td>180</td>
550
<td class="normal">
551 552
</td></tr>
<tr><td>181</td>
553
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;is_null($savepoint))&nbsp;{
554 555
</td></tr>
<tr><td>182</td>
556
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;savePoints[]&nbsp;=&nbsp;$savepoint;
557 558
</td></tr>
<tr><td>183</td>
559
<td class="normal">
560 561
</td></tr>
<tr><td>184</td>
562
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$event&nbsp;=&nbsp;new&nbsp;Doctrine_Event($this,&nbsp;Doctrine_Event::SAVEPOINT_CREATE);
563 564
</td></tr>
<tr><td>185</td>
565
<td class="normal">
566 567
</td></tr>
<tr><td>186</td>
568
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;preSavepointCreate($event);
569 570
</td></tr>
<tr><td>187</td>
571
<td class="normal">
572 573
</td></tr>
<tr><td>188</td>
574
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;$event-&gt;skipOperation)&nbsp;{
575 576
</td></tr>
<tr><td>189</td>
577
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;createSavePoint($savepoint);
578 579
</td></tr>
<tr><td>190</td>
580
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
581 582
</td></tr>
<tr><td>191</td>
583
<td class="normal">
584 585
</td></tr>
<tr><td>192</td>
586
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;postSavepointCreate($event);
587 588
</td></tr>
<tr><td>193</td>
589
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
590 591
</td></tr>
<tr><td>194</td>
592
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($this-&gt;transactionLevel&nbsp;==&nbsp;0)&nbsp;{
593 594
</td></tr>
<tr><td>195</td>
595
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$event&nbsp;=&nbsp;new&nbsp;Doctrine_Event($this,&nbsp;Doctrine_Event::TX_BEGIN);
596 597
</td></tr>
<tr><td>196</td>
598
<td class="normal">
599 600
</td></tr>
<tr><td>197</td>
601
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;preTransactionBegin($event);
602 603
</td></tr>
<tr><td>198</td>
604
<td class="normal">
605 606
</td></tr>
<tr><td>199</td>
607
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;$event-&gt;skipOperation)&nbsp;{
608 609
</td></tr>
<tr><td>200</td>
610
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{
611 612
</td></tr>
<tr><td>201</td>
613
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn-&gt;getDbh()-&gt;beginTransaction();
614 615
</td></tr>
<tr><td>202</td>
616
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch(Exception&nbsp;$e)&nbsp;{
617 618
</td></tr>
<tr><td>203</td>
619
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Transaction_Exception($e-&gt;getMessage());
620 621
</td></tr>
<tr><td>204</td>
622
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
623 624
</td></tr>
<tr><td>205</td>
625
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
626 627
</td></tr>
<tr><td>206</td>
628
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;postTransactionBegin($event);
629 630
</td></tr>
<tr><td>207</td>
631
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
632 633
</td></tr>
<tr><td>208</td>
634
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
635 636
</td></tr>
<tr><td>209</td>
637
<td class="normal">
638 639
</td></tr>
<tr><td>210</td>
640
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$level&nbsp;=&nbsp;++$this-&gt;transactionLevel;
641 642
</td></tr>
<tr><td>211</td>
643
<td class="normal">
644 645
</td></tr>
<tr><td>212</td>
646
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$level;
647 648
</td></tr>
<tr><td>213</td>
649
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
650 651
</td></tr>
<tr><td>214</td>
652
<td class="normal">
653 654
</td></tr>
<tr><td>215</td>
655
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
656 657
</td></tr>
<tr><td>216</td>
658
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;commit
659 660
</td></tr>
<tr><td>217</td>
661
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Commit&nbsp;the&nbsp;database&nbsp;changes&nbsp;done&nbsp;during&nbsp;a&nbsp;transaction&nbsp;that&nbsp;is&nbsp;in
662 663
</td></tr>
<tr><td>218</td>
664
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;progress&nbsp;or&nbsp;release&nbsp;a&nbsp;savepoint.&nbsp;This&nbsp;function&nbsp;may&nbsp;only&nbsp;be&nbsp;called&nbsp;when
665 666
</td></tr>
<tr><td>219</td>
667
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;auto-committing&nbsp;is&nbsp;disabled,&nbsp;otherwise&nbsp;it&nbsp;will&nbsp;fail.
668 669
</td></tr>
<tr><td>220</td>
670
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
671 672
</td></tr>
<tr><td>221</td>
673
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Listeners:&nbsp;preTransactionCommit,&nbsp;postTransactionCommit
674 675
</td></tr>
<tr><td>222</td>
676
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
677 678
</td></tr>
<tr><td>223</td>
679
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$savepoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;of&nbsp;a&nbsp;savepoint&nbsp;to&nbsp;release
680 681
</td></tr>
<tr><td>224</td>
682
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Doctrine_Transaction_Exception&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;transaction&nbsp;fails&nbsp;at&nbsp;database&nbsp;level
683 684
</td></tr>
<tr><td>225</td>
685
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Doctrine_Validator_Exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;transaction&nbsp;fails&nbsp;due&nbsp;to&nbsp;record&nbsp;validations
686 687
</td></tr>
<tr><td>226</td>
688
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;if&nbsp;commit&nbsp;couldn't&nbsp;be&nbsp;performed,&nbsp;true&nbsp;otherwise
689 690
</td></tr>
<tr><td>227</td>
691
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
692 693
</td></tr>
<tr><td>228</td>
694
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;commit($savepoint&nbsp;=&nbsp;null)
695 696
</td></tr>
<tr><td>229</td>
697
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
698 699
</td></tr>
<tr><td>230</td>
700
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn-&gt;connect();
701 702
</td></tr>
<tr><td>231</td>
703
<td class="normal">
704 705
</td></tr>
<tr><td>232</td>
706
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($this-&gt;transactionLevel&nbsp;==&nbsp;0)&nbsp;{
707 708
</td></tr>
<tr><td>233</td>
709
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;
710 711
</td></tr>
<tr><td>234</td>
712
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
713 714
</td></tr>
<tr><td>235</td>
715
<td class="normal">
716 717
</td></tr>
<tr><td>236</td>
718
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener&nbsp;=&nbsp;$this-&gt;conn-&gt;getAttribute(Doctrine::ATTR_LISTENER);
719 720
</td></tr>
<tr><td>237</td>
721
<td class="normal">
722 723
</td></tr>
<tr><td>238</td>
724
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;is_null($savepoint))&nbsp;{
725 726
</td></tr>
<tr><td>239</td>
727
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;transactionLevel&nbsp;-=&nbsp;$this-&gt;removeSavePoints($savepoint);
728 729
</td></tr>
<tr><td>240</td>
730
<td class="normal">
731 732
</td></tr>
<tr><td>241</td>
733
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$event&nbsp;=&nbsp;new&nbsp;Doctrine_Event($this,&nbsp;Doctrine_Event::SAVEPOINT_COMMIT);
734 735
</td></tr>
<tr><td>242</td>
736
<td class="normal">
737 738
</td></tr>
<tr><td>243</td>
739
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;preSavepointCommit($event);
740 741
</td></tr>
<tr><td>244</td>
742
<td class="normal">
743 744
</td></tr>
<tr><td>245</td>
745
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;$event-&gt;skipOperation)&nbsp;{
746 747
</td></tr>
<tr><td>246</td>
748
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;releaseSavePoint($savepoint);
749 750
</td></tr>
<tr><td>247</td>
751
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
752 753
</td></tr>
<tr><td>248</td>
754
<td class="normal">
755 756
</td></tr>
<tr><td>249</td>
757
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;postSavepointCommit($event);
758 759
</td></tr>
<tr><td>250</td>
760
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
761 762
</td></tr>
<tr><td>251</td>
763
<td class="normal">
764 765
</td></tr>
<tr><td>252</td>
766
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($this-&gt;transactionLevel&nbsp;==&nbsp;1)&nbsp;{&nbsp;&nbsp;
767 768
</td></tr>
<tr><td>253</td>
769
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;empty($this-&gt;invalid))&nbsp;{
770 771
</td></tr>
<tr><td>254</td>
772
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;rollback();
773 774
</td></tr>
<tr><td>255</td>
775
<td class="normal">
776 777
</td></tr>
<tr><td>256</td>
778
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tmp&nbsp;=&nbsp;$this-&gt;invalid;
779 780
</td></tr>
<tr><td>257</td>
781
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;invalid&nbsp;=&nbsp;array();
782 783
</td></tr>
<tr><td>258</td>
784
<td class="normal">
785 786
</td></tr>
<tr><td>259</td>
787
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Validator_Exception($tmp);
788 789
</td></tr>
<tr><td>260</td>
790
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
791 792
</td></tr>
<tr><td>261</td>
793
<td class="normal">
794 795
</td></tr>
<tr><td>262</td>
796
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;take&nbsp;snapshots&nbsp;of&nbsp;all&nbsp;collections&nbsp;used&nbsp;within&nbsp;this&nbsp;transaction
797 798
</td></tr>
<tr><td>263</td>
799
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($this-&gt;_collections&nbsp;as&nbsp;$coll)&nbsp;{
800 801
</td></tr>
<tr><td>264</td>
802
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$coll-&gt;takeSnapshot();
803 804
</td></tr>
<tr><td>265</td>
805
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
806 807
</td></tr>
<tr><td>266</td>
808
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_collections&nbsp;=&nbsp;array();
809 810
</td></tr>
<tr><td>267</td>
811
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
812 813
</td></tr>
<tr><td>268</td>
814
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$event&nbsp;=&nbsp;new&nbsp;Doctrine_Event($this,&nbsp;Doctrine_Event::TX_COMMIT);
815 816
</td></tr>
<tr><td>269</td>
817
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
818 819
</td></tr>
<tr><td>270</td>
820
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;preTransactionCommit($event);
821 822
</td></tr>
<tr><td>271</td>
823
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;$event-&gt;skipOperation)&nbsp;{
824 825
</td></tr>
<tr><td>272</td>
826
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn-&gt;getDbh()-&gt;commit();
827 828
</td></tr>
<tr><td>273</td>
829
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
830 831
</td></tr>
<tr><td>274</td>
832
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;postTransactionCommit($event);
833 834
</td></tr>
<tr><td>275</td>
835
<td class="normal">
836 837
</td></tr>
<tr><td>276</td>
838
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
839 840
</td></tr>
<tr><td>277</td>
841
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
842 843
</td></tr>
<tr><td>278</td>
844
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;transactionLevel--;
845 846
</td></tr>
<tr><td>279</td>
847
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
848 849
</td></tr>
<tr><td>280</td>
850
<td class="normal">
851 852
</td></tr>
<tr><td>281</td>
853
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;
854 855
</td></tr>
<tr><td>282</td>
856
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
857 858
</td></tr>
<tr><td>283</td>
859
<td class="normal">
860 861
</td></tr>
<tr><td>284</td>
862
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
863 864
</td></tr>
<tr><td>285</td>
865
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;rollback
866 867
</td></tr>
<tr><td>286</td>
868
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Cancel&nbsp;any&nbsp;database&nbsp;changes&nbsp;done&nbsp;during&nbsp;a&nbsp;transaction&nbsp;or&nbsp;since&nbsp;a&nbsp;specific
869 870
</td></tr>
<tr><td>287</td>
871
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;savepoint&nbsp;that&nbsp;is&nbsp;in&nbsp;progress.&nbsp;This&nbsp;function&nbsp;may&nbsp;only&nbsp;be&nbsp;called&nbsp;when
872 873
</td></tr>
<tr><td>288</td>
874
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;auto-committing&nbsp;is&nbsp;disabled,&nbsp;otherwise&nbsp;it&nbsp;will&nbsp;fail.&nbsp;Therefore,&nbsp;a&nbsp;new
875 876
</td></tr>
<tr><td>289</td>
877
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;transaction&nbsp;is&nbsp;implicitly&nbsp;started&nbsp;after&nbsp;canceling&nbsp;the&nbsp;pending&nbsp;changes.
878 879
</td></tr>
<tr><td>290</td>
880
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
881 882
</td></tr>
<tr><td>291</td>
883
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;this&nbsp;method&nbsp;can&nbsp;be&nbsp;listened&nbsp;with&nbsp;onPreTransactionRollback&nbsp;and&nbsp;onTransactionRollback
884 885
</td></tr>
<tr><td>292</td>
886
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;eventlistener&nbsp;methods
887 888
</td></tr>
<tr><td>293</td>
889
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
890 891
</td></tr>
<tr><td>294</td>
892
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$savepoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;of&nbsp;a&nbsp;savepoint&nbsp;to&nbsp;rollback&nbsp;to&nbsp;&nbsp;&nbsp;
893 894
</td></tr>
<tr><td>295</td>
895
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Doctrine_Transaction_Exception&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;rollback&nbsp;operation&nbsp;fails&nbsp;at&nbsp;database&nbsp;level
896 897
</td></tr>
<tr><td>296</td>
898
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;if&nbsp;rollback&nbsp;couldn't&nbsp;be&nbsp;performed,&nbsp;true&nbsp;otherwise
899 900
</td></tr>
<tr><td>297</td>
901
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
902 903
</td></tr>
<tr><td>298</td>
904
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;rollback($savepoint&nbsp;=&nbsp;null)
905 906
</td></tr>
<tr><td>299</td>
907
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
908 909
</td></tr>
<tr><td>300</td>
910
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn-&gt;connect();
911 912
</td></tr>
<tr><td>301</td>
913
<td class="normal">
914 915
</td></tr>
<tr><td>302</td>
916
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($this-&gt;transactionLevel&nbsp;==&nbsp;0)&nbsp;{
917 918
</td></tr>
<tr><td>303</td>
919
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;
920 921
</td></tr>
<tr><td>304</td>
922
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
923 924
</td></tr>
<tr><td>305</td>
925
<td class="normal">
926 927
</td></tr>
<tr><td>306</td>
928
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener&nbsp;=&nbsp;$this-&gt;conn-&gt;getAttribute(Doctrine::ATTR_LISTENER);
929
</td></tr>
930
<tr><td>307</td>
931
<td class="normal">
932
</td></tr>
933
<tr><td>308</td>
934
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;is_null($savepoint))&nbsp;{
935
</td></tr>
936
<tr><td>309</td>
937
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;transactionLevel&nbsp;-=&nbsp;$this-&gt;removeSavePoints($savepoint);
938
</td></tr>
939
<tr><td>310</td>
940
<td class="normal">
941
</td></tr>
942
<tr><td>311</td>
943
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$event&nbsp;=&nbsp;new&nbsp;Doctrine_Event($this,&nbsp;Doctrine_Event::SAVEPOINT_ROLLBACK);
944
</td></tr>
945
<tr><td>312</td>
946
<td class="normal">
947
</td></tr>
948
<tr><td>313</td>
949
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;preSavepointRollback($event);
950
</td></tr>
951
<tr><td>314</td>
952 953
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</td></tr>
954
<tr><td>315</td>
955 956
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;$event-&gt;skipOperation)&nbsp;{
</td></tr>
957
<tr><td>316</td>
958
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;rollbackSavePoint($savepoint);
959
</td></tr>
960
<tr><td>317</td>
961
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
962
</td></tr>
963
<tr><td>318</td>
964
<td class="normal">
965
</td></tr>
966
<tr><td>319</td>
967
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;postSavepointRollback($event);
968
</td></tr>
969
<tr><td>320</td>
970
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
971
</td></tr>
972
<tr><td>321</td>
973
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$event&nbsp;=&nbsp;new&nbsp;Doctrine_Event($this,&nbsp;Doctrine_Event::TX_ROLLBACK);
974
</td></tr>
975
<tr><td>322</td>
976
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;
977
</td></tr>
978
<tr><td>323</td>
979
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;preTransactionRollback($event);
980
</td></tr>
981
<tr><td>324</td>
982
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
983
</td></tr>
984
<tr><td>325</td>
985
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;$event-&gt;skipOperation)&nbsp;{
986
</td></tr>
987
<tr><td>326</td>
988
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;transactionLevel&nbsp;=&nbsp;0;
989
</td></tr>
990
<tr><td>327</td>
991
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{
992
</td></tr>
993
<tr><td>328</td>
994
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn-&gt;getDbh()-&gt;rollback();
995
</td></tr>
996
<tr><td>329</td>
997
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(Exception&nbsp;$e)&nbsp;{
998
</td></tr>
999
<tr><td>330</td>
1000
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Transaction_Exception($e-&gt;getMessage());
1001
</td></tr>
1002
<tr><td>331</td>
1003
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
1004
</td></tr>
1005
<tr><td>332</td>
1006
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
1007
</td></tr>
1008
<tr><td>333</td>
1009
<td class="normal">
1010
</td></tr>
1011
<tr><td>334</td>
1012
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$listener-&gt;postTransactionRollback($event);
1013
</td></tr>
1014
<tr><td>335</td>
1015
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
1016
</td></tr>
1017
<tr><td>336</td>
1018
<td class="normal">
1019
</td></tr>
1020
<tr><td>337</td>
1021
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;
1022
</td></tr>
1023
<tr><td>338</td>
1024
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
1025
</td></tr>
1026
<tr><td>339</td>
1027
<td class="normal">
1028
</td></tr>
1029
<tr><td>340</td>
1030
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
1031
</td></tr>
1032
<tr><td>341</td>
1033
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;releaseSavePoint
1034
</td></tr>
1035
<tr><td>342</td>
1036
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;creates&nbsp;a&nbsp;new&nbsp;savepoint
1037
</td></tr>
1038
<tr><td>343</td>
1039
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1040
</td></tr>
1041
<tr><td>344</td>
1042
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$savepoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;of&nbsp;a&nbsp;savepoint&nbsp;to&nbsp;create
1043
</td></tr>
1044
<tr><td>345</td>
1045
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
1046
</td></tr>
1047
<tr><td>346</td>
1048
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
1049
</td></tr>
1050
<tr><td>347</td>
1051
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;function&nbsp;createSavePoint($savepoint)
1052
</td></tr>
1053
<tr><td>348</td>
1054
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
1055
</td></tr>
1056
<tr><td>349</td>
1057
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Transaction_Exception('Savepoints&nbsp;not&nbsp;supported&nbsp;by&nbsp;this&nbsp;driver.');
1058
</td></tr>
1059
<tr><td>350</td>
1060
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
1061
</td></tr>
1062
<tr><td>351</td>
1063
<td class="normal">
1064
</td></tr>
1065
<tr><td>352</td>
1066
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
1067
</td></tr>
1068
<tr><td>353</td>
1069
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;releaseSavePoint
1070
</td></tr>
1071
<tr><td>354</td>
1072
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;releases&nbsp;given&nbsp;savepoint
1073
</td></tr>
1074
<tr><td>355</td>
1075
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1076
</td></tr>
1077
<tr><td>356</td>
1078
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$savepoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;of&nbsp;a&nbsp;savepoint&nbsp;to&nbsp;release
1079
</td></tr>
1080
<tr><td>357</td>
1081
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
1082
</td></tr>
1083
<tr><td>358</td>
1084
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
1085
</td></tr>
1086
<tr><td>359</td>
1087
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;function&nbsp;releaseSavePoint($savepoint)
1088
</td></tr>
1089
<tr><td>360</td>
1090
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
1091
</td></tr>
1092
<tr><td>361</td>
1093
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Transaction_Exception('Savepoints&nbsp;not&nbsp;supported&nbsp;by&nbsp;this&nbsp;driver.');
1094
</td></tr>
1095
<tr><td>362</td>
1096
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
1097
</td></tr>
1098
<tr><td>363</td>
1099
<td class="normal">
1100
</td></tr>
1101
<tr><td>364</td>
1102
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
1103
</td></tr>
1104
<tr><td>365</td>
1105
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;rollbackSavePoint
1106
</td></tr>
1107
<tr><td>366</td>
1108
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;releases&nbsp;given&nbsp;savepoint
1109
</td></tr>
1110
<tr><td>367</td>
1111
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1112
</td></tr>
1113
<tr><td>368</td>
1114
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$savepoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;of&nbsp;a&nbsp;savepoint&nbsp;to&nbsp;rollback&nbsp;to
1115
</td></tr>
1116
<tr><td>369</td>
1117
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
1118
</td></tr>
1119
<tr><td>370</td>
1120
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
1121
</td></tr>
1122
<tr><td>371</td>
1123
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;function&nbsp;rollbackSavePoint($savepoint)
1124
</td></tr>
1125
<tr><td>372</td>
1126
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
1127
</td></tr>
1128
<tr><td>373</td>
1129
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Transaction_Exception('Savepoints&nbsp;not&nbsp;supported&nbsp;by&nbsp;this&nbsp;driver.');
1130
</td></tr>
1131
<tr><td>374</td>
1132
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
1133
</td></tr>
1134
<tr><td>375</td>
1135
<td class="normal">
1136
</td></tr>
1137
<tr><td>376</td>
1138
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
1139
</td></tr>
1140
<tr><td>377</td>
1141
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;removeSavePoints
1142
</td></tr>
1143
<tr><td>378</td>
1144
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;removes&nbsp;a&nbsp;savepoint&nbsp;from&nbsp;the&nbsp;internal&nbsp;savePoints&nbsp;array&nbsp;of&nbsp;this&nbsp;transaction&nbsp;object
1145
</td></tr>
1146
<tr><td>379</td>
1147
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;and&nbsp;all&nbsp;its&nbsp;children&nbsp;savepoints
1148
</td></tr>
1149
<tr><td>380</td>
1150
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1151
</td></tr>
1152
<tr><td>381</td>
1153
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;sring&nbsp;$savepoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;of&nbsp;the&nbsp;savepoint&nbsp;to&nbsp;remove
1154
</td></tr>
1155
<tr><td>382</td>
1156
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removed&nbsp;savepoints
1157
</td></tr>
1158
<tr><td>383</td>
1159
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
1160
</td></tr>
1161
<tr><td>384</td>
1162
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;removeSavePoints($savepoint)
1163
</td></tr>
1164
<tr><td>385</td>
1165
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
1166
</td></tr>
1167
<tr><td>386</td>
1168
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;savePoints&nbsp;=&nbsp;array_values($this-&gt;savePoints);
1169
</td></tr>
1170
<tr><td>387</td>
1171
<td class="normal">
1172
</td></tr>
1173
<tr><td>388</td>
1174
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$found&nbsp;=&nbsp;false;
1175
</td></tr>
1176
<tr><td>389</td>
1177
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i&nbsp;=&nbsp;0;
1178
</td></tr>
1179
<tr><td>390</td>
1180
<td class="normal">
1181
</td></tr>
1182
<tr><td>391</td>
1183
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($this-&gt;savePoints&nbsp;as&nbsp;$key&nbsp;=&gt;&nbsp;$sp)&nbsp;{
1184
</td></tr>
1185
<tr><td>392</td>
1186
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;$found)&nbsp;{
1187
</td></tr>
1188
<tr><td>393</td>
1189
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($sp&nbsp;===&nbsp;$savepoint)&nbsp;{
1190
</td></tr>
1191
<tr><td>394</td>
1192
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$found&nbsp;=&nbsp;true;
1193
</td></tr>
1194
<tr><td>395</td>
1195
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
1196
</td></tr>
1197
<tr><td>396</td>
1198
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
1199
</td></tr>
1200
<tr><td>397</td>
1201
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($found)&nbsp;{
1202
</td></tr>
1203
<tr><td>398</td>
1204
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i++;
1205
</td></tr>
1206
<tr><td>399</td>
1207
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset($this-&gt;savePoints[$key]);
1208
</td></tr>
1209
<tr><td>400</td>
1210
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
1211
</td></tr>
1212
<tr><td>401</td>
1213
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
1214
</td></tr>
1215
<tr><td>402</td>
1216
<td class="normal">
1217
</td></tr>
1218
<tr><td>403</td>
1219
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$i;
1220
</td></tr>
1221
<tr><td>404</td>
1222
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
1223
</td></tr>
1224
<tr><td>405</td>
1225
<td class="normal">
1226
</td></tr>
1227
<tr><td>406</td>
1228
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
1229
</td></tr>
1230
<tr><td>407</td>
1231
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;setIsolation
1232
</td></tr>
1233
<tr><td>408</td>
1234
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1235
</td></tr>
1236
<tr><td>409</td>
1237
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Set&nbsp;the&nbsp;transacton&nbsp;isolation&nbsp;level.
1238
</td></tr>
1239
<tr><td>410</td>
1240
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(implemented&nbsp;by&nbsp;the&nbsp;connection&nbsp;drivers)
1241
</td></tr>
1242
<tr><td>411</td>
1243
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1244
</td></tr>
1245
<tr><td>412</td>
1246
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;example:
1247
</td></tr>
1248
<tr><td>413</td>
1249 1250
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
</td></tr>
1251
<tr><td>414</td>
1252
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;code&gt;
1253
</td></tr>
1254
<tr><td>415</td>
1255
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$tx-&gt;setIsolation('READ&nbsp;UNCOMMITTED');
1256
</td></tr>
1257
<tr><td>416</td>
1258
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;/code&gt;
1259
</td></tr>
1260
<tr><td>417</td>
1261
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1262
</td></tr>
1263
<tr><td>418</td>
1264
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;standard&nbsp;isolation&nbsp;level
1265
</td></tr>
1266
<tr><td>419</td>
1267
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READ&nbsp;UNCOMMITTED&nbsp;(allows&nbsp;dirty&nbsp;reads)
1268
</td></tr>
1269
<tr><td>420</td>
1270
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READ&nbsp;COMMITTED&nbsp;(prevents&nbsp;dirty&nbsp;reads)
1271
</td></tr>
1272
<tr><td>421</td>
1273
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REPEATABLE&nbsp;READ&nbsp;(prevents&nbsp;nonrepeatable&nbsp;reads)
1274
</td></tr>
1275
<tr><td>422</td>
1276
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SERIALIZABLE&nbsp;(prevents&nbsp;phantom&nbsp;reads)
1277
</td></tr>
1278
<tr><td>423</td>
1279
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1280
</td></tr>
1281
<tr><td>424</td>
1282
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Doctrine_Transaction_Exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;feature&nbsp;is&nbsp;not&nbsp;supported&nbsp;by&nbsp;the&nbsp;driver
1283
</td></tr>
1284
<tr><td>425</td>
1285
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;PDOException&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;something&nbsp;fails&nbsp;at&nbsp;the&nbsp;PDO&nbsp;level
1286
</td></tr>
1287
<tr><td>426</td>
1288
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
1289
</td></tr>
1290
<tr><td>427</td>
1291
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
1292
</td></tr>
1293
<tr><td>428</td>
1294
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;setIsolation($isolation)
1295
</td></tr>
1296
<tr><td>429</td>
1297
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
1298
</td></tr>
1299
<tr><td>430</td>
1300
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Transaction_Exception('Transaction&nbsp;isolation&nbsp;levels&nbsp;not&nbsp;supported&nbsp;by&nbsp;this&nbsp;driver.');
1301
</td></tr>
1302
<tr><td>431</td>
1303
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
1304
</td></tr>
1305
<tr><td>432</td>
1306
<td class="normal">
1307
</td></tr>
1308
<tr><td>433</td>
1309
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;/**
1310
</td></tr>
1311
<tr><td>434</td>
1312
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;getTransactionIsolation
1313
</td></tr>
1314
<tr><td>435</td>
1315
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1316
</td></tr>
1317
<tr><td>436</td>
1318
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;fetches&nbsp;the&nbsp;current&nbsp;session&nbsp;transaction&nbsp;isolation&nbsp;level
1319
</td></tr>
1320
<tr><td>437</td>
1321
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
1322
</td></tr>
1323
<tr><td>438</td>
1324
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;note:&nbsp;some&nbsp;drivers&nbsp;may&nbsp;support&nbsp;setting&nbsp;the&nbsp;transaction&nbsp;isolation&nbsp;level
1325
</td></tr>
1326
<tr><td>439</td>
1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;but&nbsp;not&nbsp;fetching&nbsp;it
</td></tr>
<tr><td>440</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
</td></tr>
<tr><td>441</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Doctrine_Transaction_Exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;feature&nbsp;is&nbsp;not&nbsp;supported&nbsp;by&nbsp;the&nbsp;driver
</td></tr>
<tr><td>442</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;PDOException&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;something&nbsp;fails&nbsp;at&nbsp;the&nbsp;PDO&nbsp;level
</td></tr>
<tr><td>443</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;the&nbsp;current&nbsp;session&nbsp;transaction&nbsp;isolation&nbsp;level
</td></tr>
<tr><td>444</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
</td></tr>
<tr><td>445</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getIsolation()
</td></tr>
<tr><td>446</td>
<td class="normal">&nbsp;&nbsp;&nbsp;&nbsp;{
</td></tr>
<tr><td>447</td>
<td class="covered">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Doctrine_Transaction_Exception('Fetching&nbsp;transaction&nbsp;isolation&nbsp;level&nbsp;not&nbsp;supported&nbsp;by&nbsp;this&nbsp;driver.');
</td></tr>
<tr><td>448</td>
<td class="orange">&nbsp;&nbsp;&nbsp;&nbsp;}
</td></tr>
<tr><td>449</td>
<td class="normal">}
</td></tr>
1359
</table></body></html>