. /** * IServ enrolment plugin implementation * * This plugin synchronizes courses and their enrolments with an IServ school server. * Based partially on the OSS plugin by Frank Schütte * * @package enrol * @subpackage iserv * @author Jonas Lührig based on code by Frank Schütte based on code by Iñaki Arenaza * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com} * @copyright 2010 Iñaki Arenaza * @copyright 2020 Frank Schütte * @copyright 2023 Gruelag GmbH * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ 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 ) ); }