Skip to content
Snippets Groups Projects
Commit d47bc33d authored by Alexander Bias's avatar Alexander Bias
Browse files

Adopt code changes Moodle 3.5 core auth_ldap (MDL-63887)

parent 38985647
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,7 @@ Changes ...@@ -6,6 +6,7 @@ Changes
### Unreleased ### Unreleased
* 2019-01-29 - Adopt code changes Moodle 3.5 core auth_ldap (MDL-63887).
* 2018-12-05 - Changed travis.yml due to upstream changes. * 2018-12-05 - Changed travis.yml due to upstream changes.
### v3.5-r1 ### v3.5-r1
......
...@@ -102,8 +102,8 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap { ...@@ -102,8 +102,8 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap {
array_push($contexts, $this->config->create_context); array_push($contexts, $this->config->create_context);
} }
$ldap_pagedresults = ldap_paged_results_supported($this->config->ldap_version, $ldapconnection); $ldappagedresults = ldap_paged_results_supported($this->config->ldap_version, $ldapconnection);
$ldap_cookie = ''; $ldapcookie = '';
foreach ($contexts as $context) { foreach ($contexts as $context) {
$context = trim($context); $context = trim($context);
if (empty($context)) { if (empty($context)) {
...@@ -111,23 +111,28 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap { ...@@ -111,23 +111,28 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap {
} }
do { do {
if ($ldap_pagedresults) { if ($ldappagedresults) {
ldap_control_paged_result($ldapconnection, $this->config->pagesize, true, $ldap_cookie); ldap_control_paged_result($ldapconnection, $this->config->pagesize, true, $ldapcookie);
} }
if ($this->config->search_sub) { if ($this->config->search_sub) {
// Use ldap_search to find first user from subtree. // Use ldap_search to find first user from subtree.
$ldap_result = ldap_search($ldapconnection, $context, $filter, array($this->config->user_attribute)); $ldapresult = ldap_search($ldapconnection, $context, $filter, array($this->config->user_attribute));
} else { } else {
// Search only in this context. // Search only in this context.
$ldap_result = ldap_list($ldapconnection, $context, $filter, array($this->config->user_attribute)); $ldapresult = ldap_list($ldapconnection, $context, $filter, array($this->config->user_attribute));
} }
if(!$ldap_result) { if(!$ldapresult) {
continue; continue;
} }
if ($ldap_pagedresults) { if ($ldappagedresults) {
ldap_control_paged_result_response($ldapconnection, $ldap_result, $ldap_cookie); $pagedresp = ldap_control_paged_result_response($ldapconnection, $ldapresult, $ldapcookie);
// Function ldap_control_paged_result_response() does not overwrite $ldapcookie if it fails, by
// setting this to null we avoid an infinite loop.
if ($pagedresp === false) {
$ldapcookie = null;
} }
if ($entry = @ldap_first_entry($ldapconnection, $ldap_result)) { }
if ($entry = @ldap_first_entry($ldapconnection, $ldapresult)) {
do { do {
$value = ldap_get_values_len($ldapconnection, $entry, $this->config->user_attribute); $value = ldap_get_values_len($ldapconnection, $entry, $this->config->user_attribute);
$value = core_text::convert($value[0], $this->config->ldapencoding, 'utf-8'); $value = core_text::convert($value[0], $this->config->ldapencoding, 'utf-8');
...@@ -135,13 +140,13 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap { ...@@ -135,13 +140,13 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap {
$this->ldap_bulk_insert($value); $this->ldap_bulk_insert($value);
} while ($entry = ldap_next_entry($ldapconnection, $entry)); } while ($entry = ldap_next_entry($ldapconnection, $entry));
} }
unset($ldap_result); // Free mem. unset($ldapresult); // Free mem.
} while ($ldap_pagedresults && $ldap_cookie !== null && $ldap_cookie != ''); } while ($ldappagedresults && $ldapcookie !== null && $ldapcookie != '');
} }
// If LDAP paged results were used, the current connection must be completely // If LDAP paged results were used, the current connection must be completely
// closed and a new one created, to work without paged results from here on. // closed and a new one created, to work without paged results from here on.
if ($ldap_pagedresults) { if ($ldappagedresults) {
$this->ldap_close(true); $this->ldap_close(true);
$ldapconnection = $this->ldap_connect(); $ldapconnection = $this->ldap_connect();
} }
...@@ -152,7 +157,9 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap { ...@@ -152,7 +157,9 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap {
$count = $DB->count_records_sql('SELECT COUNT(username) AS count, 1 FROM {tmp_extuser}'); $count = $DB->count_records_sql('SELECT COUNT(username) AS count, 1 FROM {tmp_extuser}');
if ($count < 1) { if ($count < 1) {
mtrace(get_string('didntgetusersfromldap', 'auth_ldap')); mtrace(get_string('didntgetusersfromldap', 'auth_ldap'));
exit; $dbman->drop_table($table);
$this->ldap_close();
return false;
} else { } else {
mtrace(get_string('gotcountrecordsfromldap', 'auth_ldap', $count)); mtrace(get_string('gotcountrecordsfromldap', 'auth_ldap', $count));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment