Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.

Differences Between: [Versions 310 and 311] [Versions 310 and 400] [Versions 310 and 401] [Versions 310 and 402] [Versions 310 and 403]

   1  <?php
   2  /*
   3    @version   v5.20.16  12-Jan-2020
   4    @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   5    @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   6    Released under both BSD license and Lesser GPL library license.
   7    Whenever there is any discrepancy between the two licenses,
   8    the BSD license will take precedence.
   9  
  10    Set tabs to 4.
  11  
  12    Contributed by Interakt Online. Thx Cristian MARIN cristic#interaktonline.com
  13  */
  14  
  15  
  16  require_once ADODB_DIR."/drivers/adodb-sybase.inc.php";
  17  
  18  class ADODB_sybase_ase extends ADODB_sybase {
  19   	 var $databaseType = "sybase_ase";
  20  
  21  	  var $metaTablesSQL="SELECT sysobjects.name FROM sysobjects, sysusers WHERE sysobjects.type='U' AND sysobjects.uid = sysusers.uid";
  22  	  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";
  23  	  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";
  24  
  25  	function __construct()
  26  	 {
  27  	 }
  28  
  29  	 // split the Views, Tables and procedures.
  30  	function MetaTables($ttype=false,$showSchema=false,$mask=false)
  31  	 {
  32  	 	 $false = false;
  33  	 	 if ($this->metaTablesSQL) {
  34  	 	 	 // complicated state saving by the need for backward compat
  35  
  36  	 	 	 if ($ttype == 'VIEWS'){
  37  	 	 	 	 	 	 $sql = str_replace('U', 'V', $this->metaTablesSQL);
  38  	 	 	 }elseif (false === $ttype){
  39  	 	 	 	 	 	 $sql = str_replace('U',"U' OR type='V", $this->metaTablesSQL);
  40  	 	 	 }else{ // TABLES OR ANY OTHER
  41  	 	 	 	 	 	 $sql = $this->metaTablesSQL;
  42  	 	 	 }
  43  	 	 	 $rs = $this->Execute($sql);
  44  
  45  	 	 	 if ($rs === false || !method_exists($rs, 'GetArray')){
  46  	 	 	 	 	 return $false;
  47  	 	 	 }
  48  	 	 	 $arr = $rs->GetArray();
  49  
  50  	 	 	 $arr2 = array();
  51  	 	 	 foreach($arr as $key=>$value){
  52  	 	 	 	 	 $arr2[] = trim($value['name']);
  53  	 	 	 }
  54  	 	 	 return $arr2;
  55  	 	 }
  56  	 	 return $false;
  57  	 }
  58  
  59  	function MetaDatabases()
  60  	 {
  61  	 	 	 $arr = array();
  62  	 	 	 if ($this->metaDatabasesSQL!='') {
  63  	 	 	 	 $rs = $this->Execute($this->metaDatabasesSQL);
  64  	 	 	 	 if ($rs && !$rs->EOF){
  65  	 	 	 	 	 while (!$rs->EOF){
  66  	 	 	 	 	 	 $arr[] = $rs->Fields('name');
  67  	 	 	 	 	 	 $rs->MoveNext();
  68  	 	 	 	 	 }
  69  	 	 	 	 	 return $arr;
  70  	 	 	 	 }
  71  	 	 	 }
  72  	 	 	 return false;
  73  	 }
  74  
  75  	 // fix a bug which prevent the metaColumns query to be executed for Sybase ASE
  76  	function MetaColumns($table,$upper=false)
  77  	 {
  78  	 	 $false = false;
  79  	 	 if (!empty($this->metaColumnsSQL)) {
  80  
  81  	 	 	 $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table));
  82  	 	 	 if ($rs === false) return $false;
  83  
  84  	 	 	 $retarr = array();
  85  	 	 	 while (!$rs->EOF) {
  86  	 	 	 	 $fld = new ADOFieldObject();
  87  	 	 	 	 $fld->name = $rs->Fields('field_name');
  88  	 	 	 	 $fld->type = $rs->Fields('type');
  89  	 	 	 	 $fld->max_length = $rs->Fields('width');
  90  	 	 	 	 $retarr[strtoupper($fld->name)] = $fld;
  91  	 	 	 	 $rs->MoveNext();
  92  	 	 	 }
  93  	 	 	 $rs->Close();
  94  	 	 	 return $retarr;
  95  	 	 }
  96  	 	 return $false;
  97  	 }
  98  
  99  	function getProcedureList($schema)
 100  	 {
 101  	 	 	 return false;
 102  	 }
 103  
 104  	function ErrorMsg()
 105  	 {
 106  	 	 if (!function_exists('sybase_connect')){
 107  	 	 	 	 return 'Your PHP doesn\'t contain the Sybase connection module!';
 108  	 	 }
 109  	 	 return parent::ErrorMsg();
 110  	 }
 111  }
 112  
 113  class adorecordset_sybase_ase extends ADORecordset_sybase {
 114  var $databaseType = "sybase_ase";
 115  function __construct($id,$mode=false)
 116  	 {
 117  	 	 parent::__construct($id,$mode);
 118  	 }
 119  
 120  }