source: Dev/trunk/rdfapi/util/adodb/drivers/adodb-mysqlt.inc.php @ 12

Last change on this file since 12 was 12, checked in by basvannuland, 14 years ago

Added RAP RDF API
Added RDF reader writer for save and load survey

File size: 3.8 KB
Line 
1<?php
2
3/*
4V4.94 23 Jan 2007  (c) 2000-2007 John Lim (jlim#natsoft.com.my). 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
17if (!defined('ADODB_DIR')) die();
18
19include_once(ADODB_DIR."/drivers/adodb-mysql.inc.php");
20
21
22class 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        /* set transaction mode
34       
35        SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL
36{ READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
37
38        */
39        function SetTransactionMode( $transaction_mode )
40        {
41                $this->_transmode  = $transaction_mode;
42                if (empty($transaction_mode)) {
43                        $this->Execute('SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
44                        return;
45                }
46                if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode;
47                $this->Execute("SET SESSION TRANSACTION ".$transaction_mode);
48        }
49       
50        function BeginTrans()
51        {         
52                if ($this->transOff) return true;
53                $this->transCnt += 1;
54                $this->Execute('SET AUTOCOMMIT=0');
55                $this->Execute('BEGIN');
56                return true;
57        }
58       
59        function CommitTrans($ok=true)
60        {
61                if ($this->transOff) return true;
62                if (!$ok) return $this->RollbackTrans();
63               
64                if ($this->transCnt) $this->transCnt -= 1;
65                $this->Execute('COMMIT');
66                $this->Execute('SET AUTOCOMMIT=1');
67                return true;
68        }
69       
70        function RollbackTrans()
71        {
72                if ($this->transOff) return true;
73                if ($this->transCnt) $this->transCnt -= 1;
74                $this->Execute('ROLLBACK');
75                $this->Execute('SET AUTOCOMMIT=1');
76                return true;
77        }
78       
79        function RowLock($tables,$where='',$flds='1 as adodb_ignore')
80        {
81                if ($this->transCnt==0) $this->BeginTrans();
82                if ($where) $where = ' where '.$where;
83                $rs =& $this->Execute("select $flds from $tables $where for update");
84                return !empty($rs);
85        }
86       
87}
88
89class ADORecordSet_mysqlt extends ADORecordSet_mysql{   
90        var $databaseType = "mysqlt";
91       
92        function ADORecordSet_mysqlt($queryID,$mode=false)
93        {
94                if ($mode === false) {
95                        global $ADODB_FETCH_MODE;
96                        $mode = $ADODB_FETCH_MODE;
97                }
98               
99                switch ($mode)
100                {
101                case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
102                case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
103               
104                case ADODB_FETCH_DEFAULT:
105                case ADODB_FETCH_BOTH:
106                default: $this->fetchMode = MYSQL_BOTH; break;
107                }
108       
109                $this->adodbFetchMode = $mode;
110                $this->ADORecordSet($queryID); 
111        }
112       
113        function MoveNext()
114        {
115                if (@$this->fields = mysql_fetch_array($this->_queryID,$this->fetchMode)) {
116                        $this->_currentRow += 1;
117                        return true;
118                }
119                if (!$this->EOF) {
120                        $this->_currentRow += 1;
121                        $this->EOF = true;
122                }
123                return false;
124        }
125}
126
127class ADORecordSet_ext_mysqlt extends ADORecordSet_mysqlt {     
128
129        function ADORecordSet_ext_mysqlt($queryID,$mode=false)
130        {
131                if ($mode === false) {
132                        global $ADODB_FETCH_MODE;
133                        $mode = $ADODB_FETCH_MODE;
134                }
135                switch ($mode)
136                {
137                case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
138                case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
139               
140                case ADODB_FETCH_DEFAULT:
141                case ADODB_FETCH_BOTH:
142                default:
143                        $this->fetchMode = MYSQL_BOTH; break;
144                }
145                $this->adodbFetchMode = $mode;
146                $this->ADORecordSet($queryID); 
147        }
148       
149        function MoveNext()
150        {
151                return adodb_movenext($this);
152        }
153}
154
155?>
Note: See TracBrowser for help on using the repository browser.