Handle hostnames with upper-case letters
[webmin.git] / ldap-useradmin / mass_delete_group.cgi
1 #!/usr/local/bin/perl
2 # Delete multiple groups
3
4 require './ldap-useradmin-lib.pl';
5 &ReadParse();
6 %glist = map { $_->{'group'}, $_ } &list_groups();
7 &error_setup($text{'gmass_err'});
8 foreach $name (split(/\0/, $in{'gd'})) {
9         $group = $glist{$name};
10         if ($group) {
11                 &can_edit_group(\%access, $group) ||
12                         &error(&text('gmass_egroup', $name));
13                 push(@dlist, $group);
14                 }
15         }
16 @dlist || &error($text{'gmass_enone'});
17
18 &ui_print_header(undef, $text{'gmass_title'}, "");
19
20 if ($in{'confirmed'}) {
21         foreach $group (@dlist) {
22                 # Show username
23                 print "<b>",&text('gmass_doing', $group->{'group'}),
24                       "</b><br>\n";
25                 print "<ul>\n";
26
27                 # Delete from other modules
28                 if ($in{'others'}) {
29                         print "$text{'gdel_other'}<br>\n";
30                         local $error_must_die = 1;
31                         eval { &other_modules("useradmin_delete_group",
32                                               $group); };
33                         if ($@) {
34                                 print &text('udel_failed', $@),"<p>\n";
35                                 }
36                         else {
37                                 print "$text{'gdel_done'}<p>\n";
38                                 }
39                         }
40
41                 # Delete from group file
42                 &lock_user_files();
43                 print "$text{'gdel_group'}<br>\n";
44                 &set_group_envs($group, 'DELETE_GROUP');
45                 $merr = &making_changes();
46                 &error(&text('usave_emaking', "<tt>$merr</tt>"))
47                         if (defined($merr));
48
49                 &delete_group($group);
50                 &unlock_user_files();
51                 &made_changes();
52                 print "$text{'gdel_done'}<p>\n";
53
54                 print "</ul>\n";
55                 }
56
57         &webmin_log("delete", "group", $group->{'group'}, $group);
58
59         &ui_print_footer("", $text{'index_return'});
60         }
61 else {
62         foreach $group (@dlist) {
63                 # check if this is anyone's primary group
64                 foreach $u (&list_users()) {
65                         if ($u->{'gid'} == $group->{'gid'}) {
66                                 print "<b>",&text('gmass_eprimary',
67                                         $group->{'group'}, $u->{'user'}),
68                                         "</b> <p>\n";
69                                 &ui_print_footer("", $text{'index_return'});
70                                 exit;
71                                 }
72                         }
73                 }
74
75         # Ask if the user is sure
76         print &ui_confirmation_form(
77                 "mass_delete_group.cgi",
78                 &text('gmass_sure', scalar(@dlist)),
79                 [ map { [ "gd", $_->{'group'} ] } @dlist ],
80                 [ [ "confirmed", $text{'gdel_del'} ] ],
81                 &ui_checkbox("others", 1, $text{'gdel_dothers'},
82                              $mconfig{'default_other'}),
83                 );
84
85         &ui_print_footer("", $text{'index_return'});
86         }
87