source: sandbox/2.5.1-evolucao/phpgwapi/inc/adodb/drivers/adodb-csv.inc.php @ 8222

Revision 8222, 4.8 KB checked in by angelo, 11 years ago (diff)

Ticket #3491 - Compatibilizar Expresso com novas versoes do PHP

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2/*
3V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights reserved.
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.
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
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, $normalize=true)
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.