Example #1
0
 public function test_grouping_updated_event_does_not_require_names()
 {
     global $DB;
     $this->resetAfterTest();
     $course = $this->getDataGenerator()->create_course();
     $grouping = $this->getDataGenerator()->create_grouping(array('courseid' => $course->id));
     $sink = $this->redirectEvents();
     $data = new stdClass();
     $data->id = $grouping->id;
     $data->courseid = $course->id;
     $this->setCurrentTimeStart();
     groups_update_grouping($data);
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     $this->assertInstanceOf('\\core\\event\\grouping_updated', $event);
     // Get the timemodified from DB for comparison with snapshot.
     $data->timemodified = $DB->get_field('groupings', 'timemodified', array('id' => $grouping->id));
     $this->assertTimeCurrent($data->timemodified);
     // Following fields were not updated so the snapshot should have them the same as in original group.
     $data->description = $grouping->description;
     $data->descriptionformat = $grouping->descriptionformat;
     $data->configdata = $grouping->configdata;
     $data->idnumber = $grouping->idnumber;
     $data->name = $grouping->name;
     $data->timecreated = $grouping->timecreated;
     // Assert legacy event data.
     $this->assertEventLegacyData($data, $event);
     $this->assertSame('groups_grouping_updated', $event->get_legacy_eventname());
     $this->assertEquals(context_course::instance($course->id), $event->get_context());
     $this->assertEquals($grouping->id, $event->objectid);
     $url = new moodle_url('/group/grouping.php', array('id' => $event->objectid));
     $this->assertEquals($url, $event->get_url());
 }
