<?php
namespace local_treestudyplan\task;
require_once($CFG->dirroot.'/course/externallib.php');
use local_treestudyplan\studyplan;
use local_treestudyplan\cascadecohortsync;
use local_treestudyplan\cascadeusersync;

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")){
            \mtrace("Automatic csync cascading enabled");
            $studyplans = studyplan::find_all();

            foreach($studyplans as $studyplan) {
                // 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();
                    if(get_config("local_treestudyplan","csync_users")){
                        $userenroller = new cascadeusersync($studyplan);
                        $userenroller->sync();
                    }
                    $studyplan->clear_csync_changed();

                } 
            }
            \mtrace("Task done");
        } else {
            \mtrace("Automatic csync cascading disabled");
        }
    }
}