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
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
|
|
)
|
|
);
|
|
}
|