source: Dev/trunk/rdfapi/util/adodb/adodb-error.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: 8.6 KB
Line 
1<?php
2/**
3 * @version V4.94 23 Jan 2007 (c) 2000-2007 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 *
8 * Set tabs to 4 for best viewing.
9 *
10 * The following code is adapted from the PEAR DB error handling code.
11 * Portions (c)1997-2002 The PHP Group.
12 */
13
14
15if (!defined("DB_ERROR")) define("DB_ERROR",-1);
16
17if (!defined("DB_ERROR_SYNTAX")) {
18        define("DB_ERROR_SYNTAX",              -2);
19        define("DB_ERROR_CONSTRAINT",          -3);
20        define("DB_ERROR_NOT_FOUND",           -4);
21        define("DB_ERROR_ALREADY_EXISTS",      -5);
22        define("DB_ERROR_UNSUPPORTED",         -6);
23        define("DB_ERROR_MISMATCH",            -7);
24        define("DB_ERROR_INVALID",             -8);
25        define("DB_ERROR_NOT_CAPABLE",         -9);
26        define("DB_ERROR_TRUNCATED",          -10);
27        define("DB_ERROR_INVALID_NUMBER",     -11);
28        define("DB_ERROR_INVALID_DATE",       -12);
29        define("DB_ERROR_DIVZERO",            -13);
30        define("DB_ERROR_NODBSELECTED",       -14);
31        define("DB_ERROR_CANNOT_CREATE",      -15);
32        define("DB_ERROR_CANNOT_DELETE",      -16);
33        define("DB_ERROR_CANNOT_DROP",        -17);
34        define("DB_ERROR_NOSUCHTABLE",        -18);
35        define("DB_ERROR_NOSUCHFIELD",        -19);
36        define("DB_ERROR_NEED_MORE_DATA",     -20);
37        define("DB_ERROR_NOT_LOCKED",         -21);
38        define("DB_ERROR_VALUE_COUNT_ON_ROW", -22);
39        define("DB_ERROR_INVALID_DSN",        -23);
40        define("DB_ERROR_CONNECT_FAILED",     -24);
41        define("DB_ERROR_EXTENSION_NOT_FOUND",-25);
42        define("DB_ERROR_NOSUCHDB",           -25);
43        define("DB_ERROR_ACCESS_VIOLATION",   -26);
44}
45
46function adodb_errormsg($value)
47{
48global $ADODB_LANG,$ADODB_LANG_ARRAY;
49
50        if (empty($ADODB_LANG)) $ADODB_LANG = 'en';
51        if (isset($ADODB_LANG_ARRAY['LANG']) && $ADODB_LANG_ARRAY['LANG'] == $ADODB_LANG) ;
52        else {
53                include_once(ADODB_DIR."/lang/adodb-$ADODB_LANG.inc.php");
54    }
55        return isset($ADODB_LANG_ARRAY[$value]) ? $ADODB_LANG_ARRAY[$value] : $ADODB_LANG_ARRAY[DB_ERROR];
56}
57
58function adodb_error($provider,$dbType,$errno)
59{
60        //var_dump($errno);
61        if (is_numeric($errno) && $errno == 0) return 0;
62        switch($provider) {
63        case 'mysql': $map = adodb_error_mysql(); break;
64       
65        case 'oracle':
66        case 'oci8': $map = adodb_error_oci8(); break;
67       
68        case 'ibase': $map = adodb_error_ibase(); break;
69       
70        case 'odbc': $map = adodb_error_odbc(); break;
71       
72        case 'mssql':
73        case 'sybase': $map = adodb_error_mssql(); break;
74       
75        case 'informix': $map = adodb_error_ifx(); break;
76       
77        case 'postgres': return adodb_error_pg($errno); break;
78       
79        case 'sqlite': return $map = adodb_error_sqlite(); break;
80        default:
81                return DB_ERROR;
82        }       
83        //print_r($map);
84        //var_dump($errno);
85        if (isset($map[$errno])) return $map[$errno];
86        return DB_ERROR;
87}
88
89//**************************************************************************************
90
91function adodb_error_pg($errormsg)
92{
93        if (is_numeric($errormsg)) return (integer) $errormsg;
94    static $error_regexps = array(
95            '/(Table does not exist\.|Relation [\"\'].*[\"\'] does not exist|sequence does not exist|class ".+" not found)$/' => DB_ERROR_NOSUCHTABLE,
96            '/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*/'      => DB_ERROR_ALREADY_EXISTS,
97            '/divide by zero$/'                     => DB_ERROR_DIVZERO,
98            '/pg_atoi: error in .*: can\'t parse /' => DB_ERROR_INVALID_NUMBER,
99            '/ttribute [\"\'].*[\"\'] not found|Relation [\"\'].*[\"\'] does not have attribute [\"\'].*[\"\']/' => DB_ERROR_NOSUCHFIELD,
100            '/parser: parse error at or near \"/'   => DB_ERROR_SYNTAX,
101            '/referential integrity violation/'     => DB_ERROR_CONSTRAINT,
102                        '/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*|duplicate key violates unique constraint/'     
103                                 => DB_ERROR_ALREADY_EXISTS
104        );
105        reset($error_regexps);
106    while (list($regexp,$code) = each($error_regexps)) {
107        if (preg_match($regexp, $errormsg)) {
108            return $code;
109        }
110    }
111    // Fall back to DB_ERROR if there was no mapping.
112    return DB_ERROR;
113}
114       
115function adodb_error_odbc()
116{
117static $MAP = array(
118            '01004' => DB_ERROR_TRUNCATED,
119            '07001' => DB_ERROR_MISMATCH,
120            '21S01' => DB_ERROR_MISMATCH,
121            '21S02' => DB_ERROR_MISMATCH,
122            '22003' => DB_ERROR_INVALID_NUMBER,
123            '22008' => DB_ERROR_INVALID_DATE,
124            '22012' => DB_ERROR_DIVZERO,
125            '23000' => DB_ERROR_CONSTRAINT,
126            '24000' => DB_ERROR_INVALID,
127            '34000' => DB_ERROR_INVALID,
128            '37000' => DB_ERROR_SYNTAX,
129            '42000' => DB_ERROR_SYNTAX,
130            'IM001' => DB_ERROR_UNSUPPORTED,
131            'S0000' => DB_ERROR_NOSUCHTABLE,
132            'S0001' => DB_ERROR_NOT_FOUND,
133            'S0002' => DB_ERROR_NOSUCHTABLE,
134            'S0011' => DB_ERROR_ALREADY_EXISTS,
135            'S0012' => DB_ERROR_NOT_FOUND,
136            'S0021' => DB_ERROR_ALREADY_EXISTS,
137            'S0022' => DB_ERROR_NOT_FOUND,
138                        'S1000' => DB_ERROR_NOSUCHTABLE,
139            'S1009' => DB_ERROR_INVALID,
140            'S1090' => DB_ERROR_INVALID,
141            'S1C00' => DB_ERROR_NOT_CAPABLE
142        );
143                return $MAP;
144}
145
146function adodb_error_ibase()
147{
148static $MAP = array(
149            -104 => DB_ERROR_SYNTAX,
150            -150 => DB_ERROR_ACCESS_VIOLATION,
151            -151 => DB_ERROR_ACCESS_VIOLATION,
152            -155 => DB_ERROR_NOSUCHTABLE,
153            -157 => DB_ERROR_NOSUCHFIELD,
154            -158 => DB_ERROR_VALUE_COUNT_ON_ROW,
155            -170 => DB_ERROR_MISMATCH,
156            -171 => DB_ERROR_MISMATCH,
157            -172 => DB_ERROR_INVALID,
158            -204 => DB_ERROR_INVALID,
159            -205 => DB_ERROR_NOSUCHFIELD,
160            -206 => DB_ERROR_NOSUCHFIELD,
161            -208 => DB_ERROR_INVALID,
162            -219 => DB_ERROR_NOSUCHTABLE,
163            -297 => DB_ERROR_CONSTRAINT,
164            -530 => DB_ERROR_CONSTRAINT,
165            -803 => DB_ERROR_CONSTRAINT,
166            -551 => DB_ERROR_ACCESS_VIOLATION,
167            -552 => DB_ERROR_ACCESS_VIOLATION,
168            -922 => DB_ERROR_NOSUCHDB,
169            -923 => DB_ERROR_CONNECT_FAILED,
170            -924 => DB_ERROR_CONNECT_FAILED
171        );
172               
173                return $MAP;
174}
175
176function adodb_error_ifx()
177{
178static $MAP = array(
179            '-201'    => DB_ERROR_SYNTAX,
180            '-206'    => DB_ERROR_NOSUCHTABLE,
181            '-217'    => DB_ERROR_NOSUCHFIELD,
182            '-329'    => DB_ERROR_NODBSELECTED,
183            '-1204'   => DB_ERROR_INVALID_DATE,
184            '-1205'   => DB_ERROR_INVALID_DATE,
185            '-1206'   => DB_ERROR_INVALID_DATE,
186            '-1209'   => DB_ERROR_INVALID_DATE,
187            '-1210'   => DB_ERROR_INVALID_DATE,
188            '-1212'   => DB_ERROR_INVALID_DATE
189       );
190           
191           return $MAP;
192}
193
194function adodb_error_oci8()
195{
196static $MAP = array(
197                         1 => DB_ERROR_ALREADY_EXISTS,
198            900 => DB_ERROR_SYNTAX,
199            904 => DB_ERROR_NOSUCHFIELD,
200            923 => DB_ERROR_SYNTAX,
201            942 => DB_ERROR_NOSUCHTABLE,
202            955 => DB_ERROR_ALREADY_EXISTS,
203            1476 => DB_ERROR_DIVZERO,
204            1722 => DB_ERROR_INVALID_NUMBER,
205            2289 => DB_ERROR_NOSUCHTABLE,
206            2291 => DB_ERROR_CONSTRAINT,
207            2449 => DB_ERROR_CONSTRAINT
208        );
209           
210        return $MAP;
211}
212
213function adodb_error_mssql()
214{
215static $MAP = array(
216                  208 => DB_ERROR_NOSUCHTABLE,
217          2601 => DB_ERROR_ALREADY_EXISTS
218       );
219           
220        return $MAP;
221}
222
223function adodb_error_sqlite()
224{
225static $MAP = array(
226                  1 => DB_ERROR_SYNTAX
227       );
228           
229        return $MAP;
230}
231
232function adodb_error_mysql()
233{
234static $MAP = array(
235           1004 => DB_ERROR_CANNOT_CREATE,
236           1005 => DB_ERROR_CANNOT_CREATE,
237           1006 => DB_ERROR_CANNOT_CREATE,
238           1007 => DB_ERROR_ALREADY_EXISTS,
239           1008 => DB_ERROR_CANNOT_DROP,
240                   1045 => DB_ERROR_ACCESS_VIOLATION,
241           1046 => DB_ERROR_NODBSELECTED,
242                   1049 => DB_ERROR_NOSUCHDB,
243           1050 => DB_ERROR_ALREADY_EXISTS,
244           1051 => DB_ERROR_NOSUCHTABLE,
245           1054 => DB_ERROR_NOSUCHFIELD,
246           1062 => DB_ERROR_ALREADY_EXISTS,
247           1064 => DB_ERROR_SYNTAX,
248           1100 => DB_ERROR_NOT_LOCKED,
249           1136 => DB_ERROR_VALUE_COUNT_ON_ROW,
250           1146 => DB_ERROR_NOSUCHTABLE,
251           1048 => DB_ERROR_CONSTRAINT,
252                    2002 => DB_ERROR_CONNECT_FAILED,
253                        2005 => DB_ERROR_CONNECT_FAILED
254       );
255           
256        return $MAP;
257}
258?>
Note: See TracBrowser for help on using the repository browser.