Example #1
0
 /**
  * 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);
 }
Example #2
0
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)));
    }
Example #3
0
 /**
  * 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)) {