source: trunk/phpgwapi/inc/adodb/drivers/adodb-csv.inc.php @ 34

Revision 34, 4.7 KB checked in by niltonneto, 17 years ago (diff)

Versão nova do ADODB (4.5 para 4.95)

  • Property svn:eol-style set to native
  • Property svn:executable set to *
RevLine 
[2]1<?php
2/*
[34]3V4.94 23 Jan 2007  (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved.
[2]4  Released under both BSD license and Lesser GPL library license.
5  Whenever there is any discrepancy between the two licenses,
6  the BSD license will take precedence.
7  Set tabs to 4.
8 
9  Currently unsupported: MetaDatabases, MetaTables and MetaColumns, and also inputarr in Execute.
10  Native types have been converted to MetaTypes.
11  Transactions not supported yet.
[34]12 
13  Limitation of url length. For IIS, see MaxClientRequestBuffer registry value.
14 
15          http://support.microsoft.com/default.aspx?scid=kb;en-us;260694
[2]16*/
17
18// security - hide paths
19if (!defined('ADODB_DIR')) die();
20
21if (! defined("_ADODB_CSV_LAYER")) {
22 define("_ADODB_CSV_LAYER", 1 );
23
24include_once(ADODB_DIR.'/adodb-csvlib.inc.php');
25 
26class ADODB_csv extends ADOConnection {
27        var $databaseType = 'csv';
28        var $databaseProvider = 'csv';
29        var $hasInsertID = true;
30        var $hasAffectedRows = true;   
31        var $fmtTimeStamp = "'Y-m-d H:i:s'";
32        var $_affectedrows=0;
33        var $_insertid=0;
34        var $_url;
35        var $replaceQuote = "''"; // string to use to replace quotes
36        var $hasTransactions = false;
37        var $_errorNo = false;
38       
39        function ADODB_csv()
40        {               
41        }
42       
43        function _insertid()
44        {
45                        return $this->_insertid;
46        }
47       
48        function _affectedrows()
49        {
50                        return $this->_affectedrows;
51        }
52 
53        function &MetaDatabases()
54        {
55                return false;
56        }
57
58       
59        // returns true or false
60        function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)
61        {
62                if (strtolower(substr($argHostname,0,7)) !== 'http://') return false;
63                $this->_url = $argHostname;
64                return true;   
65        }
66       
67        // returns true or false
68        function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)
69        {
70                if (strtolower(substr($argHostname,0,7)) !== 'http://') return false;
71                $this->_url = $argHostname;
72                return true;
73        }
74       
75        function &MetaColumns($table)
76        {
77                return false;
78        }
79               
80               
81        // parameters use PostgreSQL convention, not MySQL
82        function &SelectLimit($sql,$nrows=-1,$offset=-1)
83        {
84        global $ADODB_FETCH_MODE;
85       
86                $url = $this->_url.'?sql='.urlencode($sql)."&nrows=$nrows&fetch=".
87                        (($this->fetchMode !== false)?$this->fetchMode : $ADODB_FETCH_MODE).
88                        "&offset=$offset";
89                $err = false;
90                $rs = csv2rs($url,$err,false);
91               
92                if ($this->debug) print "$url<br><i>$err</i><br>";
93
94                $at = strpos($err,'::::');
95                if ($at === false) {
96                        $this->_errorMsg = $err;
97                        $this->_errorNo = (integer)$err;
98                } else {
99                        $this->_errorMsg = substr($err,$at+4,1024);
100                        $this->_errorNo = -9999;
101                }
102                if ($this->_errorNo)
103                        if ($fn = $this->raiseErrorFn) {
104                                $fn($this->databaseType,'EXECUTE',$this->ErrorNo(),$this->ErrorMsg(),$sql,'');
105                        }
106                       
107                if (is_object($rs)) {   
108               
109                        $rs->databaseType='csv';               
110                        $rs->fetchMode = ($this->fetchMode !== false) ?  $this->fetchMode : $ADODB_FETCH_MODE;
111                        $rs->connection = &$this;
112                }
113                return $rs;
114        }
115       
116        // returns queryID or false
117        function &_Execute($sql,$inputarr=false)
118        {
119        global $ADODB_FETCH_MODE;
120       
121                if (!$this->_bindInputArray && $inputarr) {
122                        $sqlarr = explode('?',$sql);
123                        $sql = '';
124                        $i = 0;
125                        foreach($inputarr as $v) {
126
127                                $sql .= $sqlarr[$i];
128                                if (gettype($v) == 'string')
129                                        $sql .= $this->qstr($v);
130                                else if ($v === null)
131                                        $sql .= 'NULL';
132                                else
133                                        $sql .= $v;
134                                $i += 1;
135       
136                        }
137                        $sql .= $sqlarr[$i];
138                        if ($i+1 != sizeof($sqlarr))   
139                                print "Input Array does not match ?: ".htmlspecialchars($sql);
140                        $inputarr = false;
141                }
142               
143                $url =  $this->_url.'?sql='.urlencode($sql)."&fetch=".
144                        (($this->fetchMode !== false)?$this->fetchMode : $ADODB_FETCH_MODE);
145                $err = false;
146               
147               
148                $rs = csv2rs($url,$err,false);
149                if ($this->debug) print urldecode($url)."<br><i>$err</i><br>";
150                $at = strpos($err,'::::');
151                if ($at === false) {           
152                        $this->_errorMsg = $err;
153                        $this->_errorNo = (integer)$err;
154                } else {
155                        $this->_errorMsg = substr($err,$at+4,1024);
156                        $this->_errorNo = -9999;
157                }
158               
159                if ($this->_errorNo)
160                        if ($fn = $this->raiseErrorFn) {
161                                $fn($this->databaseType,'EXECUTE',$this->ErrorNo(),$this->ErrorMsg(),$sql,$inputarr);
162                        }
163                if (is_object($rs)) {
164                        $rs->fetchMode = ($this->fetchMode !== false) ?  $this->fetchMode : $ADODB_FETCH_MODE;
165                       
166                        $this->_affectedrows = $rs->affectedrows;
167                        $this->_insertid = $rs->insertid;
168                        $rs->databaseType='csv';
169                        $rs->connection = &$this;
170                }
171                return $rs;
172        }
173
174        /*      Returns: the last error message from previous database operation        */     
175        function ErrorMsg()
176        {
177                        return $this->_errorMsg;
178        }
179       
180        /*      Returns: the last error number from previous database operation */     
181        function ErrorNo()
182        {
183                return $this->_errorNo;
184        }
185       
186        // returns true or false
187        function _close()
188        {
189                return true;
190        }
191} // class
192
193class ADORecordset_csv extends ADORecordset {
194        function ADORecordset_csv($id,$mode=false)
195        {
196                $this->ADORecordset($id,$mode);
197        }
198       
199        function _close()
200        {
201                return true;
202        }
203}
204
205} // define
206       
207?>
Note: See TracBrowser for help on using the repository browser.