Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401]

   1  <?php
   2  /**
   3   * IBM DB2 / Oracle compatibility driver.
   4   *
   5   * This driver provides undocumented bind variable mapping from ibm to oracle.
   6   * The functionality appears to overlap the db2_oci driver.
   7   *
   8   * @deprecated
   9   *
  10   * This file is part of ADOdb, a Database Abstraction Layer library for PHP.
  11   *
  12   * @package ADOdb
  13   * @link https://adodb.org Project's web site and documentation
  14   * @link https://github.com/ADOdb/ADOdb Source code and issue tracker
  15   *
  16   * The ADOdb Library is dual-licensed, released under both the BSD 3-Clause
  17   * and the GNU Lesser General Public Licence (LGPL) v2.1 or, at your option,
  18   * any later version. This means you can use it in proprietary products.
  19   * See the LICENSE.md file distributed with this source code for details.
  20   * @license BSD-3-Clause
  21   * @license LGPL-2.1-or-later
  22   *
  23   * @copyright 2000-2013 John Lim
  24   * @copyright 2014 Damien Regad, Mark Newnham and the ADOdb community
  25   */
  26  
  27  // security - hide paths
  28  if (!defined('ADODB_DIR')) die();
  29  include_once(ADODB_DIR."/drivers/adodb-db2.inc.php");
  30  
  31  
  32  if (!defined('ADODB_DB2OCI')){
  33  define('ADODB_DB2OCI',1);
  34  
  35  
  36  /**
  37   * Callback function for preg_replace in _colonscope()
  38   * @param array $p matched patterns
  39   * return string '?' if parameter replaced, :N if not
  40   */
  41  function _colontrack($p)
  42  {
  43  	 global $_COLONARR, $_COLONSZ;
  44  	 $v = (integer) substr($p[1], 1);
  45  	 if ($v > $_COLONSZ) return $p[1];
  46  	 $_COLONARR[] = $v;
  47  	 return '?';
  48  }
  49  
  50  /**
  51   * smart remapping of :0, :1 bind vars to ? ?
  52   * @param string $sql SQL statement
  53   * @param array  $arr parameters
  54   * @return array
  55   */
  56  function _colonscope($sql,$arr)
  57  {
  58  global $_COLONARR,$_COLONSZ;
  59  
  60  	 $_COLONARR = array();
  61  	 $_COLONSZ = sizeof($arr);
  62  
  63  	 $sql2 = preg_replace_callback('/(:[0-9]+)/', '_colontrack', $sql);
  64  
  65  	 if (empty($_COLONARR)) return array($sql,$arr);
  66  
  67  	 foreach($_COLONARR as $k => $v) {
  68  	 	 $arr2[] = $arr[$v];
  69  	 }
  70  
  71  	 return array($sql2,$arr2);
  72  }
  73  
  74  class ADODB_db2oci extends ADODB_db2 {
  75  	 var $databaseType = "db2oci";
  76  	 var $sysTimeStamp = 'sysdate';
  77  	 var $sysDate = 'trunc(sysdate)';
  78  
  79  	function _Execute($sql, $inputarr = false)
  80  	 {
  81  	 	 if ($inputarr) list($sql,$inputarr) = _colonscope($sql, $inputarr);
  82  	 	 return parent::_Execute($sql, $inputarr);
  83  	 }
  84  };
  85  
  86  
  87  class  ADORecordSet_db2oci extends ADORecordSet_odbc {
  88  
  89  	 var $databaseType = "db2oci";
  90  
  91  }
  92  
  93  } //define