2023-06-26 11:40:49 +02:00
|
|
|
<?php
|
|
|
|
namespace local_treestudyplan\task;
|
|
|
|
require_once($CFG->dirroot.'/course/externallib.php');
|
|
|
|
use local_treestudyplan\studyplan;
|
2023-06-26 21:44:31 +02:00
|
|
|
use local_treestudyplan\cascadecohortsync;
|
2023-06-30 12:14:11 +02:00
|
|
|
use local_treestudyplan\cascadeusersync;
|
2023-06-26 11:40:49 +02:00
|
|
|
|
|
|
|
class autocohortsync extends \core\task\scheduled_task {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the task's name as shown in admin screens.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function get_name() {
|
|
|
|
return get_string('autocohortsync_name', 'local_treestudyplan');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Execute the task.
|
|
|
|
*/
|
|
|
|
public function execute() {
|
|
|
|
if(get_config("local_treestudyplan","csync_enable")){
|
2023-06-27 07:33:27 +02:00
|
|
|
\mtrace("Automatic csync cascading enabled");
|
2023-06-26 11:40:49 +02:00
|
|
|
$studyplans = studyplan::find_all();
|
|
|
|
|
|
|
|
foreach($studyplans as $studyplan) {
|
2023-06-27 07:33:27 +02:00
|
|
|
// Only process studyplans that have been marked for change because
|
|
|
|
// a cohort change has occurred or a course has been added....
|
|
|
|
if($studyplan->has_csync_changed()){
|
|
|
|
\mtrace("Studyplan {$studyplan->shortname()} needs processing");
|
|
|
|
$enroller = new cascadecohortsync($studyplan);
|
|
|
|
$enroller->sync();
|
2023-06-30 12:14:11 +02:00
|
|
|
if(get_config("local_treestudyplan","csync_users")){
|
|
|
|
$userenroller = new cascadeusersync($studyplan);
|
|
|
|
$userenroller->sync();
|
|
|
|
}
|
2023-06-27 07:33:27 +02:00
|
|
|
$studyplan->clear_csync_changed();
|
2023-06-30 12:14:11 +02:00
|
|
|
|
2023-06-27 07:33:27 +02:00
|
|
|
}
|
2023-06-26 11:40:49 +02:00
|
|
|
}
|
2023-06-27 07:33:27 +02:00
|
|
|
\mtrace("Task done");
|
|
|
|
} else {
|
|
|
|
\mtrace("Automatic csync cascading disabled");
|
2023-06-26 11:40:49 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|