From 4eca71dc7f62e085eed2f2a3fe594f55dae1d783 Mon Sep 17 00:00:00 2001 From: jonasluehrig Date: Mon, 16 Feb 2026 12:59:13 +0100 Subject: [PATCH] Make enrolling only LDAP users an option --- lang/de/enrol_iserv.php | 26 +- lang/en/enrol_iserv.php | 26 +- lib.php | 26 +- settings.php | 625 ++++++++++++++++++++-------------------- 4 files changed, 363 insertions(+), 340 deletions(-) diff --git a/lang/de/enrol_iserv.php b/lang/de/enrol_iserv.php index febc3a3..5987e64 100644 --- a/lang/de/enrol_iserv.php +++ b/lang/de/enrol_iserv.php @@ -62,18 +62,20 @@ $string['role_member_attribute_is_dn_key'] = "Rollen Mitgliedsattribut ist DN"; $string['role_member_attribute_is_dn_desc'] = "Gibt an, ob das Rollen Mitgliedsattribut ein DN Wert ist"; // Course Mapping -$string['coursemapping'] = "Kurszuweisung"; -$string['coursemapping_desc'] = "Einstellungen zur Zuweisung von IServ Gruppen zu Moodle Kursen"; -$string['coursemapping_attribute_key'] = "Kurs Attribut"; -$string['coursemapping_attribute_desc'] = "LDAP Attribut, wessen Wert eine Gruppe als Kurs markiert"; -$string['coursemapping_attribute_value_key'] = "Kurs Attributwert"; -$string['coursemapping_attribute_value_desc'] = "Wert des obrigen Kurs Attributes"; -$string['coursemapping_use_attribute_key'] = "Kurs Attribut benutzen"; -$string['coursemapping_use_attribute_desc'] = "Gibt an, ob das Kurs Attribut verwendet werden soll, um Gruppen Kursen zuzuweisen"; -$string['coursemapping_prefixes_key'] = "Kurs CN Präfix"; -$string['coursemapping_prefixes_desc'] = "Ein Präfix im CN Gruppen Attribut, welches eine Gruppe als Moodle Kurs markiert. Ein * wird als Platzhalter für den restlichen CN Wert eingesetzt"; -$string['coursemapping_use_prefixes_key'] = "Kurs CN Präfix verwenden"; -$string['coursemapping_use_prefixes_desc'] = "Gibt an, ob das Kurs CN Präfix verwendet werden soll, um Gruppen Kursen zuzuweisen. Hinweis: Das Kurs Attribut hat Vorrang, wenn beide aktiv sind!"; +$string['coursemapping'] = "Kurszuweisung"; +$string['coursemapping_desc'] = "Einstellungen zur Zuweisung von IServ Gruppen zu Moodle Kursen"; +$string['coursemapping_attribute_key'] = "Kurs Attribut"; +$string['coursemapping_attribute_desc'] = "LDAP Attribut, wessen Wert eine Gruppe als Kurs markiert"; +$string['coursemapping_attribute_value_key'] = "Kurs Attributwert"; +$string['coursemapping_attribute_value_desc'] = "Wert des obrigen Kurs Attributes"; +$string['coursemapping_use_attribute_key'] = "Kurs Attribut benutzen"; +$string['coursemapping_use_attribute_desc'] = "Gibt an, ob das Kurs Attribut verwendet werden soll, um Gruppen Kursen zuzuweisen"; +$string['coursemapping_prefixes_key'] = "Kurs CN Präfix"; +$string['coursemapping_prefixes_desc'] = "Ein Präfix im CN Gruppen Attribut, welches eine Gruppe als Moodle Kurs markiert. Ein * wird als Platzhalter für den restlichen CN Wert eingesetzt"; +$string['coursemapping_use_prefixes_key'] = "Kurs CN Präfix verwenden"; +$string['coursemapping_use_prefixes_desc'] = "Gibt an, ob das Kurs CN Präfix verwendet werden soll, um Gruppen Kursen zuzuweisen. Hinweis: Das Kurs Attribut hat Vorrang, wenn beide aktiv sind!"; +$string['coursemapping_map_only_ldap_users_key'] = "Kurse nur LDAP Nutzer/innen zuweisen"; +$string['coursemapping_map_only_ldap_users_desc'] = "Gibt an, ob Kurse nur Nutzer/innen zugweisen werden sollen, dessen Account via LDAP erstellt wurde"; // Course Settings $string['courses'] = "Kurseinstellungen"; diff --git a/lang/en/enrol_iserv.php b/lang/en/enrol_iserv.php index 298e16a..ff58ffb 100644 --- a/lang/en/enrol_iserv.php +++ b/lang/en/enrol_iserv.php @@ -61,18 +61,20 @@ $string['role_member_attribute_is_dn_key'] = "Role membership attribute is DN"; $string['role_member_attribute_is_dn_desc'] = "Specifies if the role membership attribute is a DN value"; // Course Mapping -$string['coursemapping'] = "Course Mapping"; -$string['coursemapping_desc'] = "Settings specifying how IServ groups are mapped to Moodle courses"; -$string['coursemapping_attribute_key'] = "Course Attribute"; -$string['coursemapping_attribute_desc'] = "LDAP attribute whose value marks IServ groups as Moodle courses"; -$string['coursemapping_attribute_value_key'] = "Course Attribute Value"; -$string['coursemapping_attribute_value_desc'] = "Value of the course attribute above"; -$string['coursemapping_use_attribute_key'] = "Use Course Attribute"; -$string['coursemapping_use_attribute_desc'] = "Specifies if the course attribute is used for mapping"; -$string['coursemapping_prefixes_key'] = "Course CN Prefix"; -$string['coursemapping_prefixes_desc'] = "A prefix in the group CN attribute which marks IServ groups as Moodle courses. An asterisk (*) is used as placeholder for remaining text in the CN attribute"; -$string['coursemapping_use_prefixes_key'] = "Use course CN prefix"; -$string['coursemapping_use_prefixes_desc'] = "Specifies if the course CN prefix is used for mapping. Notice: The course attribute takes precedence when both are active!"; +$string['coursemapping'] = "Course Mapping"; +$string['coursemapping_desc'] = "Settings specifying how IServ groups are mapped to Moodle courses"; +$string['coursemapping_attribute_key'] = "Course Attribute"; +$string['coursemapping_attribute_desc'] = "LDAP attribute whose value marks IServ groups as Moodle courses"; +$string['coursemapping_attribute_value_key'] = "Course Attribute Value"; +$string['coursemapping_attribute_value_desc'] = "Value of the course attribute above"; +$string['coursemapping_use_attribute_key'] = "Use Course Attribute"; +$string['coursemapping_use_attribute_desc'] = "Specifies if the course attribute is used for mapping"; +$string['coursemapping_prefixes_key'] = "Course CN Prefix"; +$string['coursemapping_prefixes_desc'] = "A prefix in the group CN attribute which marks IServ groups as Moodle courses. An asterisk (*) is used as placeholder for remaining text in the CN attribute"; +$string['coursemapping_use_prefixes_key'] = "Use course CN prefix"; +$string['coursemapping_use_prefixes_desc'] = "Specifies if the course CN prefix is used for mapping. Notice: The course attribute takes precedence when both are active!"; +$string['coursemapping_map_only_ldap_users_key'] = "Enrol only LDAP users"; +$string['coursemapping_map_only_ldap_users_desc'] = "Specifies if only those users shall be enrolled into courses, whose accounts have been created through the LDAP plugin"; // Course Settings $string['courses'] = "Course Settings"; diff --git a/lib.php b/lib.php index 9bc83fa..0e080ee 100644 --- a/lib.php +++ b/lib.php @@ -1329,13 +1329,18 @@ class enrol_iserv_plugin extends enrol_plugin if (!is_array($users)) $users = array($users); + $user_record_filter = []; + if ($this->config->coursemapping_map_only_ldap_users) { + $user_record_filter['auth'] = 'ldap'; + } + foreach ($users as $username) { $user = $DB->get_record( 'user', - array( - 'username' => $username, - 'auth' => 'ldap' - ) + [ + ...$user_record_filter, + 'username' => $username + ] ); if (!$user) { @@ -1368,13 +1373,18 @@ class enrol_iserv_plugin extends enrol_plugin if (!is_array($users)) $users = array($users); + $user_record_filter = []; + if ($this->config->coursemapping_map_only_ldap_users) { + $user_record_filter['auth'] = 'ldap'; + } + foreach ($users as $username) { $user = $DB->get_record( 'user', - array( - 'username' => $username, - 'auth' => 'ldap' - ) + [ + ...$user_record_filter, + 'username' => $username + ] ); if (!$user) { diff --git a/settings.php b/settings.php index b600ae3..a4c4055 100644 --- a/settings.php +++ b/settings.php @@ -31,312 +31,321 @@ defined('MOODLE_INTERNAL') || die(); -if ($ADMIN -> fulltree) { - global $DB; - - // Initializing - require_once ("{$CFG -> dirroot}/enrol/ldap/settingslib.php"); - require_once ("{$CFG -> dirroot}/enrol/oss/settings_callbacks.php"); - $yesno = array(get_string('no'), get_string('yes')); - - // Heading - $settings -> add( - new admin_setting_heading( - 'enrol_iserv_settings', - get_string('pluginname','enrol_iserv'), - get_string('plugin_description', 'enrol_iserv') - ) - ); - - - // --- GROUP Settings --- // - $settings->add( - new admin_setting_heading( - 'enrol_iserv_group_settings', - get_string('group_settings', 'enrol_iserv'), - get_string('group_settings_desc', 'enrol_iserv') - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/group_contexts', - get_string('group_contexts_key', 'enrol_iserv'), - get_string('group_contexts_desc', 'enrol_iserv'), - 'ou=groups,dc=mein-iserv,dc=de' - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/group_object_class', - get_string('group_object_class_key', 'enrol_iserv'), - get_string('group_object_class_desc', 'enrol_iserv'), - 'uuidObject' - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/group_attribute', - get_string('group_attribute_key', 'enrol_iserv'), - get_string('group_attribute_desc', 'enrol_iserv'), - 'cn' - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/group_fullname_attribute', - get_string('group_fullname_attribute_key', 'enrol_iserv'), - get_string('group_fullname_attribute_desc', 'enrol_iserv'), - 'description' - ) - ); - - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/group_member_attribute', - get_string('group_member_attribute_key', 'enrol_iserv'), - get_string('group_member_attribute_desc', 'enrol_iserv'), - "memberUid" - ) - ); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/group_member_attribute_is_dn', - get_string('group_member_attribute_is_dn_key', 'enrol_iserv'), - get_string('group_member_attribute_is_dn_desc', 'enrol_iserv'), - 0, - $yesno - ) - ); - - $settings->add( - new admin_setting_configcheckbox( - 'enrol_iserv/group_search_subtree', - get_string('group_search_subtree_key', 'enrol_iserv'), - get_string('group_search_subtree_desc', 'enrol_iserv'), - 0 - ) - ); - - - // --- ROLE Settings --- // - $settings->add( - new admin_setting_heading( - 'enrol_iserv_role_settings', - get_string('role_settings', 'enrol_iserv'), - get_string('role_settings_desc', 'enrol_iserv') - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/role_contexts', - get_string('role_contexts_key', 'enrol_iserv'), - get_string('role_contexts_desc', 'enrol_iserv'), - 'ou=roles,dc=mein-iserv,dc=de' - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/role_object_class', - get_string('role_object_class_key', 'enrol_iserv'), - get_string('role_object_class_desc', 'enrol_iserv'), - 'organizationalRole' - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/teachers_role_name', - get_string('teachers_role_name_key', 'enrol_iserv'), - get_string('teachers_role_name_desc', 'enrol_iserv'), - 'ROLE_TEACHER' - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/students_role_name', - get_string('students_role_name_key', 'enrol_iserv'), - get_string('students_role_name_desc', 'enrol_iserv'), - 'ROLE_STUDENT' - ) - ); - - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/role_member_attribute', - get_string('role_member_attribute_key', 'enrol_iserv'), - get_string('role_member_attribute_desc', 'enrol_iserv'), - "roleOccupant" - ) - ); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/role_member_attribute_is_dn', - get_string('role_member_attribute_is_dn_key', 'enrol_iserv'), - get_string('role_member_attribute_is_dn_desc', 'enrol_iserv'), - 1, - $yesno - ) - ); - - - // --- GROUP<>COURSE MAPPING Settings --- // - $settings->add( - new admin_setting_heading( - 'enrol_iserv_coursemapping_settings', - get_string('coursemapping', 'enrol_iserv'), - get_string('coursemapping_desc', 'enrol_iserv') - ) - ); - - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/coursemapping_attribute', - get_string('coursemapping_attribute_key', 'enrol_iserv'), - get_string('coursemapping_attribute_desc', 'enrol_iserv'), - 'memberUid' - ) - ); - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/coursemapping_attribute_value', - get_string('coursemapping_attribute_value_key', 'enrol_iserv'), - get_string('coursemapping_attribute_value_desc', 'enrol_iserv'), - "moodlekurs" - ) - ); - - $settings->add( - new admin_setting_configcheckbox( - 'enrol_iserv/coursemapping_use_attribute', - get_string('coursemapping_use_attribute_key', 'enrol_iserv'), - get_string('coursemapping_use_attribute_desc', 'enrol_iserv'), - 0 - ) - ); - - - $settings->add( - new admin_setting_configtext_trim_lower( - 'enrol_iserv/coursemapping_prefixes', - get_string('coursemapping_prefixes_key', 'enrol_iserv'), - get_string('coursemapping_prefixes_desc', 'enrol_iserv'), - "kurs.*" - ) - ); - - $settings->add( - new admin_setting_configcheckbox( - 'enrol_iserv/coursemapping_use_prefixes', - get_string('coursemapping_use_prefixes_key', 'enrol_iserv'), - get_string('coursemapping_use_prefixes_desc', 'enrol_iserv'), - 1 - ) - ); - - - // --- COURSES Settings --- // - $settings->add( - new admin_setting_heading( - 'enrol_iserv_courses_settings', - get_string('courses', 'enrol_iserv'), - get_string('courses_desc', 'enrol_iserv') - ) - ); - - $setting = new admin_setting_configtext_trim_lower( - 'enrol_iserv/courses_category', - get_string('courses_category_key', 'enrol_iserv'), - get_string('courses_category_desc', 'enrol_iserv'), - "Kurse" - ); - $setting -> set_updatedcallback ('enrol_iserv_settings_courses_category_name_updated'); - $settings->add($setting); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/courses_autocreate', - get_string('courses_autocreate_key', 'enrol_iserv'), - get_string('courses_autocreate_desc', 'enrol_iserv'), - 1, - $yesno - ) - ); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/courses_autoremove', - get_string('courses_autoremove_key', 'enrol_iserv'), - get_string('courses_autoremove_desc', 'enrol_iserv'), - 1, - $yesno - ) - ); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/courses_category_autocreate', - get_string('courses_category_autocreate_key', 'enrol_iserv'), - get_string('courses_category_autocreate_desc', 'enrol_iserv'), - 1, - $yesno - ) - ); - - $enrol_iserv_courses = array(); - $enrol_iserv_coursenames = $DB -> get_records_sql('SELECT * FROM {course} ORDER BY fullname'); - foreach ($enrol_iserv_coursenames as $key => $coursename) { - $enrol_iserv_courses[$coursename->id] = "{$coursename -> fullname} ({$coursename->id})"; - } - $enrol_iserv_courses[0] = get_string('course_template_none','enrol_iserv'); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/courses_template', - get_string('courses_template_key', 'enrol_iserv'), - get_string('courses_template_desc', 'enrol_iserv'), - 0, - $enrol_iserv_courses - ) - ); - - $options = get_default_enrol_roles (context_system::instance ()); - $teacher = get_archetype_roles ('editingteacher'); - $teacher = reset ($teacher); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/courses_teacher_role', - get_string('courses_teacher_role_key', 'enrol_iserv'), - get_string('courses_teacher_role_desc', 'enrol_iserv'), - $teacher -> id, - $options - ) - ); - - $options = get_default_enrol_roles (context_system::instance ()); - $student = get_archetype_roles ('student'); - $student = reset ($student); - - $settings->add( - new admin_setting_configselect( - 'enrol_iserv/courses_student_role', - get_string('courses_student_role_key', 'enrol_iserv'), - get_string('courses_student_role_desc', 'enrol_iserv'), - $student -> id, - $options - ) - ); +if ($ADMIN->fulltree) { + global $DB; + + // Initializing + require_once("{$CFG->dirroot}/enrol/ldap/settingslib.php"); + require_once("{$CFG->dirroot}/enrol/oss/settings_callbacks.php"); + $yesno = array(get_string('no'), get_string('yes')); + + // Heading + $settings->add( + new admin_setting_heading( + 'enrol_iserv_settings', + get_string('pluginname', 'enrol_iserv'), + get_string('plugin_description', 'enrol_iserv') + ) + ); + + + // --- GROUP Settings --- // + $settings->add( + new admin_setting_heading( + 'enrol_iserv_group_settings', + get_string('group_settings', 'enrol_iserv'), + get_string('group_settings_desc', 'enrol_iserv') + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/group_contexts', + get_string('group_contexts_key', 'enrol_iserv'), + get_string('group_contexts_desc', 'enrol_iserv'), + 'ou=groups,dc=mein-iserv,dc=de' + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/group_object_class', + get_string('group_object_class_key', 'enrol_iserv'), + get_string('group_object_class_desc', 'enrol_iserv'), + 'uuidObject' + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/group_attribute', + get_string('group_attribute_key', 'enrol_iserv'), + get_string('group_attribute_desc', 'enrol_iserv'), + 'cn' + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/group_fullname_attribute', + get_string('group_fullname_attribute_key', 'enrol_iserv'), + get_string('group_fullname_attribute_desc', 'enrol_iserv'), + 'description' + ) + ); + + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/group_member_attribute', + get_string('group_member_attribute_key', 'enrol_iserv'), + get_string('group_member_attribute_desc', 'enrol_iserv'), + "memberUid" + ) + ); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/group_member_attribute_is_dn', + get_string('group_member_attribute_is_dn_key', 'enrol_iserv'), + get_string('group_member_attribute_is_dn_desc', 'enrol_iserv'), + 0, + $yesno + ) + ); + + $settings->add( + new admin_setting_configcheckbox( + 'enrol_iserv/group_search_subtree', + get_string('group_search_subtree_key', 'enrol_iserv'), + get_string('group_search_subtree_desc', 'enrol_iserv'), + 0 + ) + ); + + + // --- ROLE Settings --- // + $settings->add( + new admin_setting_heading( + 'enrol_iserv_role_settings', + get_string('role_settings', 'enrol_iserv'), + get_string('role_settings_desc', 'enrol_iserv') + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/role_contexts', + get_string('role_contexts_key', 'enrol_iserv'), + get_string('role_contexts_desc', 'enrol_iserv'), + 'ou=roles,dc=mein-iserv,dc=de' + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/role_object_class', + get_string('role_object_class_key', 'enrol_iserv'), + get_string('role_object_class_desc', 'enrol_iserv'), + 'organizationalRole' + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/teachers_role_name', + get_string('teachers_role_name_key', 'enrol_iserv'), + get_string('teachers_role_name_desc', 'enrol_iserv'), + 'ROLE_TEACHER' + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/students_role_name', + get_string('students_role_name_key', 'enrol_iserv'), + get_string('students_role_name_desc', 'enrol_iserv'), + 'ROLE_STUDENT' + ) + ); + + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/role_member_attribute', + get_string('role_member_attribute_key', 'enrol_iserv'), + get_string('role_member_attribute_desc', 'enrol_iserv'), + "roleOccupant" + ) + ); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/role_member_attribute_is_dn', + get_string('role_member_attribute_is_dn_key', 'enrol_iserv'), + get_string('role_member_attribute_is_dn_desc', 'enrol_iserv'), + 1, + $yesno + ) + ); + + + // --- GROUP<>COURSE MAPPING Settings --- // + $settings->add( + new admin_setting_heading( + 'enrol_iserv_coursemapping_settings', + get_string('coursemapping', 'enrol_iserv'), + get_string('coursemapping_desc', 'enrol_iserv') + ) + ); + + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/coursemapping_attribute', + get_string('coursemapping_attribute_key', 'enrol_iserv'), + get_string('coursemapping_attribute_desc', 'enrol_iserv'), + 'memberUid' + ) + ); + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/coursemapping_attribute_value', + get_string('coursemapping_attribute_value_key', 'enrol_iserv'), + get_string('coursemapping_attribute_value_desc', 'enrol_iserv'), + "moodlekurs" + ) + ); + + $settings->add( + new admin_setting_configcheckbox( + 'enrol_iserv/coursemapping_use_attribute', + get_string('coursemapping_use_attribute_key', 'enrol_iserv'), + get_string('coursemapping_use_attribute_desc', 'enrol_iserv'), + 0 + ) + ); + + + $settings->add( + new admin_setting_configtext_trim_lower( + 'enrol_iserv/coursemapping_prefixes', + get_string('coursemapping_prefixes_key', 'enrol_iserv'), + get_string('coursemapping_prefixes_desc', 'enrol_iserv'), + "kurs.*" + ) + ); + + $settings->add( + new admin_setting_configcheckbox( + 'enrol_iserv/coursemapping_use_prefixes', + get_string('coursemapping_use_prefixes_key', 'enrol_iserv'), + get_string('coursemapping_use_prefixes_desc', 'enrol_iserv'), + 1 + ) + ); + + $settings->add( + new admin_setting_configcheckbox( + 'enrol_iserv/coursemapping_map_only_ldap_users', + get_string('coursemapping_map_only_ldap_users_key', 'enrol_iserv'), + get_string('coursemapping_map_only_ldap_users_desc', 'enrol_iserv'), + 1 + ) + ); + + + // --- COURSES Settings --- // + $settings->add( + new admin_setting_heading( + 'enrol_iserv_courses_settings', + get_string('courses', 'enrol_iserv'), + get_string('courses_desc', 'enrol_iserv') + ) + ); + + $setting = new admin_setting_configtext_trim_lower( + 'enrol_iserv/courses_category', + get_string('courses_category_key', 'enrol_iserv'), + get_string('courses_category_desc', 'enrol_iserv'), + "Kurse" + ); + $setting->set_updatedcallback('enrol_iserv_settings_courses_category_name_updated'); + $settings->add($setting); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/courses_autocreate', + get_string('courses_autocreate_key', 'enrol_iserv'), + get_string('courses_autocreate_desc', 'enrol_iserv'), + 1, + $yesno + ) + ); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/courses_autoremove', + get_string('courses_autoremove_key', 'enrol_iserv'), + get_string('courses_autoremove_desc', 'enrol_iserv'), + 1, + $yesno + ) + ); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/courses_category_autocreate', + get_string('courses_category_autocreate_key', 'enrol_iserv'), + get_string('courses_category_autocreate_desc', 'enrol_iserv'), + 1, + $yesno + ) + ); + + $enrol_iserv_courses = array(); + $enrol_iserv_coursenames = $DB->get_records_sql('SELECT * FROM {course} ORDER BY fullname'); + foreach ($enrol_iserv_coursenames as $key => $coursename) { + $enrol_iserv_courses[$coursename->id] = "{$coursename->fullname} ({$coursename->id})"; + } + $enrol_iserv_courses[0] = get_string('course_template_none', 'enrol_iserv'); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/courses_template', + get_string('courses_template_key', 'enrol_iserv'), + get_string('courses_template_desc', 'enrol_iserv'), + 0, + $enrol_iserv_courses + ) + ); + + $options = get_default_enrol_roles(context_system::instance()); + $teacher = get_archetype_roles('editingteacher'); + $teacher = reset($teacher); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/courses_teacher_role', + get_string('courses_teacher_role_key', 'enrol_iserv'), + get_string('courses_teacher_role_desc', 'enrol_iserv'), + $teacher->id, + $options + ) + ); + + $options = get_default_enrol_roles(context_system::instance()); + $student = get_archetype_roles('student'); + $student = reset($student); + + $settings->add( + new admin_setting_configselect( + 'enrol_iserv/courses_student_role', + get_string('courses_student_role_key', 'enrol_iserv'), + get_string('courses_student_role_desc', 'enrol_iserv'), + $student->id, + $options + ) + ); }