Merge branch 'wip-MDL-58546-master' of git://github.com/marinaglancy/moodle
authorJun Pataleta <jun@moodle.com>
Tue, 10 Oct 2017 07:26:38 +0000 (15:26 +0800)
committerJun Pataleta <jun@moodle.com>
Tue, 10 Oct 2017 07:26:38 +0000 (15:26 +0800)
101 files changed:
lib/adodb/adodb-active-record.inc.php
lib/adodb/adodb-active-recordx.inc.php
lib/adodb/adodb-csvlib.inc.php
lib/adodb/adodb-datadict.inc.php
lib/adodb/adodb-error.inc.php
lib/adodb/adodb-errorhandler.inc.php
lib/adodb/adodb-errorpear.inc.php
lib/adodb/adodb-exceptions.inc.php
lib/adodb/adodb-iterator.inc.php
lib/adodb/adodb-lib.inc.php
lib/adodb/adodb-memcache.lib.inc.php
lib/adodb/adodb-pager.inc.php
lib/adodb/adodb-pear.inc.php
lib/adodb/adodb-perf.inc.php
lib/adodb/adodb-php4.inc.php
lib/adodb/adodb-time.inc.php
lib/adodb/adodb.inc.php
lib/adodb/datadict/datadict-access.inc.php
lib/adodb/datadict/datadict-db2.inc.php
lib/adodb/datadict/datadict-firebird.inc.php
lib/adodb/datadict/datadict-generic.inc.php
lib/adodb/datadict/datadict-ibase.inc.php
lib/adodb/datadict/datadict-informix.inc.php
lib/adodb/datadict/datadict-mssql.inc.php
lib/adodb/datadict/datadict-mssqlnative.inc.php
lib/adodb/datadict/datadict-mysql.inc.php
lib/adodb/datadict/datadict-oci8.inc.php
lib/adodb/datadict/datadict-postgres.inc.php
lib/adodb/datadict/datadict-sapdb.inc.php
lib/adodb/datadict/datadict-sqlite.inc.php
lib/adodb/datadict/datadict-sybase.inc.php
lib/adodb/drivers/adodb-access.inc.php
lib/adodb/drivers/adodb-ado.inc.php
lib/adodb/drivers/adodb-ado5.inc.php
lib/adodb/drivers/adodb-ado_access.inc.php
lib/adodb/drivers/adodb-ado_mssql.inc.php
lib/adodb/drivers/adodb-borland_ibase.inc.php
lib/adodb/drivers/adodb-csv.inc.php
lib/adodb/drivers/adodb-db2.inc.php
lib/adodb/drivers/adodb-db2oci.inc.php
lib/adodb/drivers/adodb-db2ora.inc.php
lib/adodb/drivers/adodb-fbsql.inc.php
lib/adodb/drivers/adodb-firebird.inc.php
lib/adodb/drivers/adodb-ibase.inc.php
lib/adodb/drivers/adodb-informix.inc.php
lib/adodb/drivers/adodb-informix72.inc.php
lib/adodb/drivers/adodb-ldap.inc.php
lib/adodb/drivers/adodb-mssql.inc.php
lib/adodb/drivers/adodb-mssqlnative.inc.php
lib/adodb/drivers/adodb-mssqlpo.inc.php
lib/adodb/drivers/adodb-mysql.inc.php
lib/adodb/drivers/adodb-mysqli.inc.php
lib/adodb/drivers/adodb-mysqlpo.inc.php
lib/adodb/drivers/adodb-mysqlt.inc.php
lib/adodb/drivers/adodb-netezza.inc.php
lib/adodb/drivers/adodb-oci8.inc.php
lib/adodb/drivers/adodb-oci805.inc.php
lib/adodb/drivers/adodb-oci8po.inc.php
lib/adodb/drivers/adodb-oci8quercus.inc.php
lib/adodb/drivers/adodb-odbc.inc.php
lib/adodb/drivers/adodb-odbc_db2.inc.php
lib/adodb/drivers/adodb-odbc_mssql.inc.php
lib/adodb/drivers/adodb-odbc_mssql2012.inc.php [deleted file]
lib/adodb/drivers/adodb-odbc_oracle.inc.php
lib/adodb/drivers/adodb-odbtp.inc.php
lib/adodb/drivers/adodb-odbtp_unicode.inc.php
lib/adodb/drivers/adodb-oracle.inc.php
lib/adodb/drivers/adodb-pdo.inc.php
lib/adodb/drivers/adodb-pdo_mssql.inc.php
lib/adodb/drivers/adodb-pdo_mysql.inc.php
lib/adodb/drivers/adodb-pdo_oci.inc.php
lib/adodb/drivers/adodb-pdo_pgsql.inc.php
lib/adodb/drivers/adodb-pdo_sqlite.inc.php
lib/adodb/drivers/adodb-postgres.inc.php
lib/adodb/drivers/adodb-postgres64.inc.php
lib/adodb/drivers/adodb-postgres7.inc.php
lib/adodb/drivers/adodb-postgres8.inc.php
lib/adodb/drivers/adodb-postgres9.inc.php
lib/adodb/drivers/adodb-proxy.inc.php
lib/adodb/drivers/adodb-sapdb.inc.php
lib/adodb/drivers/adodb-sqlanywhere.inc.php
lib/adodb/drivers/adodb-sqlite.inc.php
lib/adodb/drivers/adodb-sqlite3.inc.php
lib/adodb/drivers/adodb-sqlitepo.inc.php
lib/adodb/drivers/adodb-sybase.inc.php
lib/adodb/drivers/adodb-sybase_ase.inc.php
lib/adodb/drivers/adodb-text.inc.php
lib/adodb/drivers/adodb-vfp.inc.php
lib/adodb/perf/perf-db2.inc.php
lib/adodb/perf/perf-informix.inc.php
lib/adodb/perf/perf-mssql.inc.php
lib/adodb/perf/perf-mssqlnative.inc.php
lib/adodb/perf/perf-mysql.inc.php
lib/adodb/perf/perf-oci8.inc.php
lib/adodb/perf/perf-postgres.inc.php
lib/adodb/pivottable.inc.php
lib/adodb/readme_moodle.txt
lib/adodb/rsfilter.inc.php
lib/adodb/toexport.inc.php
lib/adodb/tohtml.inc.php
lib/thirdpartylibs.xml

