public function test_get_enrolment_plugins() { $this->resetAfterTest(true); $actual = tool_uploadcourse_helper::get_enrolment_plugins(); $this->assertSame(array_keys(enrol_get_plugins(false)), array_keys($actual)); // This should be identical as cached. $secondactual = tool_uploadcourse_helper::get_enrolment_plugins(); $this->assertEquals($actual, $secondactual); }
/** * Add the enrolment data for the course. * * @param object $course course record. * @return void */ protected function process_enrolment_data($course) { global $DB; $enrolmentdata = $this->enrolmentdata; if (empty($enrolmentdata)) { return; } $enrolmentplugins = tool_uploadcourse_helper::get_enrolment_plugins(); $instances = enrol_get_instances($course->id, false); foreach ($enrolmentdata as $enrolmethod => $method) { $instance = null; foreach ($instances as $i) { if ($i->enrol == $enrolmethod) { $instance = $i; break; } } $todelete = isset($method['delete']) && $method['delete']; $todisable = isset($method['disable']) && $method['disable']; unset($method['delete']); unset($method['disable']); if (!empty($instance) && $todelete) { // Remove the enrolment method. foreach ($instances as $instance) { if ($instance->enrol == $enrolmethod) { $plugin = $enrolmentplugins[$instance->enrol]; $plugin->delete_instance($instance); break; } } } else { if (!empty($instance) && $todisable) { // Disable the enrolment. foreach ($instances as $instance) { if ($instance->enrol == $enrolmethod) { $plugin = $enrolmentplugins[$instance->enrol]; $plugin->update_status($instance, ENROL_INSTANCE_DISABLED); $enrol_updated = true; break; } } } else { $plugin = null; if (empty($instance)) { $plugin = $enrolmentplugins[$enrolmethod]; $instance = new stdClass(); $instance->id = $plugin->add_default_instance($course); $instance->roleid = $plugin->get_config('roleid'); $instance->status = ENROL_INSTANCE_ENABLED; } else { $plugin = $enrolmentplugins[$instance->enrol]; $plugin->update_status($instance, ENROL_INSTANCE_ENABLED); } // Now update values. foreach ($method as $k => $v) { $instance->{$k} = $v; } // Sort out the start, end and date. $instance->enrolstartdate = isset($method['startdate']) ? strtotime($method['startdate']) : 0; $instance->enrolenddate = isset($method['enddate']) ? strtotime($method['enddate']) : 0; // Is the enrolment period set? if (isset($method['enrolperiod']) && !empty($method['enrolperiod'])) { if (preg_match('/^\\d+$/', $method['enrolperiod'])) { $method['enrolperiod'] = (int) $method['enrolperiod']; } else { // Try and convert period to seconds. $method['enrolperiod'] = strtotime('1970-01-01 GMT + ' . $method['enrolperiod']); } $instance->enrolperiod = $method['enrolperiod']; } if ($instance->enrolstartdate > 0 && isset($method['enrolperiod'])) { $instance->enrolenddate = $instance->enrolstartdate + $method['enrolperiod']; } if ($instance->enrolenddate > 0) { $instance->enrolperiod = $instance->enrolenddate - $instance->enrolstartdate; } if ($instance->enrolenddate < $instance->enrolstartdate) { $instance->enrolenddate = $instance->enrolstartdate; } // Sort out the given role. This does not filter the roles allowed in the course. if (isset($method['role'])) { $roleids = tool_uploadcourse_helper::get_role_ids(); if (isset($roleids[$method['role']])) { $instance->roleid = $roleids[$method['role']]; } } $instance->timemodified = time(); $DB->update_record('enrol', $instance); } } } }