Example #2
0
}
if ($editform->is_cancelled()) {
    redirect(groups_home_url($courseid, false, $id, false));
} elseif ($data = $editform->get_data()) {
    $success = true;
    if (empty($grouping)) {
        // New grouping
        if (!($id = groups_create_grouping($course->id, $data))) {
            print_error('erroreditgrouping');
        } else {
            $success = (bool) $id;
            $data->id = $id;
        }
    } else {
        // Updating grouping
        if (!groups_update_grouping($data, $course->id)) {
            print_error('groupingnotupdated');
        }
    }
    if ($success) {
        redirect(groups_home_url($courseid, false, $id, false));
    } else {
        print_error('erroreditgrouping', 'group', groups_home_url($courseid));
    }
} else {
    // Prepare and output form
    $strgroups = get_string('groups');
    $strparticipants = get_string('participants');
    if ($id) {
        $strheading = get_string('editgroupingsettings', 'group');
    } else {
 /**
  * Update groupings
  *
  * @param array $groupings array of grouping description arrays (with keys groupname and courseid)
  * @return array of newly updated groupings
  * @since Moodle 2.3
  */
 public static function update_groupings($groupings)
 {
     global $CFG, $DB;
     require_once "{$CFG->dirroot}/group/lib.php";
     $params = self::validate_parameters(self::update_groupings_parameters(), array('groupings' => $groupings));
     $transaction = $DB->start_delegated_transaction();
     foreach ($params['groupings'] as $grouping) {
         $grouping = (object) $grouping;
         if (trim($grouping->name) == '') {
             throw new invalid_parameter_exception('Invalid grouping name');
         }
         if (!($currentgrouping = $DB->get_record('groupings', array('id' => $grouping->id)))) {
             throw new invalid_parameter_exception("Grouping {$grouping->id} does not exist in the course");
         }
         // Check if the new modified grouping name already exists in the course.
         if ($grouping->name != $currentgrouping->name and $DB->count_records('groupings', array('courseid' => $currentgrouping->courseid, 'name' => $grouping->name))) {
             throw new invalid_parameter_exception('A different grouping with the same name already exists in the course');
         }
         $grouping->courseid = $currentgrouping->courseid;
         // Now security checks.
         $context = context_course::instance($grouping->courseid);
         try {
             self::validate_context($context);
         } catch (Exception $e) {
             $exceptionparam = new stdClass();
             $exceptionparam->message = $e->getMessage();
             $exceptionparam->courseid = $grouping->courseid;
             throw new moodle_exception('errorcoursecontextnotvalid', 'webservice', '', $exceptionparam);
         }
         require_capability('moodle/course:managegroups', $context);
         // We must force allways FORMAT_HTML.
         $grouping->descriptionformat = external_validate_format($grouping->descriptionformat);
         // Finally update the grouping.
         groups_update_grouping($grouping);
     }
     $transaction->allow_commit();
     return null;
 }
function blended_update_group($courseid, $teamname, $mem, $groupid, $ya)
{
    global $DB;
    $data = new object();
    $data->courseid = $courseid;
    $data->name = $teamname;
    $data->description_editor['text'] = ' ';
    $data->description_editor['format'] = 1;
    $data->id = $groupid;
    groups_update_group($data);
    $oldmems = $DB->get_records('groups_members', array('groupid' => $groupid));
    if ($ya == null) {
        foreach ($oldmems as $oldmem) {
            groups_remove_member($groupid, $oldmem->userid);
        }
        $us = $DB->get_records('user');
        for ($y = 0; $y < count($mem); $y++) {
            $use = array();
            foreach ($us as $f => $u) {
                $use[$f] = blended_clean_idnumber($u->idnumber);
                if ($use[$f] == $mem[$y]) {
                    groups_add_member($groupid, $u->id);
                }
            }
        }
    } else {
        if ($ya == true) {
            $memid = $DB->get_records('user');
            foreach ($memid as $mid) {
                if ($mem == substr($mid->idnumber, 0, 8)) {
                    groups_add_member($groupid, $mid->id);
                    $DB->insert_record_raw('blended_member', array('userid' => $mid->id, 'id_member' => $mem, 'id_team' => $groupid, 'leader' => 0));
                    break;
                }
            }
        }
    }
    groups_update_grouping($data);
}
Example #5
0
} else {
    $grouping = file_prepare_standard_editor($grouping, 'description', $editoroptions, $context, 'grouping', 'description', null);
}
/// First create the form
$editform = new grouping_form(null, compact('editoroptions'));
$editform->set_data($grouping);
if ($editform->is_cancelled()) {
    redirect($returnurl);
} elseif ($data = $editform->get_data()) {
    $success = true;
    if (!has_capability('moodle/course:changeidnumber', $context)) {
        // Remove the idnumber if the user doesn't have permission to modify it
        unset($data->idnumber);
    }
    if ($data->id) {
        groups_update_grouping($data, $editoroptions);
    } else {
        groups_create_grouping($data, $editoroptions);
    }
    redirect($returnurl);
}
$strgroupings = get_string('groupings', 'group');
$strparticipants = get_string('participants');
if ($id) {
    $strheading = get_string('editgroupingsettings', 'group');
} else {
    $strheading = get_string('creategrouping', 'group');
}
$PAGE->navbar->add($strparticipants, new moodle_url('/user/index.php', array('id' => $courseid)));
$PAGE->navbar->add($strgroupings, new moodle_url('/group/groupings.php', array('id' => $courseid)));
$PAGE->navbar->add($strheading);
Example #6
0
                redirect($returnurl);
            } else {
                print_error('erroreditgrouping', 'group', $returnurl);
            }
        }
    }
}
/// First create the form
$editform = new grouping_form();
$editform->set_data($grouping);
if ($editform->is_cancelled()) {
    redirect($returnurl);
} elseif ($data = $editform->get_data()) {
    $success = true;
    if ($data->id) {
        if (!groups_update_grouping($data)) {
            error('Error updating grouping');
        }
    } else {
        if (!groups_create_grouping($data)) {
            error('Error creating grouping');
        }
    }
    redirect($returnurl);
}
$strgroupings = get_string('groupings', 'group');
$strparticipants = get_string('participants');
if ($id) {
    $strheading = get_string('editgroupingsettings', 'group');
} else {
    $strheading = get_string('creategrouping', 'group');
Example #7
0
                redirect($returnurl);
            } else {
                print_error('erroreditgrouping', 'group', $returnurl);
            }
        }
    }
}
/// First create the form
$editform = new grouping_form();
$editform->set_data($grouping);
if ($editform->is_cancelled()) {
    redirect($returnurl);
} elseif ($data = $editform->get_data()) {
    $success = true;
    if ($data->id) {
        groups_update_grouping($data);
    } else {
        groups_create_grouping($data);
    }
    redirect($returnurl);
}
$strgroupings = get_string('groupings', 'group');
$strparticipants = get_string('participants');
if ($id) {
    $strheading = get_string('editgroupingsettings', 'group');
} else {
    $strheading = get_string('creategrouping', 'group');
}
$navlinks = array(array('name' => $strparticipants, 'link' => $CFG->wwwroot . '/user/index.php?id=' . $courseid, 'type' => 'misc'), array('name' => $strgroupings, 'link' => $CFG->wwwroot . '/group/groupings.php?id=' . $courseid, 'type' => 'misc'), array('name' => $strheading, 'link' => '', 'type' => 'misc'));
$navigation = build_navigation($navlinks);
/// Print header
Example #8
0
 public function test_grouping_updated_event()
 {
     global $DB;
     $this->resetAfterTest();
     $course = $this->getDataGenerator()->create_course();
     $grouping = $this->getDataGenerator()->create_grouping(array('courseid' => $course->id));
     $sink = $this->redirectEvents();
     $data = new stdClass();
     $data->id = $grouping->id;
     $data->courseid = $course->id;
     $data->name = 'Backend team';
     $this->setCurrentTimeStart();
     groups_update_grouping($data);
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     $this->assertInstanceOf('\\core\\event\\grouping_updated', $event);
     // 'Repairing' the object for comparison because of type of variables being wrong.
     $data->id = (int) $grouping->id;
     $data->timemodified = $DB->get_field('groupings', 'timemodified', array('id' => $grouping->id));
     $this->assertTimeCurrent($data->timemodified);
     $this->assertEventLegacyData($data, $event);
     $this->assertSame('groups_grouping_updated', $event->get_legacy_eventname());
     $this->assertEquals(context_course::instance($course->id), $event->get_context());
     $this->assertEquals($grouping->id, $event->objectid);
 }