diff --git a/admin/cron.php b/admin/cron.php index 16c65f77744..9cc3083ac97 100644 --- a/admin/cron.php +++ b/admin/cron.php @@ -151,11 +151,18 @@ mtrace('Removing expired enrolments ...', ''); // See MDL-8785 $timenow = time(); $somefound = false; - //The preferred way saves memory, dmllib.php - $rs_enrol = get_recordset_select('role_assignments', - 'timeend > 0 AND timeend < '.$timenow, - $sort='', - 'roleid, userid, contextid'); + // The preferred way saves memory, dmllib.php + // find courses where limited enrolment is enabled + global $CFG; + $rs_enrol = get_recordset_sql("SELECT ra.roleid, ra.userid, ra.contextid + FROM {$CFG->prefix}course c + INNER JOIN {$CFG->prefix}context cx ON cx.instanceid = c.id + INNER JOIN {$CFG->prefix}role_assignments ra ON ra.contextid = cx.id + WHERE cx.contextlevel = '".CONTEXT_COURSE."' + AND ra.timeend > 0 + AND ra.timeend < '$timenow' + AND c.enrolperiod > 0 + "); mtrace($rs_enrol->RecordCount().' to delete'); while ($oldenrolment = rs_fetch_next_record($rs_enrol)) { role_unassign($oldenrolment->roleid, $oldenrolment->userid, 0, $oldenrolment->contextid);