02e4757e7606e5b420e3eb0dd7f21ce84b064da9
[Packages/TYPO3.CMS.git] / typo3 / sysext / adodb / adodb / drivers / adodb-sybase_ase.inc.php
1 <?php
2 /*
3 V4.93 10 Oct 2006 (c) 2000-2006 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 ?>