diff --git a/lib/ddl/database_manager.php b/lib/ddl/database_manager.php
index da7f2830faf..67451235e7c 100644
--- a/lib/ddl/database_manager.php
+++ b/lib/ddl/database_manager.php
@@ -84,8 +84,6 @@ class database_manager {
notify('' . get_string('error') . '');
}
- $this->mdb->reset_columns(); // Clear out the cache, just in case changes were made to table structures
-
return $result;
}
@@ -150,8 +148,7 @@ class database_manager {
}
/// Get list of fields in table
- $this->mdb->reset_columns($tablename); // better reset before testing
- $columns = $this->mdb->get_columns($tablename);
+ $columns = $this->mdb->get_columns($tablename, false);
$exists = array_key_exists($fieldname, $columns);
diff --git a/lib/ddl/mssql_sql_generator.php b/lib/ddl/mssql_sql_generator.php
index 7cac0db09c4..4616240d743 100644
--- a/lib/ddl/mssql_sql_generator.php
+++ b/lib/ddl/mssql_sql_generator.php
@@ -325,9 +325,7 @@ class mssql_sql_generator extends sql_generator {
$fieldname = $xmldb_field->getName();
/// Take a look to field metadata
- $this->mdb->reset_columns($tablename);
-
- $meta = $this->mdb->get_columns($tablename);
+ $meta = $this->mdb->get_columns($tablename, false);
$metac = $meta[$fieldname];
$oldmetatype = $metac->meta_type;
diff --git a/lib/ddl/mysql_sql_generator.php b/lib/ddl/mysql_sql_generator.php
index a1e37ed4a46..4ccab7c65bc 100644
--- a/lib/ddl/mysql_sql_generator.php
+++ b/lib/ddl/mysql_sql_generator.php
@@ -255,14 +255,10 @@ class mysql_sql_generator extends sql_generator {
*/
public function getCheckConstraintsFromDB($xmldb_table, $xmldb_field = null) {
- global $db;
-
$tablename = $xmldb_table->getName($xmldb_table);
- $this->mdb->reset_columns($tablename);
-
/// Fetch all the columns in the table
- if (!$columns = $this->mdb->get_columns($tablename)) {
+ if (!$columns = $this->mdb->get_columns($tablename, false)) {
return array();
}
diff --git a/lib/ddl/oracle_sql_generator.php b/lib/ddl/oracle_sql_generator.php
index 05c323cdc5f..ba6324109c2 100644
--- a/lib/ddl/oracle_sql_generator.php
+++ b/lib/ddl/oracle_sql_generator.php
@@ -338,7 +338,7 @@ class oracle_sql_generator extends sql_generator {
$fieldname = $xmldb_field->getName();
/// Take a look to field metadata
- $meta = $this->mdb->get_columns($xmldb_table->getName());
+ $meta = $this->mdb->get_columns($tablename, false);
$metac = $meta[$fieldname];
$oldmetatype = $metac->meta_type;
diff --git a/lib/ddl/postgres_sql_generator.php b/lib/ddl/postgres_sql_generator.php
index 77890f6769d..ccd1ca78dca 100644
--- a/lib/ddl/postgres_sql_generator.php
+++ b/lib/ddl/postgres_sql_generator.php
@@ -246,7 +246,7 @@ class postgres_sql_generator extends sql_generator {
$fieldname = $xmldb_field->getName();
/// Take a look to field metadata
- $meta = $this->mdb->get_columns($xmldb_table->getName());
+ $meta = $this->mdb->get_columns($tablename, false);
$metac = $meta[$xmldb_field->getName()];
$oldmetatype = $metac->meta_type;
$oldlength = $metac->max_length;
diff --git a/lib/deprecatedlib.php b/lib/deprecatedlib.php
index 02f72e450c4..b8c77332b80 100644
--- a/lib/deprecatedlib.php
+++ b/lib/deprecatedlib.php
@@ -480,6 +480,20 @@ function get_course_users($courseid, $sort='ul.timeaccess DESC', $exceptions='',
}
+/**
+ * Returns a list of all site users
+ * Obsolete, just calls get_course_users(SITEID)
+ *
+ * @uses SITEID
+ * @deprecated Use {@link get_course_users()} instead.
+ * @param string $fields A comma separated list of fields to be returned from the chosen table.
+ * @return object|false {@link $USER} records or false if error.
+ */
+function get_site_users($sort='u.lastaccess DESC', $fields='*', $exceptions='') {
+
+ return get_course_users(SITEID, $sort, $exceptions, $fields);
+}
+
/**
* Returns an array of user objects
*
diff --git a/lib/dml/adodb_moodle_database.php b/lib/dml/adodb_moodle_database.php
index 9bd9f03ffd4..76548fa2708 100644
--- a/lib/dml/adodb_moodle_database.php
+++ b/lib/dml/adodb_moodle_database.php
@@ -10,7 +10,6 @@ require_once($CFG->libdir.'/dml/adodb_moodle_recordset.php');
abstract class adodb_moodle_database extends moodle_database {
protected $db;
- protected $columns = array(); // I wish we had a shared memory cache for this :-(
/**
* Returns localised database type name
@@ -137,8 +136,8 @@ abstract class adodb_moodle_database extends moodle_database {
return $indexes;
}
- public function get_columns($table) {
- if (isset($this->columns[$table])) {
+ public function get_columns($table, $usecache=true) {
+ if ($usecache and isset($this->columns[$table])) {
return $this->columns[$table];
}
@@ -157,14 +156,6 @@ abstract class adodb_moodle_database extends moodle_database {
return $this->columns[$table];
}
- public function reset_columns($table=null) {
- if ($table) {
- unset($this->columns[$table]);
- } else {
- $this->columns[$table] = array();
- }
- }
-
public function get_last_error() {
return $this->db->ErrorMsg();
}
@@ -206,6 +197,8 @@ abstract class adodb_moodle_database extends moodle_database {
$result = false;
$this->report_error($sql);
}
+ // structure changed, reset columns cache
+ $this->reset_columns();
return $result;
}
diff --git a/lib/dml/moodle_database.php b/lib/dml/moodle_database.php
index 484b51325ca..cbcd8d877f0 100644
--- a/lib/dml/moodle_database.php
+++ b/lib/dml/moodle_database.php
@@ -9,6 +9,8 @@ abstract class moodle_database {
// manipulates the db structure
protected $database_manager;
+ protected $columns = array(); // I wish we had a shared memory cache for this :-(
+
// db connection options
protected $dbhost;
protected $dbuser;
@@ -319,16 +321,19 @@ abstract class moodle_database {
/**
* Returns datailed information about columns in table. This information is cached internally.
* @param string $table name
+ * @param bool $usecache
* @return array array of database_column_info objects indexed with column names
*/
- public abstract function get_columns($table);
+ public abstract function get_columns($table, $usecache=true);
/**
* Reset internal column details cache
* @param string $table - empty means all, or one if name of table given
* @return void
*/
- public abstract function reset_columns($table=null);
+ public function reset_columns() {
+ $this->columns[] = array();
+ }
/**
* Returns sql generator used for db manipulation.
diff --git a/lib/dml/pdo_moodle_database.php b/lib/dml/pdo_moodle_database.php
index bcb1c4cc4c1..81497a4a3ae 100644
--- a/lib/dml/pdo_moodle_database.php
+++ b/lib/dml/pdo_moodle_database.php
@@ -10,7 +10,6 @@ require_once($CFG->libdir.'/dml/pdo_moodle_recordset.php');
abstract class pdo_moodle_database extends moodle_database {
protected $pdb;
- protected $columns = array(); // I wish we had a shared memory cache for this :-(
//TODO: This looks incorrect now IMO. Construct should have only external and connect get all the rest of params
public function __construct($dbhost, $dbuser, $dbpass, $dbname, $dbpersist, $prefix, array $dboptions=null, $external=false) {
@@ -31,8 +30,8 @@ abstract class pdo_moodle_database extends moodle_database {
protected function configure_dbconnection() {
}
- public function get_columns($table) {
- if (isset($this->columns[$table])) {
+ public function get_columns($table, $usecache=true) {
+ if ($usecache and isset($this->columns[$table])) {
return $this->columns[$table];
}
@@ -43,15 +42,6 @@ abstract class pdo_moodle_database extends moodle_database {
return $this->columns[$table];
}
- public function reset_columns($table=null) {
- if ($table) {
- unset($this->columns[$table]);
- } else {
- $this->columns[$table] = array();
- }
- }
-
-
protected function report_error($sql, $params, $obj) {
debugging($e->getMessage() .'
'. s($sql));
}
@@ -66,7 +56,6 @@ abstract class pdo_moodle_database extends moodle_database {
public function execute($sql, array $params=null) {
try {
- //$this->reset_columns(); // TODO: do we need to clean the cache here??
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$sth = $this->dbh->prepare($sql);
return $sth->execute($params);
diff --git a/lib/dml/postgres7_adodb_moodle_database.php b/lib/dml/postgres7_adodb_moodle_database.php
index 6ce794e7023..92d544c157b 100644
--- a/lib/dml/postgres7_adodb_moodle_database.php
+++ b/lib/dml/postgres7_adodb_moodle_database.php
@@ -100,8 +100,8 @@ class postgres7_adodb_moodle_database extends adodb_moodle_database {
return SQL_PARAMS_QM;
}
- public function get_columns($table) {
- if (isset($this->columns[$table])) {
+ public function get_columns($table, $usecache=true) {
+ if ($usecache and isset($this->columns[$table])) {
return $this->columns[$table];
}
diff --git a/lib/dmllib_todo.php b/lib/dmllib_todo.php
index a4fbb097325..3b0476997da 100644
--- a/lib/dmllib_todo.php
+++ b/lib/dmllib_todo.php
@@ -39,12 +39,12 @@ function execute_sql($command, $feedback=true) {
}
}
- $DB->reset_columns(); // Clear out the cache, just in case changes were made to table structures
-
if (defined('MDL_PERFDB')) { global $PERF ; $PERF->dbqueries++; };
$rs = $db->Execute($command);
+ $DB->reset_columns(); // Clear out the cache, just in case changes were made to table structures
+
$db->debug = $olddebug;
if ($rs) {