Handle hostnames with upper-case letters
[webmin.git] / postgresql / drop_tables.cgi
1 #!/usr/local/bin/perl
2 # Delete multiple tables
3
4 require './postgresql-lib.pl';
5 &ReadParse();
6 &can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
7 @tables = split(/\0/, $in{'d'});
8 @tables || &error($text{'tdrops_enone'});
9
10 if ($in{'confirm'}) {
11         # Drop the tables, views, sequences and indexes (tables last)
12         &error_setup($text{'tdrops_err'});
13         foreach $t (@tables) {
14                 if ($t =~ /^\!(.*)$/) {
15                         $qt = &quote_table($1);
16                         &execute_sql_logged($in{'db'}, "drop index $qt");
17                         }
18                 elsif ($t =~ /^\*(.*)$/) {
19                         $qt = &quote_table($1);
20                         &execute_sql_logged($in{'db'}, "drop view $qt");
21                         }
22                 elsif ($t =~ /^\/(.*)$/) {
23                         $qt = &quote_table($1);
24                         &execute_sql_logged($in{'db'}, "drop sequence $qt");
25                         }
26                 else {
27                         push(@rest, $t);
28                         }
29                 }
30         foreach $t (@rest) {
31                 $qt = &quote_table($t);
32                 &execute_sql_logged($in{'db'}, "drop table $qt");
33                 }
34         &webmin_log("delete", "tables", scalar(@tables), \%in);
35         &redirect("edit_dbase.cgi?db=$in{'db'}");
36         }
37 else {
38         # Ask the user if he is sure..
39         &ui_print_header(undef, $text{'tdrops_title'}, "");
40         foreach $t (@tables) {
41                 if ($t !~ /^\!/ && $t !~ /^\*/ && $t !~ /^\//) {
42                         $qt = &quote_table($t);
43                         $d = &execute_sql_safe($in{'db'}, "select count(*) from $qt");
44                         $rows += $d->{'data'}->[0]->[0];
45                         }
46                 }
47
48         $msg = defined($rows) ? 'tdrops_rusure' : 'tdrops_rusure2';
49         print "<center><b>", &text($msg, scalar(@tables),
50                                    "<tt>$in{'db'}</tt>", $rows),"</b><p>\n";
51         print "<form action=drop_tables.cgi>\n";
52         print "<input type=hidden name=db value='$in{'db'}'>\n";
53         foreach $t (@tables) {
54                 print &ui_hidden("d", $t),"\n";
55                 }
56         print "<input type=submit name=confirm value='$text{'tdrops_ok'}'>\n";
57         print "</form></center>\n";
58         &ui_print_footer("edit_dbase.cgi?db=$in{'db'}",
59                         $text{'dbase_return'});
60         }
61