index ae58564..a7f0adf 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
 
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Latest version is available at http://adodb.sourceforge.net
index f7b5179..7f553f1 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
 
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Latest version is available at http://adodb.sourceforge.net
index bded3ac..bfd8d9b 100644 (file)
@@ -8,7 +8,7 @@ $ADODB_INCLUDED_CSV = 1;
 
 /*
 
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index f2b29a6..b2a0837 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
@@ -520,7 +520,7 @@ class ADODB_DataDict {
                        list($lines,$pkey,$idxs) = $this->_GenFields($flds);
                        // genfields can return FALSE at times
                        if ($lines == null) $lines = array();
-                       list(,$first) = each($lines);
+                       $first  = current($lines);
                        list(,$column_def) = preg_split("/[\t ]+/",$first,2);
                }
                return array(sprintf($this->renameColumn,$tabname,$this->NameQuote($oldcolumn),$this->NameQuote($newcolumn),$column_def));
index 3f2ab90..18f944b 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
@@ -111,7 +111,7 @@ function adodb_error_pg($errormsg)
                        'could not serialize access due to'   => DB_ERROR_SERIALIZATION_FAILURE
                );
        reset($error_regexps);
-       while (list($regexp,$code) = each($error_regexps)) {
+       foreach ($error_regexps as $regexp => $code) {
                if (preg_match("/$regexp/mi", $errormsg)) {
                        return $code;
                }
index e8dcaab..7f36ba1 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
index db3e2a2..474d6d5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
index b3ffc38..9c66ac3 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
index 4c8dffc..cfc067b 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 503bb15..6028530 100644 (file)
@@ -6,7 +6,7 @@ global $ADODB_INCLUDED_LIB;
 $ADODB_INCLUDED_LIB = 1;
 
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 4dde732..42d2be6 100644 (file)
@@ -11,7 +11,7 @@ if (empty($ADODB_INCLUDED_CSV)) include_once(ADODB_DIR.'/adodb-csvlib.inc.php');
 
 /*
 
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 0221975..fa77d55 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-       @version   v5.20.7  20-Sep-2016
+       @version   v5.20.9  21-Dec-2016
        @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
        @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
          Released under both BSD license and Lesser GPL library license.
index 237dcfe..c8f0933 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
index 3dfaab4..69218c6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 50963f0..132f25d 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index df718cf..4d2016c 100644 (file)
@@ -3,7 +3,7 @@
 ADOdb Date Library, part of the ADOdb abstraction library
 Download: http://adodb.sourceforge.net/#download
 
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 
index 4967f6a..b01b0af 100644 (file)
@@ -14,7 +14,7 @@
 /**
        \mainpage
 
-       @version   v5.20.7  20-Sep-2016
+       @version   v5.20.9  21-Dec-2016
        @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
        @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 
@@ -233,7 +233,7 @@ if (!defined('_ADODB_LAYER')) {
                /**
                 * ADODB version as a string.
                 */
