. /** * Meta course enrolment plugin. * * @package enrol * @subpackage meta * @copyright 2010 Petr Skoda {@link http://skodak.org} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Meta course enrolment plugin. * @author Petr Skoda * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class enrol_meta_plugin extends enrol_plugin { /** * Returns localised name of enrol instance * * @param object $instance (null is accepted too) * @return string */ public function get_instance_name($instance) { global $DB; if (empty($instance)) { $enrol = $this->get_name(); return get_string('pluginname', 'enrol_'.$enrol); } else if (empty($instance->name)) { $enrol = $this->get_name(); return get_string('pluginname', 'enrol_'.$enrol) . ' (' . format_string($DB->get_field('course', 'fullname', array('id'=>$instance->customint1))) . ')'; } else { return format_string($instance->name); } } /** * Returns link to page which may be used to add new instance of enrolment plugin in course. * @param int $courseid * @return moodle_url page url */ public function get_newinstance_link($courseid) { $context = get_context_instance(CONTEXT_COURSE, $courseid, MUST_EXIST); if (!has_capability('moodle/course:enrolconfig', $context) or !has_capability('enrol/meta:config', $context)) { return NULL; } // multiple instances supported - multiple parent courses linked return new moodle_url('/enrol/meta/addinstance.php', array('id'=>$courseid)); } /** * Called after updating/inserting course. * * @param bool $inserted true if course just inserted * @param object $course * @param object $data form data * @return void */ public function course_updated($inserted, $course, $data) { global $CFG; if (!$inserted) { // sync cohort enrols require_once("$CFG->dirroot/enrol/meta/locallib.php"); enrol_meta_sync($course->id); } else { // cohorts are never inserted automatically } } /** * Called for all enabled enrol plugins that returned true from is_cron_required(). * @return void */ public function cron() { global $CFG; // purge all roles if meta sync disabled, those can be recreated later here in cron if (!enrol_is_enabled('meta')) { role_unassign_all(array('component'=>'meta_enrol')); return; } require_once("$CFG->dirroot/enrol/meta/locallib.php"); enrol_meta_sync(); } }