diff --git a/auth/db/tests/db_test.php b/auth/db/tests/db_test.php
index 7979bd86a4b..03c186d44d3 100644
--- a/auth/db/tests/db_test.php
+++ b/auth/db/tests/db_test.php
@@ -381,4 +381,22 @@ class auth_db_testcase extends advanced_testcase {
$this->cleanup_auth_database();
}
+
+ /**
+ * Testing the function _colonscope() from ADOdb.
+ */
+ public function test_adodb_colonscope() {
+ global $CFG;
+ require_once($CFG->libdir.'/adodb/adodb.inc.php');
+ require_once($CFG->libdir.'/adodb/drivers/adodb-odbc.inc.php');
+ require_once($CFG->libdir.'/adodb/drivers/adodb-db2ora.inc.php');
+
+ $this->resetAfterTest(false);
+
+ $sql = "select * from table WHERE column=:1 AND anothercolumn > :0";
+ $arr = array('b', 1);
+ list($sqlout, $arrout) = _colonscope($sql,$arr);
+ $this->assertEquals("select * from table WHERE column=? AND anothercolumn > ?", $sqlout);
+ $this->assertEquals(array(1, 'b'), $arrout);
+ }
}
diff --git a/lib/adodb/drivers/adodb-db2ora.inc.php b/lib/adodb/drivers/adodb-db2ora.inc.php
index 286c0f5bd3e..ce035800bf5 100644
--- a/lib/adodb/drivers/adodb-db2ora.inc.php
+++ b/lib/adodb/drivers/adodb-db2ora.inc.php
@@ -38,7 +38,7 @@ global $_COLONARR,$_COLONSZ;
$_COLONARR = array();
$_COLONSZ = sizeof($arr);
- $sql2 = preg_replace("/(:[0-9]+)/e","_colontrack('\\1')",$sql);
+ $sql2 = preg_replace_callback('/(:[0-9]+)/', create_function('$m', 'return _colontrack($m[0]);'), $sql);
if (empty($_COLONARR)) return array($sql,$arr);
diff --git a/lib/adodb/drivers/adodb-mysqli.inc.php b/lib/adodb/drivers/adodb-mysqli.inc.php
index f14e2575b4d..37937a02ca4 100644
--- a/lib/adodb/drivers/adodb-mysqli.inc.php
+++ b/lib/adodb/drivers/adodb-mysqli.inc.php
@@ -1050,7 +1050,7 @@ class ADORecordSet_mysqli extends ADORecordSet{
//if results are attached to this pointer from Stored Proceedure calls, the next standard query will die 2014
//only a problem with persistant connections
- while(mysqli_more_results($this->connection->_connectionID)){
+ while (@mysqli_more_results($this->connection->_connectionID)) {
@mysqli_next_result($this->connection->_connectionID);
}
diff --git a/lib/adodb/drivers/adodb-mysqlt.inc.php b/lib/adodb/drivers/adodb-mysqlt.inc.php
index 55b5364015a..134f564e00a 100644
--- a/lib/adodb/drivers/adodb-mysqlt.inc.php
+++ b/lib/adodb/drivers/adodb-mysqlt.inc.php
@@ -130,7 +130,7 @@ class ADORecordSet_mysqlt extends ADORecordSet_mysql{
class ADORecordSet_ext_mysqlt extends ADORecordSet_mysqlt {
- function ADORecordSet_ext_mysqlt($queryID,$mode=false)
+ function __construct($queryID,$mode=false)
{
parent::__construct($queryID,$mode);
}
diff --git a/lib/adodb/readme_moodle.txt b/lib/adodb/readme_moodle.txt
index 664ce2f6235..3d224581e61 100644
--- a/lib/adodb/readme_moodle.txt
+++ b/lib/adodb/readme_moodle.txt
@@ -1,4 +1,4 @@
-Description of ADODB V5.21 library import into Moodle
+Description of ADODB V5.20.1 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.
@@ -24,5 +24,7 @@ Added:
Our changes:
* Removed random seed initialization from lib/adodb/adodb.inc.php:216 (see 038f546 and MDL-41198).
+ * MDL-52286 fixed usage of /e in preg_replace, incorrect constructor in ADORecordSet_ext_mysqlt
+ and ADORecordSet_mysqli::_close(). Check if fixed upstream during the next upgrade and remove this line.
skodak, iarenaza, moodler, stronk7
diff --git a/lib/thirdpartylibs.xml b/lib/thirdpartylibs.xml
index 89c2031337f..fc8ffe02e18 100644
--- a/lib/thirdpartylibs.xml
+++ b/lib/thirdpartylibs.xml
@@ -4,7 +4,7 @@
adodb
AdoDB
BSD/GPL
- 5.21
+ 5.20.1
2.1+