From: nicolasconnault Date: Tue, 3 Apr 2007 06:41:58 +0000 (+0000) Subject: MDL-9167 and MDL-9113 both solved X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=e4596a4a1caf6e8d4e353d67b22be86ebeae71b2;p=moodle.git MDL-9167 and MDL-9113 both solved --- diff --git a/group/db/dbbasicgrouplib.php b/group/db/dbbasicgrouplib.php index 67dc17ac71..c8ffb1e4f3 100644 --- a/group/db/dbbasicgrouplib.php +++ b/group/db/dbbasicgrouplib.php @@ -210,6 +210,24 @@ function groups_db_group_matches($courseid, $grp_name, $grp_description) { return $group; } +/** + * Determine if a course ID, and group name match a group in the database. + * @return mixed A group-like object with $group->id, or false. + */ +function groups_db_group_name_exists($courseid, $grp_name) { + global $CFG; + $sql = "SELECT g.id, g.name + FROM {$CFG->prefix}groups g + INNER JOIN {$CFG->prefix}groups_courses_groups cg ON g.id = cg.groupid + WHERE g.name = '$grp_name' + AND cg.courseid = '$courseid'"; + $records = get_records_sql($sql); + $group = false; + if ($records) { + $group = current($records); + } + return $group; +} /** * Determines if a specified user is a member of a specified group @@ -517,4 +535,4 @@ function groups_members_where_sql($groupid, $userid_sql=false) { return $sql; } -?> \ No newline at end of file +?> diff --git a/group/edit.php b/group/edit.php index 6c4c5da70e..cacbb5bf78 100755 --- a/group/edit.php +++ b/group/edit.php @@ -60,20 +60,28 @@ if (!empty($group)) { $editform->set_data($group); } +// Process delete action +if ($delete) { + if (groups_delete_group($id)) { + redirect(groups_home_url($course->id, null, $groupingid, false)); + } else { + print_error('erroreditgroup', 'group', groups_home_url($course->id)); + } +} + +$error = null; + if ($editform->is_cancelled()) { redirect(groups_home_url($courseid, $id, $groupingid, false)); } elseif ($data = $editform->get_data()) { $success = true; - // preprocess data - if ($delete) { - if ($success = groups_delete_group($id)) { - redirect(groups_home_url($course->id, null, $groupingid, false)); - } else { - print_error('erroreditgroup', 'group', groups_home_url($course->id)); - } - } elseif (empty($group)) { // New group - if (!$id = groups_create_group($course->id, $data)) { + if (empty($group)) { // New group + // First check if this group name doesn't already exist + if (groups_group_name_exists($courseid, $data->name)) { + $error = get_string('groupnameexists', 'group', $data->name); + $success = false; + } elseif (!$id = groups_create_group($course->id, $data)) { print_error('erroreditgroup'); } else { $success = (bool)$id; @@ -86,7 +94,11 @@ if ($editform->is_cancelled()) { $success = $success && groups_remove_group_from_grouping($id, $groupingid); $success = $success && groups_add_group_to_grouping($id, $newgrouping); } else { // Updating group - if (!groups_update_group($data, $course->id)) { + $group = groups_get_group($data->id); + if (groups_group_name_exists($courseid, $data->name) && $group->name != $data->name) { + $error = get_string('groupnameexists', 'group', $data->name); + $success = false; + } elseif (!groups_update_group($data, $course->id)) { print_error('groupnotupdated'); } } @@ -101,32 +113,36 @@ if ($editform->is_cancelled()) { if ($success) { redirect(groups_home_url($course->id, $id, $groupingid, false)); - } else { + } elseif (empty($error)) { print_error('erroreditgroup', 'group', groups_home_url($course->id)); } -} else { // Prepare and output form - $strgroups = get_string('groups'); - $strparticipants = get_string('participants'); - - if ($id) { - $strheading = get_string('editgroupsettings', 'group'); - } else { - $strheading = get_string('creategroup', 'group'); - } - print_header("$course->shortname: ". $strheading, - $course->fullname, - "wwwroot/course/view.php?id=$courseid\">$course->shortname ". - "-> wwwroot/user/index.php?id=$courseid\">$strparticipants ". - '-> $strgroups". - "-> $strheading", '', '', true, '', user_login_string($course, $USER)); - - print_heading($strheading); - echo '
'; - if ($id) { - print_group_picture($group, $course->id); - } - echo '
'; - $editform->display(); - print_footer($course); +} +$strgroups = get_string('groups'); +$strparticipants = get_string('participants'); + +if ($id) { + $strheading = get_string('editgroupsettings', 'group'); +} else { + $strheading = get_string('creategroup', 'group'); +} +print_header("$course->shortname: ". $strheading, + $course->fullname, + "wwwroot/course/view.php?id=$courseid\">$course->shortname ". + "-> wwwroot/user/index.php?id=$courseid\">$strparticipants ". + '-> $strgroups". + "-> $strheading", '', '', true, '', user_login_string($course, $USER)); + +print_heading($strheading); + +if ($error) { + notify($error); +} + +echo '
'; +if ($id) { + print_group_picture($group, $course->id); } +echo '
'; +$editform->display(); +print_footer($course); ?> diff --git a/group/grouping.php b/group/grouping.php index fd00673b7a..4bdcd8bb63 100644 --- a/group/grouping.php +++ b/group/grouping.php @@ -46,19 +46,21 @@ if (!empty($grouping)) { $editform->set_data($grouping); } +// preprocess data +if ($delete) { + if (groups_delete_grouping($id)) { + redirect(groups_home_url($course->id)); + } else { + print_error('erroreditgrouping', 'group', groups_home_url($course->id)); + } +} + if ($editform->is_cancelled()) { redirect(groups_home_url($courseid, false, $id, false)); } elseif ($data = $editform->get_data()) { $success = true; - // preprocess data - if ($delete) { - if ($success = groups_delete_grouping($id)) { - redirect(groups_home_url($course->id)); - } else { - print_error('erroreditgrouping', 'group', groups_home_url($course->id)); - } - } elseif (empty($grouping)) { // New grouping + if (empty($grouping)) { // New grouping if (!$id = groups_create_grouping($course->id, $data)) { print_error('erroreditgrouping'); } else { diff --git a/group/index.php b/group/index.php index 8918f30cf7..58a5d76e87 100644 --- a/group/index.php +++ b/group/index.php @@ -27,7 +27,6 @@ $groupid = optional_param('group', false, PARAM_INT); $userid = optional_param('user', false, PARAM_INT); $action = groups_param_action(); - if ($groupid) { $groupingsforgroup = groups_get_groupings_for_group($groupid); if ($groupingsforgroup) { @@ -176,7 +175,7 @@ if ($success) { $showcreategroupform_disabled = $disabled; } - if ($groupingid == -1) { + if ($groupingid == -1 && groups_count_groups_in_grouping(GROUP_NOT_IN_GROUPING, $courseid) > 0) { $printerfriendly_disabled = ''; } @@ -212,6 +211,8 @@ if ($success) { //NOTE, only show the pseudo-grouping if it has groups. $groupingids[] = GROUP_NOT_IN_GROUPING; } + + $sel_groupingid = -1; if ($groupingids) { // Put the groupings into a hash and sort them @@ -231,7 +232,10 @@ if ($success) { echo "\n"; $count++; } + } else { + echo ''; } + echo ''."\n"; diff --git a/group/lib/basicgrouplib.php b/group/lib/basicgrouplib.php index 1bbd4085f6..d9874eb3e3 100644 --- a/group/lib/basicgrouplib.php +++ b/group/lib/basicgrouplib.php @@ -206,6 +206,13 @@ function groups_group_matches($courseid, $grp_name, $grp_description) { return groups_db_group_matches($courseid, $grp_name, $grp_description); } +/** + * Determine if a course ID, and group name match a group in the database. + * @return mixed A group-like object with $group->id, or false. + */ +function groups_group_name_exists($courseid, $grp_name) { + return groups_db_group_name_exists($courseid, $grp_name); +} /** * Determines if the user is a member of the given group. diff --git a/lang/en_utf8/group.php b/lang/en_utf8/group.php index d7e8da033f..db4dd1d3ac 100644 --- a/lang/en_utf8/group.php +++ b/lang/en_utf8/group.php @@ -70,6 +70,7 @@ $string['creategroup'] = 'Create group'; $string['createorphangroup'] = 'Create orphan group'; $string['groupname'] = 'Group name'; +$string['groupnameexists'] = 'The group name \'$a\' already exists in this course, please choose another one.'; $string['defaultgroupname'] = 'Group'; $string['groupdescription'] = 'Group description'; $string['enrolmentkey'] = 'Enrolment key';