2 # Delete multiple groups
4 require './user-lib.pl';
6 %glist = map { $_->{'group'}, $_ } &list_groups();
7 &error_setup($text{'gmass_err'});
8 foreach $name (split(/\0/, $in{'gd'})) {
9 $group = $glist{$name};
11 &can_edit_group(\%access, $group) ||
12 &error(&text('gmass_egroup', $name));
14 $delete_sys = $group if ($group->{'gid'} < 10 &&
15 (!$delete_sys || $user->{'gid'} < $delete_sys->{'gid'}));
18 @dlist || &error($text{'gmass_enone'});
19 $access{'gdelete'} || &error($text{'gdel_egroup'});
21 &ui_print_header(undef, $text{'gmass_title'}, "");
23 # Check for deletion of system group
24 if (!$config{'delete_root'} && $delete_sys) {
25 print "<p> <b>",&text('gmass_eroot',
26 $delete_root->{'group'}),"</b> <p>\n";
27 &ui_print_footer("", $text{'index_return'});
31 if ($in{'confirmed'}) {
32 foreach $group (@dlist) {
34 print "<b>",&text('gmass_doing', $group->{'group'}),"</b><br>\n";
37 # Delete from other modules
39 print "$text{'gdel_other'}<br>\n";
40 local $error_must_die = 1;
41 eval { &other_modules("useradmin_delete_group", $group); };
43 print &text('udel_failed', $@),"<p>\n";
46 print "$text{'gdel_done'}<p>\n";
50 # Delete from group file
52 print "$text{'gdel_group'}<br>\n";
53 &set_group_envs($group, 'DELETE_GROUP');
54 $merr = &making_changes();
55 &error(&text('usave_emaking', "<tt>$merr</tt>")) if (defined($merr));
57 &delete_group($group);
60 print "$text{'gdel_done'}<p>\n";
65 &webmin_log("delete", "group", $group->{'group'}, $group);
67 &ui_print_footer("", $text{'index_return'});
70 foreach $group (@dlist) {
71 # check if this is anyone's primary group
72 foreach $u (&list_users()) {
73 if ($u->{'gid'} == $group->{'gid'}) {
74 print "<b>",&text('gmass_eprimary',
75 $group->{'group'}, $u->{'user'}),
77 &ui_print_footer("", $text{'index_return'});
83 # Ask if the user is sure
84 print &ui_confirmation_form("mass_delete_group.cgi",
85 &text('gmass_sure', scalar(@dlist)),
87 map { [ "gd", $_->{'group'} ] } @dlist ],
88 [ [ undef, $text{'gdel_del'} ] ],
89 &ui_checkbox("others", 1, $text{'gdel_dothers'},
90 $config{'default_other'}),
93 &ui_print_footer("", $text{'index_return'});