MDL-45579 group: Prevent duplicate enrolment keys in course groups
This commit is contained in:
+16
-3
@@ -111,11 +111,19 @@ class group_form extends moodleform {
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($CFG->groupenrolmentkeypolicy) and $data['enrolmentkey'] != '' and $group->enrolmentkey !== $data['enrolmentkey']) {
|
||||
// enforce password policy only if changing password
|
||||
if ($data['enrolmentkey'] != '') {
|
||||
$errmsg = '';
|
||||
if (!check_password_policy($data['enrolmentkey'], $errmsg)) {
|
||||
if (!empty($CFG->groupenrolmentkeypolicy) && $group->enrolmentkey !== $data['enrolmentkey']
|
||||
&& !check_password_policy($data['enrolmentkey'], $errmsg)) {
|
||||
// Enforce password policy when the password is changed.
|
||||
$errors['enrolmentkey'] = $errmsg;
|
||||
} else {
|
||||
// Prevent twice the same enrolment key in course groups.
|
||||
$sql = "SELECT id FROM {groups} WHERE id <> :groupid AND courseid = :courseid AND enrolmentkey = :key";
|
||||
$params = array('groupid' => $data['id'], 'courseid' => $COURSE->id, 'key' => $data['enrolmentkey']);
|
||||
if ($DB->record_exists_sql($sql, $params)) {
|
||||
$errors['enrolmentkey'] = get_string('enrolmentkeyalreadyinuse', 'group');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,6 +131,11 @@ class group_form extends moodleform {
|
||||
$errors['name'] = get_string('groupnameexists', 'group', $name);
|
||||
} else if (!empty($idnumber) && groups_get_group_by_idnumber($COURSE->id, $idnumber)) {
|
||||
$errors['idnumber']= get_string('idnumbertaken');
|
||||
} else if ($data['enrolmentkey'] != '') {
|
||||
// Prevent twice the same enrolment key in course groups.
|
||||
if ($DB->record_exists('groups', array('courseid' => $COURSE->id, 'enrolmentkey' => $data['enrolmentkey']))) {
|
||||
$errors['enrolmentkey'] = get_string('enrolmentkeyalreadyinuse', 'group');
|
||||
}
|
||||
}
|
||||
|
||||
return $errors;
|
||||
|
||||
@@ -61,6 +61,7 @@ $string['enrolmentkey'] = 'Enrolment key';
|
||||
$string['enrolmentkey_help'] = 'An enrolment key enables access to the course to be restricted to only those who know the key. If a group enrolment key is specified, then not only will entering that key let the user into the course, but it will also automatically make them a member of this group.
|
||||
|
||||
Note: Group enrolment keys must be enabled in the self enrolment settings and an enrolment key for the course must also be specified.';
|
||||
$string['enrolmentkeyalreadyinuse'] = 'This enrolment key is already used for another group.';
|
||||
$string['erroraddremoveuser'] = 'Error adding/removing user {$a} to group';
|
||||
$string['erroreditgroup'] = 'Error creating/updating group {$a}';
|
||||
$string['erroreditgrouping'] = 'Error creating/updating grouping {$a}';
|
||||
|
||||
Reference in New Issue
Block a user