3 # Delete a mailing list, after asking the user if he is sure
5 require './majordomo-lib.pl';
8 ($namere = $name) =~ s/\./\\./g;
9 %access = &get_module_acl();
10 &can_edit_list(\%access, $name) || &error($text{'delete_ecannot'});
12 # find aliases and files
13 $conf = &get_config();
14 $aliases_files = &get_aliases_file();
15 &foreign_call($aliases_module, "lock_alias_files", $aliases_files)
17 @aliases = &foreign_call($aliases_module, "list_aliases", $aliases_files);
18 foreach $a (@aliases) {
19 if ($a->{'name'} eq $name && $a->{'value'} =~ /-digestify/i) {
20 &error($text{'delete_edigest'});
22 if ($a->{'name'} =~ /-digestify$/i && $a->{'value'} =~ /\s$namere\s/i) {
25 if ($a->{'name'} eq $name) {
26 foreach $v (@{$a->{'values'}}) {
28 if ($v =~ /^\|\S*wrapper\s+resend.*\s(\S+)$/);
32 @daliases = grep { $_->{'name'} =~ /^$namere$/i ||
33 $_->{'name'} eq $real_list ||
34 $_->{'name'} =~ /^$namere-(list|owner|approval|outgoing|request|archive)$/i ||
35 $_->{'name'} =~ /owner-$namere-outgoing$/i ||
36 $_->{'name'} =~ /$namere-outgoing-(list|owner|approval)$/i ||
38 $_->{'name'} =~ /^owner-$namere$/i } @aliases;
39 $ldir = &perl_var_replace(&find_value("listdir", $conf), $conf);
41 while($f = readdir(LDIR)) {
42 if ($f eq $name || $f =~ /^$namere\./) {
43 push(@files, "$ldir/$f");
50 foreach $f (@files) { &lock_file($f); }
52 system("rm -rf \"$f\"");
54 foreach $f (@files) { &unlock_file($f); }
55 @daliases = sort { $b->{'line'} <=> $a->{'line'} } @daliases;
56 foreach $a (@daliases) {
57 &foreign_call($aliases_module, "delete_alias", $a,
58 $aliases_file, $a ne $daliases[$#daliases]);
62 # delete the digestify alias from the 'parent' list
63 foreach $a (@aliases) {
64 $idx = &indexof($digestify->{'name'},@{$a->{'values'}});
66 splice(@{$a->{'values'}}, $idx, 1);
67 &foreign_call($aliases_module,
68 "modify_alias", $a, $a);
72 &foreign_call($aliases_module, "unlock_alias_files", $aliases_files);
75 &read_acl(undef, \%wusers);
76 foreach $u (keys %wusers) {
77 %uaccess = &get_module_acl($u);
78 $uaccess{'lists'} = join(' ', grep { $_ ne $name }
79 split(/\s+/, $uaccess{'lists'}));
80 &save_module_acl(\%uaccess, $u) if ($uaccess{'lists'} ne '*');
82 &webmin_log("delete", "list", $name);
86 # ask the user if he is sure
87 &ui_print_header(undef, $text{'delete_title'}, "");
88 print "<form action=delete_list.cgi>\n";
89 print "<input type=hidden name=name value=\"$name\">\n";
90 print "<input type=hidden name=confirm value=1>\n";
91 print "<b>",&text('delete_rusure', "<tt>".&html_escape($name)."</tt>"),
95 print "<tt>",&html_escape($f),"</tt><br>\n";
98 print "<b>$text{'delete_aliases'}</b><br>\n";
100 foreach $a (@daliases) {
101 print "<tt>",&html_escape("$a->{'name'}: $a->{'value'}"),
105 print "<center><input type=submit ",
106 "value='$text{'delete_ok'}'></center>\n";
108 &ui_print_footer("edit_list.cgi?name=$name", $text{'edit_return'});