[TASK] Update ADOdb to 5.18
[Packages/TYPO3.CMS.git] / typo3 / sysext / adodb / adodb / drivers / adodb-mysqlpo.inc.php
1 <?php
2
3 /*
4 V5.18 3 Sep 2012 (c) 2000-2012 John Lim (jlim#natsoft.com). All rights reserved.
5 Released under both BSD license and Lesser GPL library license.
6 Whenever there is any discrepancy between the two licenses,
7 the BSD license will take precedence.
8 Set tabs to 8.
9
10 MySQL code that supports transactions. For MySQL 3.23 or later.
11 Code from James Poon <jpoon88@yahoo.com>
12
13 Requires mysql client. Works on Windows and Unix.
14 */
15
16 // security - hide paths
17 if (!defined('ADODB_DIR')) die();
18
19 include_once(ADODB_DIR."/drivers/adodb-mysql.inc.php");
20
21
22 class ADODB_mysqlt extends ADODB_mysql {
23 var $databaseType = 'mysqlt';
24 var $ansiOuter = true; // for Version 3.23.17 or later
25 var $hasTransactions = true;
26 var $autoRollback = true; // apparently mysql does not autorollback properly
27
28 function ADODB_mysqlt()
29 {
30 global $ADODB_EXTENSION; if ($ADODB_EXTENSION) $this->rsPrefix .= 'ext_';
31 }
32
33 function BeginTrans()
34 {
35 if ($this->transOff) return true;
36 $this->transCnt += 1;
37 $this->Execute('SET AUTOCOMMIT=0');
38 $this->Execute('BEGIN');
39 return true;
40 }
41
42 function CommitTrans($ok=true)
43 {
44 if ($this->transOff) return true;
45 if (!$ok) return $this->RollbackTrans();
46
47 if ($this->transCnt) $this->transCnt -= 1;
48 $this->Execute('COMMIT');
49 $this->Execute('SET AUTOCOMMIT=1');
50 return true;
51 }
52
53 function RollbackTrans()
54 {
55 if ($this->transOff) return true;
56 if ($this->transCnt) $this->transCnt -= 1;
57 $this->Execute('ROLLBACK');
58 $this->Execute('SET AUTOCOMMIT=1');
59 return true;
60 }
61
62 function RowLock($tables,$where='',$col='1 as adodbignore')
63 {
64 if ($this->transCnt==0) $this->BeginTrans();
65 if ($where) $where = ' where '.$where;
66 $rs = $this->Execute("select $col from $tables $where for update");
67 return !empty($rs);
68 }
69
70 }
71
72 class ADORecordSet_mysqlt extends ADORecordSet_mysql{
73 var $databaseType = "mysqlt";
74
75 function ADORecordSet_mysqlt($queryID,$mode=false)
76 {
77 if ($mode === false) {
78 global $ADODB_FETCH_MODE;
79 $mode = $ADODB_FETCH_MODE;
80 }
81
82 switch ($mode)
83 {
84 case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
85 case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
86
87 case ADODB_FETCH_DEFAULT:
88 case ADODB_FETCH_BOTH:
89 default: $this->fetchMode = MYSQL_BOTH; break;
90 }
91
92 $this->adodbFetchMode = $mode;
93 $this->ADORecordSet($queryID);
94 }
95
96 function MoveNext()
97 {
98 if (@$this->fields = mysql_fetch_array($this->_queryID,$this->fetchMode)) {
99 $this->_currentRow += 1;
100 return true;
101 }
102 if (!$this->EOF) {
103 $this->_currentRow += 1;
104 $this->EOF = true;
105 }
106 return false;
107 }
108 }
109
110 class ADORecordSet_ext_mysqlt extends ADORecordSet_mysqlt {
111
112 function ADORecordSet_ext_mysqlt($queryID,$mode=false)
113 {
114 if ($mode === false) {
115 global $ADODB_FETCH_MODE;
116 $mode = $ADODB_FETCH_MODE;
117 }
118 switch ($mode)
119 {
120 case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
121 case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
122
123 case ADODB_FETCH_DEFAULT:
124 case ADODB_FETCH_BOTH:
125 default:
126 $this->fetchMode = MYSQL_BOTH; break;
127 }
128 $this->adodbFetchMode = $mode;
129 $this->ADORecordSet($queryID);
130 }
131
132 function MoveNext()
133 {
134 return adodb_movenext($this);
135 }
136 }
137
138 ?>