diff --git a/enrol/ldap/lib.php b/enrol/ldap/lib.php index 1615eca..baec077 100644 --- a/enrol/ldap/lib.php +++ b/enrol/ldap/lib.php @@ -219,6 +219,14 @@ class enrol_ldap_plugin extends enrol_plugin { $ignorehidden = $this->get_config('ignorehiddencourses'); $courseidnumber = $this->get_config('course_idnumber'); foreach($roles as $role) { + // Skip and clear array of current enrolments (to prevent unenrolment) if ldapconnection fails. + // Fix for MDL-56732. + if ($enrolments[$role->id]['ext'] === false) { + error_log("LDAP connection failed for role ID = " . $role->id . ". Skipping LDAP enrol / unenrol actions"); + $enrolments[$role->id]['current'] = array(); + continue; + } + foreach ($enrolments[$role->id]['ext'] as $enrol) { $course_ext_id = $enrol[$courseidnumber][0]; if (empty($course_ext_id)) { @@ -799,7 +807,14 @@ class enrol_ldap_plugin extends enrol_plugin { $flat_records = array(); do { if ($ldap_pagedresults) { - ldap_control_paged_result($this->ldapconnection, $this->config->pagesize, true, $ldap_cookie); + if (is_null($this->ldapconnection)) { + // Return Boolean false if ldapconnection is not set. + // Fix for MDL-56732. + error_log('LDAP connection is null in enrol/ldap'); + return false; + } else { + ldap_control_paged_result($this->ldapconnection, $this->config->pagesize, true, $ldap_cookie); + } } if ($this->get_config('course_search_sub')) {