$str .= "\r\n";
$database = $databases[$CONFFILE['dbtype']];
- $dbconfig = $database->export_dbconfig($CONFFILE['dbhost'], $CONFFILE['dbuser'], $CONFFILE['dbpass'], $CONFFILE['dbname'], false, $CONFFILE['prefix']);
+ $dbconfig = $database->export_dbconfig($CONFFILE['dbhost'], $CONFFILE['dbuser'], $CONFFILE['dbpass'], $CONFFILE['dbname'], $CONFFILE['prefix']);
foreach ($dbconfig as $key=>$value) {
$key = str_pad($key, 9);
if (!isset($CFG->$name)) {
continue;
}
- list($library, $driver, $dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions) = $CFG->$name;
+ list($library, $driver, $dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions) = $CFG->$name;
$dbinfos[$i] = array('name'=>"External database $i ($library/$driver/$dbhost/$dbname/$prefix)", 'installed'=>false, 'configured'=>false);
$classname = "{$driver}_{$library}_moodle_database";
}
$dbinfos[$i]['installed'] = true;
- if ($d->connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions)) {
+ if ($d->connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions)) {
$dbinfos[$i]['configured'] = true;
if (data_submitted() and !empty($selected[$i])) {
$tests[$i] = $d;
echo '</ul></p>';
echo '<p>External databases are configured in config.php, add lines:
<pre>
-$CFG->func_test_db_1 = array("adodb", "postgres7", "localhost", "moodleuser", "password", "moodle", false, "test", null);
-$CFG->func_test_db_2 = array("adodb", "mssql", "localhost", "moodleuser", "password", "moodle", false, "test", null);
+$CFG->func_test_db_1 = array("adodb", "postgres7", "localhost", "moodleuser", "password", "moodle", "test", null);
+$CFG->func_test_db_2 = array("adodb", "mssql", "localhost", "moodleuser", "password", "moodle", "test", null);
</pre>
-where order of parameters is: dblibrary, dbtype, dbhost, dbuser, dbpass, dbname, dbpersist, prefix, dboptions
+where order of parameters is: dblibrary, dbtype, dbhost, dbuser, dbpass, dbname, prefix, dboptions
</p>';
echo '<p><input type="submit" value="' . get_string('runtests', 'simpletest') . '" /></p>';
echo '</div>';
$CFG->dbuser = $real_cfg->dbuser;
$CFG->dbpass = $real_cfg->dbpass;
$CFG->dbname = $real_cfg->dbname;
-$CFG->dbpersist = $real_cfg->dbpersist;
$CFG->unittestprefix = $real_cfg->unittestprefix;
$CFG->wwwroot = $real_cfg->wwwroot;
$CFG->dirroot = $real_cfg->dirroot;
$CFG->debug = $real_cfg->debug;
$DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
-$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->dbpersist, $CFG->unittestprefix);
+$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->unittestprefix);
if ($DB->get_manager()->table_exists(new xmldb_table('config')) && $config = $DB->get_records('config')) {
foreach ($config as $conf) {
$str .= "\r\n";
$DB = $databases[$INSTALL['dbtype']];
- $dbconfig = $DB->export_dbconfig($INSTALL['dbhost'], $INSTALL['dbuser'], $INSTALL['dbpass'], $INSTALL['dbname'], false, $INSTALL['prefix']);
+ $dbconfig = $DB->export_dbconfig($INSTALL['dbhost'], $INSTALL['dbuser'], $INSTALL['dbpass'], $INSTALL['dbname'], $INSTALL['prefix']);
foreach ($dbconfig as $key=>$value) {
$key = str_pad($key, 9);
*/
protected abstract function preconfigure_dbconnection();
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
global $CFG;
- $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions);
+ $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
$this->preconfigure_dbconnection();
// we probably want to change this value to ''.
$this->adodb->null2null = 'A long random string that will never, ever match something we want to insert into the database, I hope. \'';
- if (!isset($this->dbpersist) or !empty($this->dbpersist)) { // Use persistent connection (default)
+ if (!empty($this->dboptions['dbpersist'])) { // Use persistent connection
if (!$this->adodb->PConnect($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname)) {
return false;
}
protected $dbuser;
protected $dbpass;
protected $dbname;
- protected $dbpersist;
protected $prefix;
/**
* Note: can be used before connect()
* @return string
*/
- public function export_dbconfig($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
- $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions);
+ public function export_dbconfig($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
+ $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
$cfg = new stdClass();
$cfg->dbtype = $this->get_dbtype();
* @param string $dbuser
* @param string $dbpass
* @param string $dbname
- * @param bool $dbpersist
* @param mixed $prefix string means moodle db prefix, false used for external databases where prefix not used
* @param array $dboptions driver specific options
* @return bool success
*/
- public abstract function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null);
+ public abstract function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null);
/**
* Store various database settings
* @param string $dbuser
* @param string $dbpass
* @param string $dbname
- * @param bool $dbpersist
* @param mixed $prefix string means moodle db prefix, false used for external databases where prefix not used
* @param array $dboptions driver specific options
* @return void
*/
- protected function store_settings($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
+ protected function store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
$this->dbhost = $dbhost;
$this->dbuser = $dbuser;
$this->dbpass = $dbpass;
$this->dbname = $dbname;
- $this->dbpersist = $dbpersist;
$this->prefix = $prefix;
$this->dboptions = (array)$dboptions;
}
*/
public $temptables;
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
if ($prefix == '' and !$this->external) {
//Enforce prefixes for everybody but mysql
throw new dml_exception('prefixcannotbeempty', $this->get_dbfamily());
}
- return parent::connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions);
+ return parent::connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
}
/**
* @param string $dbuser
* @param string $dbpass
* @param string $dbname
- * @param bool $dbpersist
* @param mixed $prefix string means moodle db prefix, false used for external databases where prefix not used
* @param array $dboptions driver specific options
* @return bool success
*/
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
global $CFG;
- $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, false, $prefix, $dboptions);
+ $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
$this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if ($this->mysqli->connect_error) {
*/
class oci8po_adodb_moodle_database extends adodb_moodle_database {
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
if ($prefix == '' and !$this->external) {
//Enforce prefixes for everybody but mysql
throw new dml_exception('prefixcannotbeempty', $this->get_dbfamily());
$a = (object)array('dbfamily'=>'oracle', 'maxlength'=>2);
throw new dml_exception('prefixtoolong', $a);
}
- return parent::connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions);
+ return parent::connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
}
/**
* @param string $dbuser
* @param string $dbpass
* @param string $dbname
- * @param bool $dbpersist
* @param mixed $prefix string means moodle db prefix, false used for external databases where prefix not used
* @param array $dboptions driver specific options
* @return bool success
*/
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
- $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions);
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
+ $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
try {
$this->pdb = new PDO($this->get_dsn(), $this->dbuser, $this->dbpass, $this->get_pdooptions());
* @return array A key=>value array of PDO driver-specific connection options
*/
protected function get_pdooptions() {
- return array(PDO::ATTR_PERSISTENT => $this->dbpersist);
+ return array(PDO::ATTR_PERSISTENT => !empty($this->dboptions['dbpersist']));
}
protected function configure_dbconnection() {
* @param string $dbuser
* @param string $dbpass
* @param string $dbname
- * @param bool $dbpersist
* @param mixed $prefix string means moodle db prefix, false used for external databases where prefix not used
* @param array $dboptions driver specific options
* @return bool success
*/
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
global $CFG;
- $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, false, $prefix, $dboptions);
+ $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
//TODO: handle both port and socket connection
$this->pgsql = pg_connect("host='{$this->dbhost}' user='{$this->dbuser}' password='{$this->dbpass}' dbname='{$this->dbname}'");
*/
class postgres7_adodb_moodle_database extends adodb_moodle_database {
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
if ($prefix == '' and !$this->external) {
//Enforce prefixes for everybody but mysql
throw new dml_exception('prefixcannotbeempty', $this->get_dbfamily());
}
- return parent::connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions);
+ return parent::connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
}
/**
* Note: can be used before connect()
* @return string
*/
- public function export_dbconfig($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null) {
- $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, $dboptions);
+ public function export_dbconfig($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) {
+ $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
$cfg = new stdClass();
$cfg->dbtype = $this->get_dbtype();
protected function get_dblibrary(){}
public function get_name(){}
public function get_configuration_hints(){}
- public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null){}
+ public function connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null){}
public function get_server_info(){}
protected function allowed_param_types(){}
public function get_last_error(){}
$CFG->dbname = '';
}
- if (!isset($CFG->dbpersist)) {
- $CFG->dbpersist = false;
- }
-
if (!isset($CFG->dblibrary)) {
$CFG->dblibrary = 'adodb';
}
$CFG->dboptions = array();
}
+ if (isset($CFG->dbpersist)) {
+ $CFG->dboptions['dbpersist'] = $CFG->dbpersist;
+ }
+
+
$DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
$CFG->dbfamily = $DB->get_dbfamily(); // TODO: BC only for now
} else {
$prevdebug = error_reporting(0);
}
- if (!$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->dbpersist, $CFG->prefix, $CFG->dboptions)) {
+ if (!$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, $CFG->dboptions)) {
if (debugging('', DEBUG_ALL)) {
if ($dberr = ob_get_contents()) {
$dberr = '<p><em>'.$dberr.'</em></p>';
if (is_null($DB)) {
$this->realdb = $DB;
$DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
- $DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->dbpersist, $CFG->prefix);
+ $DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix);
}
events_uninstall('unittest');
if (empty(UnitTestDB::$DB)) {
UnitTestDB::$DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
- UnitTestDB::$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->dbpersist, $CFG->unittestprefix);
+ UnitTestDB::$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->unittestprefix);
}
$manager = UnitTestDB::$DB->get_manager();