/** * Test that a new group with the name of the course is created. */ public function test_enrol_meta_create_new_group() { global $DB; $this->resetAfterTest(); // Create two courses. $course = $this->getDataGenerator()->create_course(array('fullname' => 'Mathematics')); $course2 = $this->getDataGenerator()->create_course(array('fullname' => 'Physics')); $metacourse = $this->getDataGenerator()->create_course(array('fullname' => 'All sciences')); // Run the function. $groupid = enrol_meta_create_new_group($metacourse->id, $course->id); // Check the results. $group = $DB->get_record('groups', array('id' => $groupid)); // The group name should match the course name. $this->assertEquals('Mathematics course', $group->name); // Group course id should match the course id. $this->assertEquals($metacourse->id, $group->courseid); // Create a group that will have the same name as the course. $groupdata = new stdClass(); $groupdata->courseid = $metacourse->id; $groupdata->name = 'Physics course'; groups_create_group($groupdata); // Create a group for the course 2 in metacourse. $groupid = enrol_meta_create_new_group($metacourse->id, $course2->id); $groupinfo = $DB->get_record('groups', array('id' => $groupid)); // Check that the group name has been changed. $this->assertEquals('Physics course (2)', $groupinfo->name); // Create a group for the course 2 in metacourse. $groupid = enrol_meta_create_new_group($metacourse->id, $course2->id); $groupinfo = $DB->get_record('groups', array('id' => $groupid)); // Check that the group name has been changed. $this->assertEquals('Physics course (3)', $groupinfo->name); }
if ($instanceid) { require_capability('enrol/meta:config', $context); $instance = $DB->get_record('enrol', array('courseid' => $course->id, 'enrol' => 'meta', 'id' => $instanceid), '*', MUST_EXIST); } else { if (!$enrol->get_newinstance_link($course->id)) { redirect(new moodle_url('/enrol/instances.php', array('id' => $course->id))); } $instance = null; } $mform = new enrol_meta_addinstance_form(null, array('course' => $course, 'instance' => $instance)); if ($mform->is_cancelled()) { redirect(new moodle_url('/enrol/instances.php', array('id' => $course->id))); } else { if ($data = $mform->get_data()) { if (!empty($data->customint2) && $data->customint2 == ENROL_META_CREATE_GROUP) { $data->customint2 = enrol_meta_create_new_group($course->id, $data->link); } if ($instance) { if ($data->customint2 != $instance->customint2) { $DB->update_record('enrol', array('id' => $instance->id, 'customint2' => $data->customint2)); enrol_meta_sync($course->id); } } else { $eid = $enrol->add_instance($course, array('customint1' => $data->link, 'customint2' => $data->customint2)); enrol_meta_sync($course->id); if (!empty($data->submitbuttonnext)) { redirect(new moodle_url('/enrol/meta/addinstance.php', array('id' => $course->id, 'message' => 'added'))); } } redirect(new moodle_url('/enrol/instances.php', array('id' => $course->id))); }
/** * Update instance of enrol plugin. * @param stdClass $instance * @param stdClass $data modified instance fields * @return boolean */ public function update_instance($instance, $data) { global $CFG; require_once "{$CFG->dirroot}/enrol/meta/locallib.php"; if (!empty($data->customint2) && $data->customint2 == ENROL_META_CREATE_GROUP) { $context = context_course::instance($instance->courseid); require_capability('moodle/course:managegroups', $context); $groupid = enrol_meta_create_new_group($instance->courseid, $data->customint1); $data->customint2 = $groupid; } $result = parent::update_instance($instance, $data); enrol_meta_sync($instance->courseid); return $result; }
$instance = $DB->get_record('enrol', array('courseid' => $course->id, 'enrol' => 'metaplus', 'id' => $instanceid), '*', MUST_EXIST); } else { if (!$enrol->get_newinstance_link($course->id)) { redirect($returnurl); } $instance = null; } $mform = new enrol_metaplus_addinstance_form(null, array('course' => $course, 'instance' => $instance)); if ($mform->is_cancelled()) { redirect($returnurl); } if ($data = $mform->get_data()) { // Go through every link and grab a group. $links = array(); foreach ($data->link as $c) { $links[$c] = enrol_meta_create_new_group($course->id, $c); } $roleexclusions = implode(',', $data->roleexclusions); if ($instance) { $records = $DB->get_records('enrol_metaplus', array('enrolid' => $instance->id)); // Removals. $courseids = array(); foreach ($records as $record) { if (!isset($links[$record->courseid])) { $DB->delete_record('enrol_metaplus', array($record->id)); } $courseids[] = $record->courseid; } // Additions. foreach ($links as $c => $group) { if (!in_array($c, $courseids)) {