From 87e88690b28636549afe4ffabdcc74282cd28ac4 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sun, 23 Jan 2011 14:56:28 +0100 Subject: [PATCH] MDL-26066 fix invalid type comparison when course id used and typo fix --- enrol/database/lib.php | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/enrol/database/lib.php b/enrol/database/lib.php index 50f2571fb53..818b05ecc26 100644 --- a/enrol/database/lib.php +++ b/enrol/database/lib.php @@ -74,7 +74,7 @@ class enrol_database_plugin extends enrol_plugin { $localrolefield = $this->get_config('localrolefield'); $localuserfield = $this->get_config('localuserfield'); - $localcoursefiled = $this->get_config('localcoursefield'); + $localcoursefield = $this->get_config('localcoursefield'); $unenrolaction = $this->get_config('unenrolaction'); $defaultrole = $this->get_config('defaultrole'); @@ -117,7 +117,7 @@ class enrol_database_plugin extends enrol_plugin { // missing course info continue; } - if (!$course = $DB->get_record('course', array($localcoursefiled=>$fields[$coursefield]), 'id,visible')) { + if (!$course = $DB->get_record('course', array($localcoursefield=>$fields[$coursefield]), 'id,visible')) { continue; } if (!$course->visible and $ignorehidden) { @@ -265,7 +265,7 @@ class enrol_database_plugin extends enrol_plugin { $localrolefield = $this->get_config('localrolefield'); $localuserfield = $this->get_config('localuserfield'); - $localcoursefiled = $this->get_config('localcoursefield'); + $localcoursefield = $this->get_config('localcoursefield'); $unenrolaction = $this->get_config('unenrolaction'); $defaultrole = $this->get_config('defaultrole'); @@ -308,7 +308,7 @@ class enrol_database_plugin extends enrol_plugin { // first find all existing courses with enrol instance $existing = array(); - $sql = "SELECT c.id, c.visible, c.$localcoursefiled AS mapping, e.id AS enrolid + $sql = "SELECT c.id, c.visible, c.$localcoursefield AS mapping, e.id AS enrolid FROM {course} c JOIN {enrol} e ON (e.courseid = c.id AND e.enrol = 'database')"; $rs = $DB->get_recordset_sql($sql); // watch out for idnumber duplicates @@ -321,11 +321,17 @@ class enrol_database_plugin extends enrol_plugin { $rs->close(); // add necessary enrol instances that are not present yet - $sql = "SELECT c.id, c.visible, c.$localcoursefiled AS mapping + $params = array(); + $localnotempty = ""; + if ($localcoursefield !== 'id') { + $localnotempty = "AND c.$localcoursefield <> :lcfe"; + $params['lcfe'] = $DB->sql_empty(); + } + $sql = "SELECT c.id, c.visible, c.$localcoursefield AS mapping FROM {course} c LEFT JOIN {enrol} e ON (e.courseid = c.id AND e.enrol = 'database') - WHERE e.id IS NULL AND c.$localcoursefiled <> ?"; - $rs = $DB->get_recordset_sql($sql, array($DB->sql_empty())); + WHERE e.id IS NULL $localnotempty"; + $rs = $DB->get_recordset_sql($sql, $params); foreach ($rs as $course) { if (empty($course->mapping)) { continue;