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