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
+======================
+
+[](https://gitter.im/adodb/adodb?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[](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 = '