1 | <?php |
---|
2 | /* |
---|
3 | 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. |
---|
9 | |
---|
10 | Contributed by Interakt Online. Thx Cristian MARIN cristic#interaktonline.com |
---|
11 | */ |
---|
12 | |
---|
13 | |
---|
14 | require_once ADODB_DIR."/drivers/adodb-sybase.inc.php"; |
---|
15 | |
---|
16 | class ADODB_sybase_ase extends ADODB_sybase { |
---|
17 | var $databaseType = "sybase_ase"; |
---|
18 | |
---|
19 | var $metaTablesSQL="SELECT sysobjects.name FROM sysobjects, sysusers WHERE sysobjects.type='U' AND sysobjects.uid = sysusers.uid"; |
---|
20 | var $metaColumnsSQL = "SELECT syscolumns.name AS field_name, systypes.name AS type, systypes.length AS width FROM sysobjects, syscolumns, systypes WHERE sysobjects.name='%s' AND syscolumns.id = sysobjects.id AND systypes.type=syscolumns.type"; |
---|
21 | var $metaDatabasesSQL ="SELECT a.name FROM master.dbo.sysdatabases a, master.dbo.syslogins b WHERE a.suid = b.suid and a.name like '%' and a.name != 'tempdb' and a.status3 != 256 order by 1"; |
---|
22 | |
---|
23 | function ADODB_sybase_ase() |
---|
24 | { |
---|
25 | } |
---|
26 | |
---|
27 | // split the Views, Tables and procedures. |
---|
28 | function &MetaTables($ttype=false,$showSchema=false,$mask=false) |
---|
29 | { |
---|
30 | $false = false; |
---|
31 | if ($this->metaTablesSQL) { |
---|
32 | // complicated state saving by the need for backward compat |
---|
33 | |
---|
34 | if ($ttype == 'VIEWS'){ |
---|
35 | $sql = str_replace('U', 'V', $this->metaTablesSQL); |
---|
36 | }elseif (false === $ttype){ |
---|
37 | $sql = str_replace('U',"U' OR type='V", $this->metaTablesSQL); |
---|
38 | }else{ // TABLES OR ANY OTHER |
---|
39 | $sql = $this->metaTablesSQL; |
---|
40 | } |
---|
41 | $rs = $this->Execute($sql); |
---|
42 | |
---|
43 | if ($rs === false || !method_exists($rs, 'GetArray')){ |
---|
44 | return $false; |
---|
45 | } |
---|
46 | $arr =& $rs->GetArray(); |
---|
47 | |
---|
48 | $arr2 = array(); |
---|
49 | foreach($arr as $key=>$value){ |
---|
50 | $arr2[] = trim($value['name']); |
---|
51 | } |
---|
52 | return $arr2; |
---|
53 | } |
---|
54 | return $false; |
---|
55 | } |
---|
56 | |
---|
57 | function MetaDatabases() |
---|
58 | { |
---|
59 | $arr = array(); |
---|
60 | if ($this->metaDatabasesSQL!='') { |
---|
61 | $rs = $this->Execute($this->metaDatabasesSQL); |
---|
62 | if ($rs && !$rs->EOF){ |
---|
63 | while (!$rs->EOF){ |
---|
64 | $arr[] = $rs->Fields('name'); |
---|
65 | $rs->MoveNext(); |
---|
66 | } |
---|
67 | return $arr; |
---|
68 | } |
---|
69 | } |
---|
70 | return false; |
---|
71 | } |
---|
72 | |
---|
73 | // fix a bug which prevent the metaColumns query to be executed for Sybase ASE |
---|
74 | function &MetaColumns($table,$upper=false) |
---|
75 | { |
---|
76 | $false = false; |
---|
77 | if (!empty($this->metaColumnsSQL)) { |
---|
78 | |
---|
79 | $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table)); |
---|
80 | if ($rs === false) return $false; |
---|
81 | |
---|
82 | $retarr = array(); |
---|
83 | while (!$rs->EOF) { |
---|
84 | $fld =& new ADOFieldObject(); |
---|
85 | $fld->name = $rs->Fields('field_name'); |
---|
86 | $fld->type = $rs->Fields('type'); |
---|
87 | $fld->max_length = $rs->Fields('width'); |
---|
88 | $retarr[strtoupper($fld->name)] = $fld; |
---|
89 | $rs->MoveNext(); |
---|
90 | } |
---|
91 | $rs->Close(); |
---|
92 | return $retarr; |
---|
93 | } |
---|
94 | return $false; |
---|
95 | } |
---|
96 | |
---|
97 | function getProcedureList($schema) |
---|
98 | { |
---|
99 | return false; |
---|
100 | } |
---|
101 | |
---|
102 | function ErrorMsg() |
---|
103 | { |
---|
104 | if (!function_exists('sybase_connect')){ |
---|
105 | return 'Your PHP doesn\'t contain the Sybase connection module!'; |
---|
106 | } |
---|
107 | return parent::ErrorMsg(); |
---|
108 | } |
---|
109 | } |
---|
110 | |
---|
111 | class adorecordset_sybase_ase extends ADORecordset_sybase { |
---|
112 | var $databaseType = "sybase_ase"; |
---|
113 | function ADORecordset_sybase_ase($id,$mode=false) |
---|
114 | { |
---|
115 | $this->ADORecordSet_sybase($id,$mode); |
---|
116 | } |
---|
117 | |
---|
118 | } |
---|
119 | ?> |
---|