Index: enrol.php =================================================================== RCS file: /cvsroot/moodle/moodle/enrol/database/enrol.php,v retrieving revision 1.42.2.2 diff -u -r1.42.2.2 enrol.php --- enrol.php 23 Nov 2007 15:41:27 -0000 1.42.2.2 +++ enrol.php 4 May 2008 21:20:51 -0000 @@ -284,7 +284,7 @@ rs_close($crs); // release the handle // - // prune enrolments + // prune enrolments to users that are no longer in ext auth // hopefully they'll fit in the max buffer size for the RDBMS // // TODO: This doesn't work perfectly. If we are operating without @@ -376,13 +376,13 @@ $sql = " SELECT ra.roleid, ra.userid, ra.contextid FROM {$CFG->prefix}role_assignments ra - LEFT OUTER JOIN ({$CFG->prefix}context cn - JOIN {$CFG->prefix}course c ON cn.contextlevel = ".CONTEXT_COURSE." AND cn.instanceid = c.id) - ON ra.contextid = cn.id - WHERE ra.enrol = 'database'" . + JOIN ({$CFG->prefix}context cn ON cn.id = ra.contextid + JOIN {$CFG->prefix}course c ON c.id = cn.instanceid + WHERE ra.enrol = 'database' + AND cn.contextlevel = ".CONTEXT_COURSE." " . ($have_role ? ' AND ra.roleid = '.$role->id : '') . ($extcourses - ? " AND (c.id IS NULL OR c.{$CFG->enrol_localcoursefield} NOT IN (" . join(",", array_map(array(&$db, 'quote'), $extcourses)) . "))" + ? " AND c.{$CFG->enrol_localcoursefield} NOT IN (" . join(",", array_map(array(&$db, 'quote'), $extcourses)) . ")" : ''); $ers = $db->Execute($sql);