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

Revision 2, 4.6 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

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