-               $ADODB_vers = 'v5.20.7  20-Sep-2016';
+               $ADODB_vers = 'v5.20.9  21-Dec-2016';
 
                /**
                 * Determines whether recordset->RecordCount() is used.
@@ -1164,8 +1164,7 @@ if (!defined('_ADODB_LAYER')) {
 
                                foreach($inputarr as $arr) {
                                        $sql = ''; $i = 0;
-                                       //Use each() instead of foreach to reduce memory usage -mikefedyk
-                                       while(list(, $v) = each($arr)) {
+                                       foreach ($arr as $v) {
                                                $sql .= $sqlarr[$i];
                                                // from Ron Baldwin <ron.baldwin#sourceprose.com>
                                                // Only quote string types
index 25a72a8..c145915 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index a3fa783..7d201ff 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 8f85f89..f247c8d 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 0521cc6..e2e6909 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index c6629d1..495a722 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 8ab2b6e..25726f4 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 1eae3af..2c496de 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 8c88404..36d5fca 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
@@ -146,19 +146,69 @@ class ADODB2_mssqlnative extends ADODB_DataDict {
                return $sql;
        }
 
-       /*
-       function AlterColumnSQL($tabname, $flds, $tableflds='', $tableoptions='')
+       function DefaultConstraintname($tabname, $colname)
+       {
+               $constraintname = false;
+               $rs = $this->connection->Execute(
+                       "SELECT name FROM sys.default_constraints
+                       WHERE object_name(parent_object_id) = '$tabname'
+                       AND col_name(parent_object_id, parent_column_id) = '$colname'"
+               );
+               if ( is_object($rs) ) {
+                       $row = $rs->FetchRow();
+                       $constraintname = $row['name'];
+               }
+               return $constraintname;
+       }
+  
+       function AlterColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')
        {
                $tabname = $this->TableName ($tabname);
                $sql = array();
-               list($lines,$pkey) = $this->_GenFields($flds);
+
+               list($lines,$pkey,$idxs) = $this->_GenFields($flds);
+               $alter = 'ALTER TABLE ' . $tabname . $this->alterCol . ' ';
                foreach($lines as $v) {
-                       $sql[] = "ALTER TABLE $tabname $this->alterCol $v";
+                       $not_null = false;
+                       if ($not_null = preg_match('/NOT NULL/i',$v)) {
+                               $v = preg_replace('/NOT NULL/i','',$v);
+                       }
+                       if (preg_match('/^([^ ]+) .*DEFAULT (\'[^\']+\'|\"[^\"]+\"|[^ ]+)/',$v,$matches)) {
+                               list(,$colname,$default) = $matches;
+                               $v = preg_replace('/^' . preg_quote($colname) . '\s/', '', $v);
+                               $t = trim(str_replace('DEFAULT '.$default,'',$v));
+                               if ( $constraintname = $this->DefaultConstraintname($tabname,$colname) ) {
+                                       $sql[] = 'ALTER TABLE '.$tabname.' DROP CONSTRAINT '. $constraintname;
+                               }
+                               if ($not_null) {
+                                       $sql[] = $alter . $colname . ' ' . $t  . ' NOT NULL';
+                               } else {
+                                       $sql[] = $alter . $colname . ' ' . $t ;
+                               }
+                               $sql[] = 'ALTER TABLE ' . $tabname
+                                       . ' ADD CONSTRAINT DF__' . $tabname . '__' .  $colname .  '__' . dechex(rand())
+                                       . ' DEFAULT ' . $default . ' FOR ' . $colname;
+                       } else {
+                               $colname = strtok($v," ");
+                               if ( $constraintname = $this->DefaultConstraintname($tabname,$colname) ) {
+                                       $sql[] = 'ALTER TABLE '.$tabname.' DROP CONSTRAINT '. $constraintname;
+                               }
+                               if ($not_null) {
+                                       $sql[] = $alter . $v  . ' NOT NULL';
+                               } else {
+                                       $sql[] = $alter . $v;
+                               }
+                       }
+               }
+               if (is_array($idxs)) {
+                       foreach($idxs as $idx => $idxdef) {
+                               $sql_idxs = $this->CreateIndexSql($idx, $tabname, $idxdef['cols'], $idxdef['opts']);
+                               $sql = array_merge($sql, $sql_idxs);
+                       }
                }
-
                return $sql;
        }
-       */
+
 
        /**
         * Drop a column, syntax is ALTER TABLE table DROP COLUMN column,column
@@ -176,10 +226,12 @@ class ADODB2_mssqlnative extends ADODB_DataDict {
                if (!is_array($flds))
                        $flds = explode(',',$flds);
                $f = array();
-               $s = 'ALTER TABLE ' . $tabname . ' DROP COLUMN ';
+               $s = 'ALTER TABLE ' . $tabname;
                foreach($flds as $v) {
-                       //$f[] = "\n$this->dropCol ".$this->NameQuote($v);
-                       $f[] = $this->NameQuote($v);
+                       if ( $constraintname = $this->DefaultConstraintname($tabname,$v) ) {
+                               $sql[] = 'ALTER TABLE ' . $tabname . ' DROP CONSTRAINT ' . $constraintname;
+                       }
+                       $f[] = ' DROP COLUMN ' . $this->NameQuote($v);
                }
                $s .= implode(', ',$f);
                $sql[] = $s;
index 0148915..00a43a2 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index b758ede..57cf0af 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index be2700e..99a5641 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 9a7671b..fbf931c 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 8ec2927..86b1b04 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index d0e84f6..d4e5f05 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index b020d36..3a5a8ed 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index bcfc899..04b7dc8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
@@ -225,7 +225,7 @@ class ADODB_ado extends ADOConnection {
 
       // Map by http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcreateparam.asp
       // Check issue http://bugs.php.net/bug.php?id=40664 !!!
-                       while(list(, $val) = each($inputarr)) {
+                       foreach ($inputarr as $val) {
                                $type = gettype($val);
                                $len=strlen($val);
                                if ($type == 'boolean')
index 0205c93..73c4b50 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
@@ -248,7 +248,7 @@ class ADODB_ado extends ADOConnection {
                        $oCmd->CommandText = $sql;
                        $oCmd->CommandType = 1;
 
-                       while(list(, $val) = each($inputarr)) {
+                       foreach ($inputarr as $val) {
                                $type = gettype($val);
                                $len=strlen($val);
                                if ($type == 'boolean')
index fa1629b..c167ce6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 Released under both BSD license and Lesser GPL library license.
index d6993ed..57eacc9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index ad5f61b..d3de2ca 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index be0f1bd..fd47784 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 67c19ee..e7b9dbd 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 
index 0d1d226..91d61af 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index ee5b960..1261689 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 7ac6dd1..9a2440c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
- @version   v5.20.7  20-Sep-2016
+ @version   v5.20.9  21-Dec-2016
  @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  Released under both BSD license and Lesser GPL library license.
index 84f1af5..415f66f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index a095e58..c4f0cbd 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 951f4ef..801451e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version   v5.20.7  20-Sep-2016
+* @version   v5.20.9  21-Dec-2016
 * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 * Released under both BSD license and Lesser GPL library license.
index e1cf814..58f233a 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim. All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index bfebe48..633705e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
    Released under both BSD license and Lesser GPL library license.
index d710d4a..068dffc 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 64726b0..23eb2c0 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
@@ -125,6 +125,7 @@ class ADODB_mssqlnative extends ADOConnection {
        var $_bindInputArray = true;
        var $_dropSeqSQL = "drop table %s";
        var $connectionInfo = array();
+       var $cachedSchemaFlush = false;
        var $sequences = false;
        var $mssql_version = '';
 
@@ -143,25 +144,22 @@ class ADODB_mssqlnative extends ADOConnection {
                        sqlsrv_configure('WarningsReturnAsErrors', 0);
                }
        }
+
+       /**
+        * Initializes the SQL Server version.
+        * Dies if connected to a non-supported version (2000 and older)
+        */
        function ServerVersion() {
                $data = $this->ServerInfo();
-               if (preg_match('/^09/',$data['version'])){
-                       /*
-                        * SQL Server 2005
-                        */
-                       $this->mssql_version = 9;
-               } elseif (preg_match('/^10/',$data['version'])){
-                       /*
-                        * SQL Server 2008
-                        */
-                       $this->mssql_version = 10;
-               } elseif (preg_match('/^11/',$data['version'])){
-                       /*
-                        * SQL Server 2012
-                        */
-                       $this->mssql_version = 11;
-               } else
+               preg_match('/^\d{2}/', $data['version'], $matches);
+               $version = (int)reset($matches);
+
+               // We only support SQL Server 2005 and up
+               if($version < 9) {
                        die("SQL SERVER VERSION {$data['version']} NOT SUPPORTED IN mssqlnative DRIVER");
+               }
+
+               $this->mssql_version = $version;
        }
 
        function ServerInfo() {
@@ -211,26 +209,26 @@ class ADODB_mssqlnative extends ADOConnection {
                switch($this->mssql_version){
                case 9:
                case 10:
-                       return $this->GenID2008();
+                       return $this->GenID2008($seq, $start);
                        break;
-               case 11:
-                       return $this->GenID2012();
+               default:
+                       return $this->GenID2012($seq, $start);
                        break;
                }
        }
 
        function CreateSequence($seq='adodbseq',$start=1)
        {
-               if (!$this->mssql_vesion)
+               if (!$this->mssql_version)
                        $this->ServerVersion();
 
                switch($this->mssql_version){
                case 9:
                case 10:
-                       return $this->CreateSequence2008();
+                       return $this->CreateSequence2008($seq, $start);
                        break;
-               case 11:
-                       return $this->CreateSequence2012();
+               default:
+                       return $this->CreateSequence2012($seq, $start);
                        break;
                }
 
@@ -258,7 +256,7 @@ class ADODB_mssqlnative extends ADOConnection {
        /**
         * Proper Sequences Only available to Server 2012 and up
         */
-       function CreateSequence2012($seq='adodb',$start=1){
+       function CreateSequence2012($seq='adodbseq',$start=1){
                if (!$this->sequences){
                        $sql = "SELECT name FROM sys.sequences";
                        $this->sequences = $this->GetCol($sql);
@@ -289,7 +287,7 @@ class ADODB_mssqlnative extends ADOConnection {
                }
                $num = $this->GetOne("select id from $seq");
                sqlsrv_commit($this->_connectionID);
-               return true;
+               return $num;
        }
        /**
         * Only available to Server 2012 and up
@@ -313,7 +311,7 @@ class ADODB_mssqlnative extends ADOConnection {
                }
                if (!is_array($this->sequences)
                || is_array($this->sequences) && !in_array($seq,$this->sequences)){
-                       $this->CreateSequence2012($seq='adodbseq',$start=1);
+                       $this->CreateSequence2012($seq, $start);
 
                }
                $num = $this->GetOne("SELECT NEXT VALUE FOR $seq");
@@ -468,10 +466,9 @@ class ADODB_mssqlnative extends ADOConnection {
 
        function ErrorNo()
        {
-               if ($this->_logsql && $this->_errorCode !== false) return $this->_errorCode;
                $err = sqlsrv_errors(SQLSRV_ERR_ALL);
                if($err[0]) return $err[0]['code'];
-               else return -1;
+               else return 0;
        }
 
        // returns true or false
@@ -569,7 +566,7 @@ class ADODB_mssqlnative extends ADOConnection {
 
                $insert = false;
                // handle native driver flaw for retrieving the last insert ID
-               if(preg_match('/^\W*insert\s(?:(?:(?:\'\')*\'[^\']+\'(?:\'\')*)|[^;\'])*;?$/i', $sql)) {
+               if(preg_match('/^\W*insert[\s\w()",.]+values\s*\((?:[^;\']|\'\'|(?:(?:\'\')*\'[^\']+\'(?:\'\')*))*;?$/i', $sql)) {
                        $insert = true;
                        $sql .= '; '.$this->identitySQL; // select scope_identity()
                }
index e99f31e..cd6a285 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version   v5.20.7  20-Sep-2016
+* @version   v5.20.9  21-Dec-2016
 * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 * Released under both BSD license and Lesser GPL library license.
index 1dc0dcb..2d999c6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 3df1b10..188efc9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index fe0213b..26b354a 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index efc9333..79c9376 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index c0f476a..af3a1a1 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 
index 33d19a8..928d1b8 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
 
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim. All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 
@@ -703,9 +703,19 @@ END;
         * This implementation does not appear to work with oracle 8.0.5 or earlier.
         * Comment out this function then, and the slower SelectLimit() in the base
         * class will be used.
+        *
+        * Note: FIRST_ROWS hinting is only used if $sql is a string; when
+        * processing a prepared statement's handle, no hinting is performed.
         */
        function SelectLimit($sql,$nrows=-1,$offset=-1, $inputarr=false,$secs2cache=0)
        {
+               // Since the methods used to limit the number of returned rows rely
+               // on modifying the provided SQL query, we can't work with prepared
+               // statements so we just extract the SQL string.
+               if(is_array($sql)) {
+                       $sql = $sql[0];
+               }
+
                // seems that oracle only supports 1 hint comment in 8i
                if ($this->firstrows) {
                        if ($nrows > 500 && $nrows < 1000) {
@@ -731,20 +741,13 @@ END;
                                if ($offset > 0) {
                                        $nrows += $offset;
                                }
-                               //$inputarr['adodb_rownum'] = $nrows;
-                               if ($this->databaseType == 'oci8po') {
-                                       $sql = "select * from (".$sql.") where rownum <= ?";
-                               } else {
-                                       $sql = "select * from (".$sql.") where rownum <= :adodb_offset";
-                               }
+                               $sql = "select * from (".$sql.") where rownum <= :adodb_offset";
                                $inputarr['adodb_offset'] = $nrows;
                                $nrows = -1;
                        }
                        // note that $nrows = 0 still has to work ==> no rows returned
 
-                       $rs = ADOConnection::SelectLimit($sql,$nrows,$offset,$inputarr,$secs2cache);
-                       return $rs;
-
+                       return ADOConnection::SelectLimit($sql, $nrows, $offset, $inputarr, $secs2cache);
                } else {
                        // Algorithm by Tomas V V Cox, from PEAR DB oci8.php
 
@@ -758,13 +761,19 @@ END;
 
                        if (is_array($inputarr)) {
                                foreach($inputarr as $k => $v) {
+                                       $i=0;
+                                       if ($this->databaseType == 'oci8po') {
+                                               $bv_name = ":".$i++;
+                                       } else {
+                                               $bv_name = ":".$k;
+                                       }
                                        if (is_array($v)) {
                                                // suggested by g.giunta@libero.
                                                if (sizeof($v) == 2) {
-                                                       oci_bind_by_name($stmt,":$k",$inputarr[$k][0],$v[1]);
+                                                       oci_bind_by_name($stmt,$bv_name,$inputarr[$k][0],$v[1]);
                                                }
                                                else {
-                                                       oci_bind_by_name($stmt,":$k",$inputarr[$k][0],$v[1],$v[2]);
+                                                       oci_bind_by_name($stmt,$bv_name,$inputarr[$k][0],$v[1],$v[2]);
                                                }
                                        } else {
                                                $len = -1;
@@ -774,7 +783,7 @@ END;
                                                if (isset($bindarr)) {  // is prepared sql, so no need to oci_bind_by_name again
                                                        $bindarr[$k] = $v;
                                                } else {                                // dynamic sql, so rebind every time
-                                                       oci_bind_by_name($stmt,":$k",$inputarr[$k],$len);
+                                                       oci_bind_by_name($stmt,$bv_name,$inputarr[$k],$len);
                                                }
                                        }
                                }
@@ -801,24 +810,19 @@ END;
                        }
                        $offset += 1; // in Oracle rownum starts at 1
 
-                       if ($this->databaseType == 'oci8po') {
-                                       $sql = "SELECT $hint $fields FROM".
-                                               "(SELECT rownum as adodb_rownum, $fields FROM".
-                                               " ($sql) WHERE rownum <= ?".
-                                               ") WHERE adodb_rownum >= ?";
-                               } else {
-                                       $sql = "SELECT $hint $fields FROM".
-                                               "(SELECT rownum as adodb_rownum, $fields FROM".
-                                               " ($sql) WHERE rownum <= :adodb_nrows".
-                                               ") WHERE adodb_rownum >= :adodb_offset";
-                               }
-                               $inputarr['adodb_nrows'] = $nrows;
-                               $inputarr['adodb_offset'] = $offset;
+                       $sql = "SELECT $hint $fields FROM".
+                               "(SELECT rownum as adodb_rownum, $fields FROM".
+                               " ($sql) WHERE rownum <= :adodb_nrows".
+                               ") WHERE adodb_rownum >= :adodb_offset";
+                       $inputarr['adodb_nrows'] = $nrows;
+                       $inputarr['adodb_offset'] = $offset;
 
                        if ($secs2cache > 0) {
                                $rs = $this->CacheExecute($secs2cache, $sql,$inputarr);
                        }
-                       else $rs = $this->Execute($sql,$inputarr);
+                       else {
+                               $rs = $this->Execute($sql, $inputarr);
+                       }
                        return $rs;
                }
        }
index e2979f5..112e9ec 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
index 0013467..6b939b0 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim. All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
@@ -56,6 +56,21 @@ class ADODB_oci8po extends ADODB_oci8 {
                return ADOConnection::Execute($sql,$inputarr);
        }
 
+       /**
+        * The optimizations performed by ADODB_oci8::SelectLimit() are not
+        * compatible with the oci8po driver, so we rely on the slower method
+        * from the base class.
+        * We can't properly handle prepared statements either due to preprocessing
+        * of query parameters, so we treat them as regular SQL statements.
+        */
+       function SelectLimit($sql, $nrows=-1, $offset=-1, $inputarr=false, $secs2cache=0)
+       {
+               if(is_array($sql)) {
+//                     $sql = $sql[0];
+               }
+               return ADOConnection::SelectLimit($sql, $nrows, $offset, $inputarr, $secs2cache);
+       }
+
        // emulate handling of parameters ? ?, replacing with :bind0 :bind1
        function _query($sql,$inputarr=false)
        {
@@ -74,11 +89,14 @@ class ADODB_oci8po extends ADODB_oci8 {
                                        $sql = str_replace($qmMatch, $qmReplace, $sql);
                                }
 
+                               // Replace parameters if any were found
                                $sqlarr = explode('?',$sql);
-                               $sql = $sqlarr[0];
+                               if(count($sqlarr) > 1) {
+                                       $sql = $sqlarr[0];
 
-                               foreach($inputarr as $k => $v) {
-                                       $sql .=  ":$k" . $sqlarr[++$i];
+                                       foreach ($inputarr as $k => $v) {
+                                               $sql .= ":$k" . $sqlarr[++$i];
+                                       }
                                }
 
                                $sql = str_replace('-QUESTIONMARK-', '?', $sql);
index 341e2fc..1940e80 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim. All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index b6b0556..efaa5bb 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index ca2b63c..fa6d8b8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index b14618c..aa64316 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
diff --git a/lib/adodb/drivers/adodb-odbc_mssql2012.inc.php b/lib/adodb/drivers/adodb-odbc_mssql2012.inc.php
deleted file mode 100644 (file)
index a3b7f69..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/*
- @version   v5.21.0-dev  ??-???-2016
- @copyright (c) 2015      Damien Regad, Mark Newnham and the ADOdb community
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-  Set tabs to 4.
-
-  Microsoft SQL Server 2012 via ODBC
-*/
-
-if (!defined('ADODB_DIR')) 
-       die();
-
-include_once(ADODB_DIR."/drivers/adodb-odbc_mssql.inc.php");
-
-class  ADODB_odbc_mssql2012 extends ADODB_odbc_mssql
-{
-       /*
-       * Makes behavior similar to prior versions of SQL Server
-       */
-       var $connectStmt = 'SET CONCAT_NULL_YIELDS_NULL ON';
-}
-
-class  ADORecordSet_odbc_mssql2012 extends ADORecordSet_odbc_mssql
-{
-}
\ No newline at end of file
index 42dc1b2..dfa851c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 740e9bf..ec374a5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 9ddd408..5ca03e7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-       @version   v5.20.7  20-Sep-2016
+       @version   v5.20.9  21-Dec-2016
        @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
        @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index f5dae53..ca737d6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 179268b..b7b5577 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
-       @version   v5.20.7  20-Sep-2016
+       @version   v5.20.9  21-Dec-2016
        @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
        @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 
index 2c46842..219cf13 100644 (file)
@@ -2,7 +2,7 @@
 
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 746161d..36d97b6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index d900627..0bca35e 100644 (file)
@@ -2,7 +2,7 @@
 
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 059f495..9afe4b0 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index a06bc04..d42c519 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
- @version   v5.20.7  20-Sep-2016
+ @version   v5.20.9  21-Dec-2016
  @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index cc5698d..3c866b7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
- @version   v5.20.7  20-Sep-2016
+ @version   v5.20.9  21-Dec-2016
  @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 22fdbf4..5fd2711 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
- @version   v5.20.7  20-Sep-2016
+ @version   v5.20.9  21-Dec-2016
  @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 851e0af..ebdf2ac 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
- @version   v5.20.7  20-Sep-2016
+ @version   v5.20.9  21-Dec-2016
  @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 386e65c..54b14ab 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
- @version   v5.20.7  20-Sep-2016
+ @version   v5.20.9  21-Dec-2016
  @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 9fda8bd..fb58918 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
- @version   v5.20.7  20-Sep-2016
+ @version   v5.20.9  21-Dec-2016
  @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index f7aac07..4004fa7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index f3f94e3..a11e7e0 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 23625b0..03a9da2 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013  John Lim (jlim#natsoft.com).  All rights
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
 reserved.
index 9782e49..5cc6b9e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index ab00feb..7600c3a 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index e2b0b93..b167e8c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 933f2f2..6ba392d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim. All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 03add79..669dd22 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index a0d5232..8844d20 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.1  06-Dec-2015
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
    Set tabs to 4.
@@ -209,7 +209,7 @@ class ADODB_text extends ADOConnection {
                        $where_arr = array();
 
                        reset($this->_origarray);
-                       while (list($k_arr,$arr) = each($this->_origarray)) {
+                       foreach ($this->_origarray as $arr) {
 
                                if ($i == 0 && $this->_skiprow1)
                                        $where_arr[] = $arr;
@@ -247,7 +247,7 @@ class ADODB_text extends ADOConnection {
                                $i = 0;
                                $n = '';
                                reset($this->_colnames);
-                               while (list($k_n,$n) = each($this->_colnames)) {
+                               foreach ($this->_colnames as $n) {
 
                                        if ($col == strtoupper(trim($n))) break;
                                        $i += 1;
@@ -302,7 +302,7 @@ class ADODB_text extends ADOConnection {
                if ($at == 0) {
                        $i = 0;
                        reset($projnames);
-                       while (list($k_n,$n) = each($projnames)) {
+                       foreach ($projnames as $n) {
                                if (strtoupper(trim($n)) == $col) {
                                        $at = $i+1;
                                        break;
index 0b0e8d9..840c9c1 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index b0bdceb..143fc3d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 072b274..e5cfb25 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 4227b1c..cd8a664 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index e4ca57b..b277888 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 7a0bf06..adccbdc 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index eb120c2..69df104 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 1eaf322..bd0ccb1 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-@version   v5.20.7  20-Sep-2016
+@version   v5.20.9  21-Dec-2016
 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
 @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 3a554ad..dd7d5d8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
index f894c69..00ff240 100644 (file)
@@ -1,4 +1,4 @@
-Description of ADODB V5.20.7 library import into Moodle
+Description of ADODB V5.20.9 library import into Moodle
 
 This library will be probably removed in Moodle 2.1,
 it is now used only in enrol and auth db plugins.
@@ -19,6 +19,9 @@ Removed:
  * server.php
  * lang/* except en (because they were not in utf8)
 
+Renamed:
+ * LICENSE.md -> license.txt
+
 Added:
  * index.html - prevent directory browsing on misconfigured servers
  * readme_moodle.txt - this file ;-)
@@ -26,6 +29,8 @@ Added:
 Our changes:
  * Removed random seed initialization from lib/adodb/adodb.inc.php:216 (see 038f546 and MDL-41198).
  * MDL-52286 Added muting erros in ADORecordSet::__destruct().
-   Check if fixed upstream during the next upgrade and remove this note.
+   Check if fixed upstream during the next upgrade and remove this note. (8638b3f1441d4b928)
+ * MDL-58546 replaced each() with foreach for PHP 7.2 compatibility.
+   pull request upstream: https://github.com/ADOdb/ADOdb/pull/373
 
-skodak, iarenaza, moodler, stronk7, abgreeve, lameze
+skodak, iarenaza, moodler, stronk7, abgreeve, lameze, ankitagarwal, marinaglancy
index 3343983..4b609b9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
index 5cbfb94..6e3d491 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @version   v5.20.7  20-Sep-2016
+ * @version   v5.20.9  21-Dec-2016
  * @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  * @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
  * Released under both BSD license and Lesser GPL library license.
@@ -77,7 +77,7 @@ function _adodb_export(&$rs,$sep,$sepreplace,$fp=false,$addtitles=true,$quote =
                reset($fieldTypes);
                $i = 0;
                $elements = array();
-               while(list(,$o) = each($fieldTypes)) {
+               foreach ($fieldTypes as $o) {
 
                        $v = ($o) ? $o->name : 'Field'.($i++);
                        if ($escquote) $v = str_replace($quote,$escquotequote,$v);
index e859907..d39ed29 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-  @version   v5.20.7  20-Sep-2016
+  @version   v5.20.9  21-Dec-2016
   @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
   @copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community
   Released under both BSD license and Lesser GPL library license.
index 8ce83cf..1a1c901 100644 (file)
@@ -4,7 +4,7 @@
     <location>adodb</location>
     <name>AdoDB</name>
     <license>BSD/GPL</license>
-    <version>5.20.7</version>
+    <version>5.20.9</version>
     <licenseversion>2.1+</licenseversion>
   </library>
   <library>