diff --git a/enrol/ldap/classes/task/sync_enrolments.php b/enrol/ldap/classes/task/sync_enrolments.php new file mode 100644 index 00000000000..e34b72a0d46 --- /dev/null +++ b/enrol/ldap/classes/task/sync_enrolments.php @@ -0,0 +1,66 @@ +. + +/** + * Sync enrolments task + * @package enrol_ldap + * @author Guy Thomas + * @copyright Copyright (c) 2017 Blackboard Inc. + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace enrol_ldap\task; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Class sync_enrolments + * @package enrol_ldap + * @author Guy Thomas + * @copyright Copyright (c) 2017 Blackboard Inc. + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class sync_enrolments extends \core\task\scheduled_task { + + /** + * Name for this task. + * + * @return string + */ + public function get_name() { + return get_string('syncenrolmentstask', 'enrol_ldap'); + } + + /** + * Run task for synchronising users. + */ + public function execute() { + + if (!enrol_is_enabled('ldap')) { + mtrace(get_string('pluginnotenabled', 'enrol_ldap')); + exit(0); // Note, exit with success code, this is not an error - it's just disabled. + } + + /** @var enrol_ldap_plugin $enrol */ + $enrol = enrol_get_plugin('ldap'); + + $trace = new \text_progress_trace(); + + // Update enrolments -- these handlers should autocreate courses if required. + $enrol->sync_enrolments($trace); + } + +} diff --git a/enrol/ldap/db/tasks.php b/enrol/ldap/db/tasks.php new file mode 100644 index 00000000000..c1c45771c9c --- /dev/null +++ b/enrol/ldap/db/tasks.php @@ -0,0 +1,39 @@ +. + +/** + * Task definition for enrol_ldap. + * @author Guy Thomas + * @copyright Copyright (c) 2017 Blackboard Inc. + * @package enrol_ldap + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +$tasks = array( + array( + 'classname' => '\enrol_ldap\task\sync_enrolments', + 'blocking' => 0, + 'minute' => 'R', + 'hour' => 'R', + 'day' => '*', + 'month' => '*', + 'dayofweek' => '*', + 'disabled' => 1 + ) +); + diff --git a/enrol/ldap/lang/en/enrol_ldap.php b/enrol/ldap/lang/en/enrol_ldap.php index 5d8b877b93f..6a5b1c515a2 100644 --- a/enrol/ldap/lang/en/enrol_ldap.php +++ b/enrol/ldap/lang/en/enrol_ldap.php @@ -109,6 +109,7 @@ $string['role_mapping_context'] = 'LDAP contexts for {$a}'; $string['role_mapping_key'] = 'Map roles from LDAP '; $string['roles'] = 'Role mapping'; $string['server_settings'] = 'LDAP server settings'; +$string['syncenrolmentstask'] = 'Synchronise enrolments task'; $string['synccourserole'] = "== Synching course '{\$a->idnumber}' for role '{\$a->role_shortname}'\n"; $string['template'] = 'Optional: auto-created courses can copy their settings from a template course'; $string['template_key'] = 'Template'; diff --git a/enrol/ldap/version.php b/enrol/ldap/version.php index 927c6f346e4..e063bb70f68 100644 --- a/enrol/ldap/version.php +++ b/enrol/ldap/version.php @@ -25,6 +25,6 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2016120500; // The current plugin version (Date: YYYYMMDDXX) +$plugin->version = 2016120501; // The current plugin version (Date: YYYYMMDDXX) $plugin->requires = 2016112900; // Requires this Moodle version $plugin->component = 'enrol_ldap'; // Full name of the plugin (used for diagnostics)