From 5bd8f1dc4a466d19cbfa65800c031cc77edca973 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Wed, 4 Dec 2019 16:32:37 +1100 Subject: [PATCH] MDL-67371 lib: Upgrade ADODB to version 5.20.15 --- lib/adodb/{license.txt => LICENSE.md} | 0 lib/adodb/README.md | 103 +++++ lib/adodb/adodb-active-record.inc.php | 33 +- lib/adodb/adodb-active-recordx.inc.php | 16 +- lib/adodb/adodb-csvlib.inc.php | 2 +- lib/adodb/adodb-datadict.inc.php | 2 +- lib/adodb/adodb-error.inc.php | 2 +- lib/adodb/adodb-errorhandler.inc.php | 2 +- lib/adodb/adodb-errorpear.inc.php | 2 +- lib/adodb/adodb-exceptions.inc.php | 2 +- lib/adodb/adodb-iterator.inc.php | 2 +- lib/adodb/adodb-lib.inc.php | 233 +++++------ lib/adodb/adodb-memcache.lib.inc.php | 2 +- lib/adodb/adodb-pager.inc.php | 2 +- lib/adodb/adodb-pear.inc.php | 2 +- lib/adodb/adodb-perf.inc.php | 2 +- lib/adodb/adodb-php4.inc.php | 2 +- lib/adodb/adodb-time.inc.php | 2 +- lib/adodb/adodb.inc.php | 139 +++++-- lib/adodb/datadict/datadict-access.inc.php | 2 +- lib/adodb/datadict/datadict-db2.inc.php | 2 +- lib/adodb/datadict/datadict-firebird.inc.php | 2 +- lib/adodb/datadict/datadict-generic.inc.php | 2 +- lib/adodb/datadict/datadict-ibase.inc.php | 2 +- lib/adodb/datadict/datadict-informix.inc.php | 2 +- lib/adodb/datadict/datadict-mssql.inc.php | 2 +- .../datadict/datadict-mssqlnative.inc.php | 2 +- lib/adodb/datadict/datadict-mysql.inc.php | 2 +- lib/adodb/datadict/datadict-oci8.inc.php | 2 +- lib/adodb/datadict/datadict-postgres.inc.php | 2 +- lib/adodb/datadict/datadict-sapdb.inc.php | 2 +- lib/adodb/datadict/datadict-sqlite.inc.php | 2 +- lib/adodb/datadict/datadict-sybase.inc.php | 2 +- lib/adodb/drivers/adodb-access.inc.php | 2 +- lib/adodb/drivers/adodb-ado.inc.php | 2 +- lib/adodb/drivers/adodb-ado5.inc.php | 2 +- lib/adodb/drivers/adodb-ado_access.inc.php | 2 +- lib/adodb/drivers/adodb-ado_mssql.inc.php | 2 +- lib/adodb/drivers/adodb-borland_ibase.inc.php | 2 +- lib/adodb/drivers/adodb-csv.inc.php | 2 +- lib/adodb/drivers/adodb-db2.inc.php | 2 +- lib/adodb/drivers/adodb-db2oci.inc.php | 2 +- lib/adodb/drivers/adodb-db2ora.inc.php | 2 +- lib/adodb/drivers/adodb-fbsql.inc.php | 2 +- lib/adodb/drivers/adodb-firebird.inc.php | 2 +- lib/adodb/drivers/adodb-ibase.inc.php | 2 +- lib/adodb/drivers/adodb-informix.inc.php | 2 +- lib/adodb/drivers/adodb-informix72.inc.php | 2 +- lib/adodb/drivers/adodb-ldap.inc.php | 2 +- lib/adodb/drivers/adodb-mssql.inc.php | 2 +- lib/adodb/drivers/adodb-mssqlnative.inc.php | 2 +- lib/adodb/drivers/adodb-mssqlpo.inc.php | 2 +- lib/adodb/drivers/adodb-mysql.inc.php | 2 +- lib/adodb/drivers/adodb-mysqli.inc.php | 2 +- lib/adodb/drivers/adodb-mysqlpo.inc.php | 2 +- lib/adodb/drivers/adodb-mysqlt.inc.php | 2 +- lib/adodb/drivers/adodb-netezza.inc.php | 2 +- lib/adodb/drivers/adodb-oci8.inc.php | 2 +- lib/adodb/drivers/adodb-oci805.inc.php | 2 +- lib/adodb/drivers/adodb-oci8po.inc.php | 2 +- lib/adodb/drivers/adodb-oci8quercus.inc.php | 2 +- lib/adodb/drivers/adodb-odbc.inc.php | 2 +- lib/adodb/drivers/adodb-odbc_db2.inc.php | 2 +- lib/adodb/drivers/adodb-odbc_mssql.inc.php | 2 +- lib/adodb/drivers/adodb-odbc_oracle.inc.php | 2 +- lib/adodb/drivers/adodb-odbtp.inc.php | 2 +- lib/adodb/drivers/adodb-odbtp_unicode.inc.php | 2 +- lib/adodb/drivers/adodb-oracle.inc.php | 2 +- lib/adodb/drivers/adodb-pdo.inc.php | 2 +- lib/adodb/drivers/adodb-pdo_mssql.inc.php | 2 +- lib/adodb/drivers/adodb-pdo_mysql.inc.php | 4 +- lib/adodb/drivers/adodb-pdo_oci.inc.php | 2 +- lib/adodb/drivers/adodb-pdo_pgsql.inc.php | 2 +- lib/adodb/drivers/adodb-pdo_sqlite.inc.php | 2 +- lib/adodb/drivers/adodb-postgres.inc.php | 2 +- lib/adodb/drivers/adodb-postgres64.inc.php | 2 +- lib/adodb/drivers/adodb-postgres7.inc.php | 2 +- lib/adodb/drivers/adodb-postgres8.inc.php | 8 +- lib/adodb/drivers/adodb-postgres9.inc.php | 2 +- lib/adodb/drivers/adodb-proxy.inc.php | 2 +- lib/adodb/drivers/adodb-sapdb.inc.php | 2 +- lib/adodb/drivers/adodb-sqlanywhere.inc.php | 2 +- lib/adodb/drivers/adodb-sqlite.inc.php | 2 +- lib/adodb/drivers/adodb-sqlite3.inc.php | 2 +- lib/adodb/drivers/adodb-sqlitepo.inc.php | 2 +- lib/adodb/drivers/adodb-sybase.inc.php | 2 +- lib/adodb/drivers/adodb-sybase_ase.inc.php | 2 +- lib/adodb/drivers/adodb-text.inc.php | 388 ------------------ lib/adodb/drivers/adodb-vfp.inc.php | 2 +- lib/adodb/perf/perf-db2.inc.php | 2 +- lib/adodb/perf/perf-informix.inc.php | 2 +- lib/adodb/perf/perf-mssql.inc.php | 2 +- lib/adodb/perf/perf-mssqlnative.inc.php | 2 +- lib/adodb/perf/perf-mysql.inc.php | 2 +- lib/adodb/perf/perf-oci8.inc.php | 2 +- lib/adodb/perf/perf-postgres.inc.php | 2 +- lib/adodb/pivottable.inc.php | 2 +- lib/adodb/readme.txt | 68 --- lib/adodb/readme_moodle.txt | 11 +- lib/adodb/rsfilter.inc.php | 2 +- lib/adodb/toexport.inc.php | 2 +- lib/adodb/tohtml.inc.php | 2 +- lib/thirdpartylibs.xml | 2 +- 103 files changed, 443 insertions(+), 744 deletions(-) rename lib/adodb/{license.txt => LICENSE.md} (100%) create mode 100644 lib/adodb/README.md delete mode 100644 lib/adodb/drivers/adodb-text.inc.php delete mode 100644 lib/adodb/readme.txt diff --git a/lib/adodb/license.txt b/lib/adodb/LICENSE.md similarity index 100% rename from lib/adodb/license.txt rename to lib/adodb/LICENSE.md diff --git a/lib/adodb/README.md b/lib/adodb/README.md new file mode 100644 index 00000000000..273c24ce3e5 --- /dev/null +++ b/lib/adodb/README.md @@ -0,0 +1,103 @@ +ADOdb Library for PHP5 +====================== + +[![Join chat on Gitter](https://img.shields.io/gitter/room/form-data/form-data.svg)](https://gitter.im/adodb/adodb?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Download ADOdb](https://img.shields.io/sourceforge/dm/adodb.svg)](https://sourceforge.net/projects/adodb/files/latest/download) + +(c) 2000-2013 John Lim (jlim@natsoft.com) +(c) 2014 Damien Regad, Mark Newnham and the + [ADOdb community](https://github.com/ADOdb/ADOdb/graphs/contributors) + +The ADOdb Library is dual-licensed, released under both the +[BSD 3-Clause](https://github.com/ADOdb/ADOdb/blob/master/LICENSE.md#bsd-3-clause-license) +and the +[GNU Lesser General Public Licence (LGPL) v2.1](https://github.com/ADOdb/ADOdb/blob/master/LICENSE.md#gnu-lesser-general-public-license) +or, at your option, any later version. +This means you can use it in proprietary products; +see [License](https://github.com/ADOdb/ADOdb/blob/master/LICENSE.md) for details. + +Home page: http://adodb.org/ + + +Introduction +============ + +PHP's database access functions are not standardized. This creates a +need for a database class library to hide the differences between the +different databases (encapsulate the differences) so we can easily +switch databases. + +The library currently supports MySQL, Interbase, Sybase, PostgreSQL, Oracle, +Microsoft SQL server, Foxpro ODBC, Access ODBC, Informix, DB2, +Sybase SQL Anywhere, generic ODBC and Microsoft's ADO. + +We hope more people will contribute drivers to support other databases. + + +Installation +============ + +Unpack all the files into a directory accessible by your web server. + +To test, try modifying some of the tutorial examples. +Make sure you customize the connection settings correctly. + +You can debug using: + +``` php +debug = true; +$db->Connect($server, $user, $password, $database); +$rs = $db->Execute('select * from some_small_table'); +print "
";
+print_r($rs->GetRows());
+print "
"; +``` + + +Documentation and Examples +========================== + +Refer to the [ADOdb website](http://adodb.org/) for library documentation and examples. The documentation can also be [downloaded for offline viewing](https://sourceforge.net/projects/adodb/files/Documentation/). + +- [Main documentation](http://adodb.org/dokuwiki/doku.php?id=v5:userguide:userguide_index): Query, update and insert records using a portable API. +- [Data dictionary](http://adodb.org/dokuwiki/doku.php?id=v5:dictionary:dictionary_index) describes how to create database tables and indexes in a portable manner. +- [Database performance monitoring](http://adodb.org/dokuwiki/doku.php?id=v5:performance:performance_index) allows you to perform health checks, tune and monitor your database. +- [Database-backed sessions](http://adodb.org/dokuwiki/doku.php?id=v5:session:session_index). + +There is also a [tutorial](http://adodb.org/dokuwiki/doku.php?id=v5:userguide:mysql_tutorial) that contrasts ADOdb code with PHP native MySQL code. + + +Files +===== + +- `adodb.inc.php` is the library's main file. You only need to include this file. +- `adodb-*.inc.php` are the database specific driver code. +- `adodb-session.php` is the PHP4 session handling code. +- `test.php` contains a list of test commands to exercise the class library. +- `testdatabases.inc.php` contains the list of databases to apply the tests on. +- `Benchmark.php` is a simple benchmark to test the throughput of a SELECT +statement for databases described in testdatabases.inc.php. The benchmark +tables are created in test.php. + + +Support +======= + +To discuss with the ADOdb development team and users, connect to our +[Gitter chatroom](https://gitter.im/adodb/adodb) using your Github credentials. + +Please report bugs, issues and feature requests on Github: + +https://github.com/ADOdb/ADOdb/issues + +You may also find legacy issues in + +- the old [ADOdb forums](http://phplens.com/lens/lensforum/topics.php?id=4) on phplens.com +- the [SourceForge tickets section](http://sourceforge.net/p/adodb/_list/tickets) + +However, please note that they are not actively monitored and should +only be used as reference. diff --git a/lib/adodb/adodb-active-record.inc.php b/lib/adodb/adodb-active-record.inc.php index bbba78dcded..e003f8faa2b 100644 --- a/lib/adodb/adodb-active-record.inc.php +++ b/lib/adodb/adodb-active-record.inc.php @@ -1,7 +1,7 @@ _dbat]; @@ -463,8 +463,8 @@ class ADODB_Active_Record { $attr = array(); $keys = array(); - switch($ADODB_ASSOC_CASE) { - case 0: + switch (ADODB_ASSOC_CASE) { + case ADODB_ASSOC_CASE_LOWER: foreach($cols as $name => $fldobj) { $name = strtolower($name); if ($ADODB_ACTIVE_DEFVALS && isset($fldobj->default_value)) { @@ -480,7 +480,7 @@ class ADODB_Active_Record { } break; - case 1: + case ADODB_ASSOC_CASE_UPPER: foreach($cols as $name => $fldobj) { $name = strtoupper($name); @@ -927,8 +927,6 @@ class ADODB_Active_Record { // returns 0 on error, 1 on update, 2 on insert function Replace() { - global $ADODB_ASSOC_CASE; - $db = $this->DB(); if (!$db) { return false; @@ -968,14 +966,17 @@ class ADODB_Active_Record { $pkey = array($pkey); } - if ($ADODB_ASSOC_CASE == 0) { - foreach($pkey as $k => $v) - $pkey[$k] = strtolower($v); - } - elseif ($ADODB_ASSOC_CASE == 1) { - foreach($pkey as $k => $v) { - $pkey[$k] = strtoupper($v); - } + switch (ADODB_ASSOC_CASE) { + case ADODB_ASSOC_CASE_LOWER: + foreach ($pkey as $k => $v) { + $pkey[$k] = strtolower($v); + } + break; + case ADODB_ASSOC_CASE_UPPER: + foreach ($pkey as $k => $v) { + $pkey[$k] = strtoupper($v); + } + break; } $ok = $db->Replace($this->_table,$arr,$pkey); diff --git a/lib/adodb/adodb-active-recordx.inc.php b/lib/adodb/adodb-active-recordx.inc.php index 0d85a744b07..735702baf34 100644 --- a/lib/adodb/adodb-active-recordx.inc.php +++ b/lib/adodb/adodb-active-recordx.inc.php @@ -1,7 +1,7 @@ _dbat]; @@ -491,8 +491,8 @@ class ADODB_Active_Record { $attr = array(); $keys = array(); - switch($ADODB_ASSOC_CASE) { - case 0: + switch (ADODB_ASSOC_CASE) { + case ADODB_ASSOC_CASE_LOWER: foreach($cols as $name => $fldobj) { $name = strtolower($name); if ($ADODB_ACTIVE_DEFVALS && isset($fldobj->default_value)) { @@ -508,7 +508,7 @@ class ADODB_Active_Record { } break; - case 1: + case ADODB_ASSOC_CASE_UPPER: foreach($cols as $name => $fldobj) { $name = strtoupper($name); @@ -1060,8 +1060,6 @@ class ADODB_Active_Record { // returns 0 on error, 1 on update, 2 on insert function Replace() { - global $ADODB_ASSOC_CASE; - $db = $this->DB(); if (!$db) { return false; @@ -1097,7 +1095,7 @@ class ADODB_Active_Record { } - switch ($ADODB_ASSOC_CASE == 0) { + switch (ADODB_ASSOC_CASE) { case ADODB_ASSOC_CASE_LOWER: foreach($pkey as $k => $v) { $pkey[$k] = strtolower($v); diff --git a/lib/adodb/adodb-csvlib.inc.php b/lib/adodb/adodb-csvlib.inc.php index 90b821984c2..8db398479e3 100644 --- a/lib/adodb/adodb-csvlib.inc.php +++ b/lib/adodb/adodb-csvlib.inc.php @@ -8,7 +8,7 @@ $ADODB_INCLUDED_CSV = 1; /* - @version v5.20.14 06-Jan-2019 + @version v5.20.15 24-Nov-2019 @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/adodb-datadict.inc.php b/lib/adodb/adodb-datadict.inc.php index c62d2985d3f..2a9a104b944 100644 --- a/lib/adodb/adodb-datadict.inc.php +++ b/lib/adodb/adodb-datadict.inc.php @@ -1,7 +1,7 @@ FieldCount() > 1; + if (!$hasvalue) { + $compareFields0 = true; } - if ($multiple or is_array($defstr)) { - if ($size==0) $size=5; - $attr = ' multiple size="'.$size.'"'; - if (!strpos($name,'[]')) $name .= '[]'; - } else if ($size) $attr = ' size="'.$size.'"'; - else $attr =''; - - $s = '\n"; } -// Requires $ADODB_FETCH_MODE = ADODB_FETCH_NUM function _adodb_getmenu_gp(&$zthis, $name,$defstr='',$blank1stItem=true,$multiple=false, $size=0, $selectAttr='',$compareFields0=true) { - $hasvalue = false; + global $ADODB_FETCH_MODE; - if (is_array($name)) - { - /* - * Reserved for future use - */ + $s = _adodb_getmenu_select($name, $defstr, $blank1stItem, $multiple, $size, $selectAttr); + + $hasvalue = $zthis->FieldCount() > 1; + $hasgroup = $zthis->FieldCount() > 2; + if (!$hasvalue) { + $compareFields0 = true; } - if ($multiple or is_array($defstr)) { - if ($size==0) $size=5; - $attr = ' multiple size="'.$size.'"'; - if (!strpos($name,'[]')) $name .= '[]'; - } else if ($size) $attr = ' size="'.$size.'"'; - else $attr =''; - - $s = '\n"; } +/** + * Generate the opening SELECT tag for getmenu functions. + * + * ADOdb internal function, used by _adodb_getmenu() and _adodb_getmenu_gp(). + * + * @param string $name + * @param string $defstr + * @param bool $blank1stItem + * @param bool $multiple + * @param int $size + * @param string $selectAttr + * + * @return string HTML + */ +function _adodb_getmenu_select($name, $defstr = '', $blank1stItem = true, + $multiple = false, $size = 0, $selectAttr = '') +{ + if ($multiple || is_array($defstr)) { + if ($size == 0 ) { + $size = 5; + } + $attr = ' multiple size="' . $size . '"'; + if (!strpos($name,'[]')) { + $name .= '[]'; + } + } elseif ($size) { + $attr = ' size="' . $size . '"'; + } else { + $attr = ''; + } + + $html = '