From 00cb2645f06dbe2b8fe024dd539fa8cb5ab448ab Mon Sep 17 00:00:00 2001 From: Charles Fulton Date: Fri, 7 Aug 2020 09:30:09 -0400 Subject: [PATCH 1/6] Update CI tool to version 3 --- .travis.yml | 26 ++++++++++++-------------- CHANGELOG.md | 6 ++++++ README.md | 2 +- version.php | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index 02889b3..5546d9c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,43 +2,40 @@ language: php addons: postgresql: "9.5" - firefox: "47.0.1" apt: packages: - ldap-utils - slapd - - openjdk-8-jre-headless + +services: + - mysql + - postgresql + - docker cache: directories: - $HOME/.composer/cache - $HOME/.npm -services: - - mysql - env: global: - IGNORE_NAMES=sync_test.php matrix: include: - - php: 7.0 - env: DB=pgsql MOODLE_BRANCH=MOODLE_36_STABLE NODE_VERSION=8.9.0 + - php: 7.1 + env: DB=pgsql MOODLE_BRANCH=MOODLE_37_STABLE - php: 7.3 - env: DB=mysqli MOODLE_BRANCH=MOODLE_37_STABLE NODE_VERSION=14.2.0 + env: DB=mysqli MOODLE_BRANCH=MOODLE_38_STABLE - php: 7.3 - env: DB=pgsql MOODLE_BRANCH=MOODLE_38_STABLE NODE_VERSION=14.2.0 + env: DB=pgsql MOODLE_BRANCH=MOODLE_39_STABLE - php: 7.3 - env: DB=mysqli MOODLE_BRANCH=master NODE_VERSION=14.2.0 + env: DB=mysqli MOODLE_BRANCH=master before_install: - phpenv config-rm xdebug.ini - - nvm install $NODE_VERSION - - nvm use $NODE_VERSION - cd ../.. - - composer selfupdate - - composer create-project -n --no-dev --prefer-dist moodlerooms/moodle-plugin-ci ci ^2 + - composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^3 - export PATH="$(cd ci/bin; pwd):$(cd ci/vendor/bin; pwd):$PATH" install: @@ -64,5 +61,6 @@ script: - moodle-plugin-ci savepoints - moodle-plugin-ci mustache - moodle-plugin-ci grunt + - moodle-plugin-ci phpdoc - moodle-plugin-ci phpunit - moodle-plugin-ci behat diff --git a/CHANGELOG.md b/CHANGELOG.md index d688523..8150e20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +- Change default branch to "main" +- Update CI tool to version 3 +- Dropped support for Moodle 3.6 + ## 3.6.0 (June 15, 2020) - Code cleanup diff --git a/README.md b/README.md index 042b8b8..3e9d454 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This plugin synchronizes Moodle cohorts against an LDAP directory using either g Requirements ------------ -- Moodle 3.6 (build 2018120300 or later) +- Moodle 3.7 (build 2019052000 or later) - OpenLDAP or Active Directory Installation diff --git a/version.php b/version.php index b4b7d0b..e5c2ed4 100644 --- a/version.php +++ b/version.php @@ -26,6 +26,6 @@ $plugin->component = 'local_ldap'; $plugin->version = 2020061500; -$plugin->requires = 2018120300; +$plugin->requires = 2019052000; $plugin->maturity = MATURITY_STABLE; $plugin->release = 'v3.6.0'; From f3dc067f40cf7751dcefe78c57783d7baf54e7f0 Mon Sep 17 00:00:00 2001 From: Charles Fulton Date: Fri, 7 Aug 2020 09:52:30 -0400 Subject: [PATCH 2/6] Fix PHPDocs --- locallib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locallib.php b/locallib.php index 879cfd5..2b8f058 100644 --- a/locallib.php +++ b/locallib.php @@ -40,7 +40,7 @@ class local_ldap extends auth_plugin_ldap { /** @var array Avoid infinite loop with nested groups in 'funny' directories. */ private $antirecursionarray; - /** @vary array Cache for found group dns. */ + /** @var array Cache for found group dns. */ private $groupdnscache; /** From e554d6e9aff53af6f39faa13882d03152493ef08 Mon Sep 17 00:00:00 2001 From: Fabian Grunau Date: Fri, 11 Sep 2020 12:17:11 +0200 Subject: [PATCH 3/6] Optional LDAP Filter Added. German Translation added. --- lang/de/local_ldap.php | 54 ++++++++++++++++++++++++++++++++++++++++++ lang/en/local_ldap.php | 2 ++ locallib.php | 7 +++++- settings.php | 5 ++++ version.php | 2 +- 5 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 lang/de/local_ldap.php diff --git a/lang/de/local_ldap.php b/lang/de/local_ldap.php new file mode 100644 index 0000000..6239b4f --- /dev/null +++ b/lang/de/local_ldap.php @@ -0,0 +1,54 @@ +. + +/** + * local_ldap language strings. + * + * @package local_ldap + * @copyright 2013 Patrick Pollet + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +$string['attributesynctask'] = 'Synchronisieren von Moodle-Gruppen anhand von LDAP-Attributen'; +$string['cohort_synching_ldap_attribute_attribute_desc'] = 'Anpassen des zu suchenden LDAP Benutzer-Attributs (Case-Sensitive)'; +$string['cohort_synching_ldap_attribute_attribute'] = 'Zu suchender Attributname'; +$string['cohort_synching_ldap_attribute_autocreate_cohorts_desc'] = 'Wenn aktiv werden Moodle-Gruppen automatisch angelegt'; +$string['cohort_synching_ldap_attribute_autocreate_cohorts'] = 'Fehlende Moodle-Gruppen anlegen'; +$string['cohort_synching_ldap_attribute_idnumbers_desc'] = 'Komma separierte Liste mit anzuwendenen Moodle-Gruppen-ID Nummern; Wenn leer werden alle eindeutigen Werte des Attributs für die synchronisierte Moodle-Gruppe verwendet'; +$string['cohort_synching_ldap_attribute_idnumbers'] = 'Gesuchte Moodle-Gruppen-ID Nummer'; +$string['cohort_synching_ldap_attribute_objectclass_desc'] = 'Überschreiben der Standard "ObjectClass" Einstellung (Vererbt aus den Authentifizierungsmodulen LDAP oder CAS)'; +$string['cohort_synching_ldap_attribute_objectclass'] = 'Benutzer "ObjectClass"'; +$string['cohort_synching_ldap_groups_autocreate_cohorts_desc'] = 'Wenn aktiv werden Moodle-Gruppen automatisch angelegt'; +$string['cohort_synching_ldap_groups_autocreate_cohorts'] = 'Fehlende Moodle-Gruppen anlegen'; +$string['cohort_synchronized_with_attribute'] = 'Moodle-Gruppen synchronisiert mit LDAP-Attribut {$a}'; +$string['cohort_synchronized_with_group'] = 'Moodle-Gruppen synchronsiert mit LDAP-Gruppe {$a}'; +$string['group_attribute_desc'] = 'Attribut für die Gruppen Bezeichnung im LDAP, normalerweise "cn" '; +$string['group_attribute'] = 'Gruppen Attribut'; +$string['group_class_desc'] = 'Angeben einer alternativen "ObjectClass" für die Gruppensuche im LDAP (z.B. group, groupOfNames, etc.)'; +$string['group_class'] = 'Gruppen ObjectClass'; +$string['groupsynctask'] = 'Synchronisieren von Moodle-Gruppen mit LDAP-Gruppen'; +$string['pluginname'] = 'LDAP syncing scripts'; +$string['privacy:metadata'] = 'Die "LDAP syncing scripts" speichern keine Daten.'; +$string['process_nested_groups_desc'] = 'Wenn aktiviert, werden verschachtelte LDAP-Gruppen verarbeitet.'; +$string['process_nested_groups'] = 'Verschachtelte Gruppen verarbeiten'; +$string['real_user_attribute_desc'] = 'Wenn das Benutzer-Attribut Großbuchstaben enthält (z.B. sAMAccountName) kann hier die korrekte Schhreibweise angegeben werden, wenne s nicht entsprechend in Moodle\'s CAS/LDAP Auth-Settings hinterlegt ist.'; +$string['real_user_attribute'] = 'Korrekte Benutzer "ObjectClass"'; +$string['synccohortattribute_info'] = ''; +$string['synccohortattribute'] = 'Moodle-Gruppen mit LDAP-Attributen synchronisieren'; +$string['synccohortgroup_info'] = ''; +$string['synccohortgroup'] = 'Moodle-Gruppen mit LDAP-Gruppen synchronisieren'; +$string['group_filter'] = 'LDAP-filter für Gruppen'; +$string['group_filter_desc'] = 'LDAP-Filter zum eingrenzen von Gruppen'; diff --git a/lang/en/local_ldap.php b/lang/en/local_ldap.php index df120b0..2bda109 100644 --- a/lang/en/local_ldap.php +++ b/lang/en/local_ldap.php @@ -50,3 +50,5 @@ $string['synccohortattribute'] = 'Sync Moodle\'s cohorts with LDAP attribute'; $string['synccohortgroup_info'] = ''; $string['synccohortgroup'] = 'Sync Moodle\'s cohorts with LDAP groups'; +$string['group_filter'] = 'Group LDAP-filter'; +$string['group_filter_desc'] = 'Define LDAP-filter to narrow down LDAP groups'; diff --git a/locallib.php b/locallib.php index 2b8f058..1929c99 100644 --- a/locallib.php +++ b/locallib.php @@ -68,6 +68,7 @@ public function __construct() { $extra = get_config('local_ldap'); $this->merge_config($extra, 'group_attribute', 'cn'); $this->merge_config($extra, 'group_class', 'groupOfNames'); + $this->merge_config($extra, 'group_filter', '*'); $this->merge_config($extra, 'process_nested_groups', 0); $this->merge_config($extra, 'cohort_synching_ldap_attribute_attribute', 'eduPersonAffiliation'); $this->merge_config($extra, 'cohort_synching_ldap_attribute_idnumbers', ''); @@ -675,7 +676,11 @@ public function sync_cohorts_by_attribute() { public function sync_cohorts_by_group() { global $DB; - $ldapgroups = $this->ldap_get_grouplist(); + $filter = ''; + if($this->config->group_filter != '' || $this->config->group_filter !== '*') + $filter = $this->config->group_filter; + + $ldapgroups = $this->ldap_get_grouplist($filter); foreach ($ldapgroups as $groupname) { if (!$cohort = $DB->get_record('cohort', array('idnumber' => $groupname), '*')) { if (empty($this->config->cohort_synching_ldap_groups_autocreate_cohorts)) { diff --git a/settings.php b/settings.php index d35d9b6..70bde71 100644 --- a/settings.php +++ b/settings.php @@ -49,6 +49,11 @@ $setting = new admin_setting_configtext('local_ldap/'.$name, $title, $description, ''); $settings->add($setting); + $name = 'group_filter'; + $title = get_string($name, 'local_ldap'); + $description = get_string($name . '_desc', 'local_ldap'); + $setting = new admin_setting_configtext('local_ldap/'.$name, $title,$description, false); + $name = 'process_nested_groups'; $title = get_string($name, 'local_ldap'); $description = get_string($name.'_desc', 'local_ldap'); diff --git a/version.php b/version.php index e5c2ed4..7cbbdbb 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'local_ldap'; -$plugin->version = 2020061500; +$plugin->version = 2020091100; $plugin->requires = 2019052000; $plugin->maturity = MATURITY_STABLE; $plugin->release = 'v3.6.0'; From 18073399bdd0d722876a58062afb84a3ea88cea4 Mon Sep 17 00:00:00 2001 From: Fabian Grunau Date: Mon, 14 Sep 2020 14:24:28 +0200 Subject: [PATCH 4/6] =?UTF-8?q?Kontexte=20jetzt=20auch=20=C3=BCber=20die?= =?UTF-8?q?=20Settings=20hinzuf=C3=BCfgbar=20Adding=20contexts=20at=20admi?= =?UTF-8?q?npanel.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lang/de/local_ldap.php | 2 ++ lang/en/local_ldap.php | 2 ++ locallib.php | 16 ++++++++++------ settings.php | 9 ++++++++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lang/de/local_ldap.php b/lang/de/local_ldap.php index 6239b4f..de57b44 100644 --- a/lang/de/local_ldap.php +++ b/lang/de/local_ldap.php @@ -52,3 +52,5 @@ $string['synccohortgroup'] = 'Moodle-Gruppen mit LDAP-Gruppen synchronisieren'; $string['group_filter'] = 'LDAP-filter für Gruppen'; $string['group_filter_desc'] = 'LDAP-Filter zum eingrenzen von Gruppen'; +$string['group_context'] = 'Zusätzliche Gruppen-OU\'s'; +$string['group_context_desc'] = 'Angeben von zusätzlichen OU\'s für die Gruppensuche. (Mit ";" separiert.)'; diff --git a/lang/en/local_ldap.php b/lang/en/local_ldap.php index 2bda109..5dd2c86 100644 --- a/lang/en/local_ldap.php +++ b/lang/en/local_ldap.php @@ -52,3 +52,5 @@ $string['synccohortgroup'] = 'Sync Moodle\'s cohorts with LDAP groups'; $string['group_filter'] = 'Group LDAP-filter'; $string['group_filter_desc'] = 'Define LDAP-filter to narrow down LDAP groups'; +$string['group_context'] = 'Additional group-ou\'s'; +$string['group_context_desc'] = 'Define additional paths for your groupsearch. (seperated by ";".)'; diff --git a/locallib.php b/locallib.php index 1929c99..feeaaf4 100644 --- a/locallib.php +++ b/locallib.php @@ -69,6 +69,7 @@ public function __construct() { $this->merge_config($extra, 'group_attribute', 'cn'); $this->merge_config($extra, 'group_class', 'groupOfNames'); $this->merge_config($extra, 'group_filter', '*'); + $this->merge_config($extra, 'group_context', ''); $this->merge_config($extra, 'process_nested_groups', 0); $this->merge_config($extra, 'cohort_synching_ldap_attribute_attribute', 'eduPersonAffiliation'); $this->merge_config($extra, 'cohort_synching_ldap_attribute_idnumbers', ''); @@ -126,8 +127,8 @@ public function ldap_get_grouplist($filter = "*") { $filter = "(&(" . $this->config->group_attribute . "=*)(objectclass=" . $this->config->group_class . "))"; } - if (!empty($CFG->cohort_synching_ldap_groups_contexts)) { - $contexts = explode(';', $CFG->cohort_synching_ldap_groups_contexts); + if (!empty($this->config->group_context)) { + $contexts = array_merge(explode(';', $this->config->group_context), explode(';', $this->config->contexts)); } else { $contexts = explode(';', $this->config->contexts); } @@ -199,8 +200,8 @@ private function ldap_get_group_members_rfc($group) { $queryg = "(&({$this->config->group_attribute}=" . ldap_filter_addslashes(trim($group)) . ")(objectClass={$this->config->group_class}))"; - if (!empty($CFG->cohort_synching_ldap_groups_contexts)) { - $contexts = explode(';', $CFG->cohort_synching_ldap_groups_contexts); + if (!empty($this->config->group_context)) { + $contexts = array_merge(explode(';', $this->config->group_context), explode(';', $this->config->contexts)); } else { $contexts = explode(';', $this->config->contexts); } @@ -297,8 +298,8 @@ private function ldap_get_group_members_ad($group) { $size = 999; - if (!empty($CFG->cohort_synching_ldap_groups_contexts)) { - $contexts = explode(';', $CFG->cohort_synching_ldap_groups_contexts); + if (!empty($this->config->group_context)) { + $contexts = array_merge(explode(';', $this->config->group_context), explode(';', $this->config->contexts)); } else { $contexts = explode(';', $this->config->contexts); } @@ -680,6 +681,9 @@ public function sync_cohorts_by_group() { if($this->config->group_filter != '' || $this->config->group_filter !== '*') $filter = $this->config->group_filter; + if($this->config->group_filter === '') + $filter = '*'; + $ldapgroups = $this->ldap_get_grouplist($filter); foreach ($ldapgroups as $groupname) { if (!$cohort = $DB->get_record('cohort', array('idnumber' => $groupname), '*')) { diff --git a/settings.php b/settings.php index 70bde71..e4802b2 100644 --- a/settings.php +++ b/settings.php @@ -52,7 +52,14 @@ $name = 'group_filter'; $title = get_string($name, 'local_ldap'); $description = get_string($name . '_desc', 'local_ldap'); - $setting = new admin_setting_configtext('local_ldap/'.$name, $title,$description, false); + $setting = new admin_setting_configtext('local_ldap/'.$name, $title, $description, '*'); + $settings->add($setting); + + $name = 'group_context'; + $title = get_string($name, 'local_ldap'); + $description = get_string($name . '_desc', 'local_ldap'); + $setting = new admin_setting_configtext('local_ldap/'.$name, $title, $description, ''); + $settings->add($setting); $name = 'process_nested_groups'; $title = get_string($name, 'local_ldap'); From 3a98dda44356a115f7cdb4b198bb0d9e368b5b39 Mon Sep 17 00:00:00 2001 From: Fabian Grunau Date: Mon, 14 Sep 2020 16:17:07 +0200 Subject: [PATCH 5/6] Travis errors fixed --- locallib.php | 8 +++++--- settings.php | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/locallib.php b/locallib.php index feeaaf4..12a2036 100644 --- a/locallib.php +++ b/locallib.php @@ -678,11 +678,13 @@ public function sync_cohorts_by_group() { global $DB; $filter = ''; - if($this->config->group_filter != '' || $this->config->group_filter !== '*') + if($this->config->group_filter != '' || $this->config->group_filter !== '*') { $filter = $this->config->group_filter; + } - if($this->config->group_filter === '') - $filter = '*'; + if($this->config->group_filter === '') { + $filter = '*';# + } $ldapgroups = $this->ldap_get_grouplist($filter); foreach ($ldapgroups as $groupname) { diff --git a/settings.php b/settings.php index e4802b2..2e0d1ad 100644 --- a/settings.php +++ b/settings.php @@ -54,7 +54,7 @@ $description = get_string($name . '_desc', 'local_ldap'); $setting = new admin_setting_configtext('local_ldap/'.$name, $title, $description, '*'); $settings->add($setting); - + $name = 'group_context'; $title = get_string($name, 'local_ldap'); $description = get_string($name . '_desc', 'local_ldap'); From b9e7e4bcb66312c63cc9546959a1997631a599db Mon Sep 17 00:00:00 2001 From: Fabian Grunau Date: Mon, 14 Sep 2020 16:27:35 +0200 Subject: [PATCH 6/6] Fixed a typo --- locallib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locallib.php b/locallib.php index 12a2036..96b3812 100644 --- a/locallib.php +++ b/locallib.php @@ -683,7 +683,7 @@ public function sync_cohorts_by_group() { } if($this->config->group_filter === '') { - $filter = '*';# + $filter = '*'; } $ldapgroups = $this->ldap_get_grouplist($filter);