You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

343 lines
11 KiB
PHP

<?php
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* 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 <iarenaza@eps.mondragon.edu>
* @copyright 2020 Frank Schütte <fschuett@gymhim.de>
* @copyright 2023 Gruelag GmbH <buero@gruelag.de>
* @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
)
);
}