From 084868545bc1c5001f010ca0bc59d29ef7cc9bfe Mon Sep 17 00:00:00 2001 From: MaxCSA Date: Tue, 23 Oct 2012 14:17:03 -0400 Subject: [PATCH] Add enrolment action scope parameter to enrol_database plugin --- enrol/database/lib.php | 5 +++++ enrol/database/settings.php | 3 +++ lang/en/enrol.php | 4 ++++ lib/enrollib.php | 3 +++ 4 files changed, 15 insertions(+), 0 deletions(-) diff --git a/enrol/database/lib.php b/enrol/database/lib.php index 4ae2cfb..4d07a06 100644 --- a/enrol/database/lib.php +++ b/enrol/database/lib.php @@ -327,6 +327,7 @@ class enrol_database_plugin extends enrol_plugin { $localcoursefield = $this->get_config('localcoursefield'); $unenrolaction = $this->get_config('unenrolaction'); + $unenrolscope = $this->get_config('unenrolscope'); $defaultrole = $this->get_config('defaultrole'); // Create roles mapping. @@ -399,6 +400,10 @@ class enrol_database_plugin extends enrol_plugin { if (empty($course->mapping)) { continue; } + if ($unenrolscope == ENROL_EXT_REMOVED_TABLE and !isset($externalcourses[$course->mapping])) { + // course not synced because not in external table + continue; + } $existing[$course->mapping] = $course; unset($externalcourses[$course->mapping]); } diff --git a/enrol/database/settings.php b/enrol/database/settings.php index 4682f2e..61fc486 100644 --- a/enrol/database/settings.php +++ b/enrol/database/settings.php @@ -93,6 +93,9 @@ if ($ADMIN->fulltree) { ENROL_EXT_REMOVED_SUSPENDNOROLES => get_string('extremovedsuspendnoroles', 'enrol')); $settings->add(new admin_setting_configselect('enrol_database/unenrolaction', get_string('extremovedaction', 'enrol'), get_string('extremovedaction_help', 'enrol'), ENROL_EXT_REMOVED_UNENROL, $options)); + $options = array(ENROL_EXT_REMOVED_ALL => get_string('extremovedall', 'enrol'), + ENROL_EXT_REMOVED_TABLE => get_string('extremovedtable', 'enrol')); + $settings->add(new admin_setting_configselect('enrol_database/unenrolscope', get_string('extremovedscope', 'enrol'), get_string('extremovedscope_help', 'enrol'), ENROL_EXT_REMOVED_ALL, $options)); $settings->add(new admin_setting_heading('enrol_database_newcoursesheader', get_string('settingsheadernewcourses', 'enrol_database'), '')); diff --git a/lang/en/enrol.php b/lang/en/enrol.php index 9c1621c..ad5e47f 100644 --- a/lang/en/enrol.php +++ b/lang/en/enrol.php @@ -114,7 +114,11 @@ $string['usersearch'] = 'Search '; $string['withselectedusers'] = 'With selected users'; $string['extremovedaction'] = 'External unenrol action'; $string['extremovedaction_help'] = 'Select action to carry out when user enrolment disappears from external enrolment source. Please note that some user data and settings are purged from course during course unenrolment.'; +$string['extremovedall'] = 'Unenrol for all courses'; $string['extremovedsuspend'] = 'Disable course enrolment'; $string['extremovedsuspendnoroles'] = 'Disable course enrolment and remove roles'; $string['extremovedkeep'] = 'Keep user enrolled'; +$string['extremovedscope'] = 'Unenrolment action scope'; +$string['extremovedscope_help'] = 'Define to which courses unenrol action should be applied'; +$string['extremovedtable'] = 'Unenrol for courses in external table only'; $string['extremovedunenrol'] = 'Unenrol user from course'; diff --git a/lib/enrollib.php b/lib/enrollib.php index c731f5d..a379c2f 100644 --- a/lib/enrollib.php +++ b/lib/enrollib.php @@ -67,6 +67,9 @@ define('ENROL_EXT_REMOVED_SUSPEND', 2); * */ define('ENROL_EXT_REMOVED_SUSPENDNOROLES', 3); +define('ENROL_EXT_REMOVED_ALL', 0); +define('ENROL_EXT_REMOVED_TABLE', 1); + /** * Returns instances of enrol plugins * @param bool $enabled return enabled only -- 1.7.4.1