#!/usr/local/bin/perl # edit_dbase.cgi # Show database tables require './postgresql-lib.pl'; &ReadParse(); &can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'}); @titles = grep { &can_edit_db($_) } &list_databases(); $desc = "$in{'db'}"; if (@titles == 1 && $module_info{'usermin'}) { # Single-database mode &ui_print_header($desc, $text{'dbase_title'}, "", "edit_dbase", 1, 1); $single = 1; } else { &ui_print_header($desc, $text{'dbase_title'}, "", "edit_dbase"); } # Is this database accepting connections? if (!&accepting_connections($in{'db'})) { print "$text{'dbase_noconn'}
\n"; &ui_print_footer("", $text{'index_return'}); exit; } @titles = &list_tables($in{'db'}); if (&supports_indexes() && $access{'indexes'}) { @indexes = &list_indexes($in{'db'}); } if (&supports_views() && $access{'views'}) { @views = &list_views($in{'db'}); } if (&supports_sequences() && $access{'seqs'}) { @seqs = &list_sequences($in{'db'}); } if ($in{'search'}) { # Limit to those matching search @titles = grep { /\Q$in{'search'}\E/i } @titles; @indexes = grep { /\Q$in{'search'}\E/i } @indexes; @views = grep { /\Q$in{'search'}\E/i } @views; @seqs = grep { /\Q$in{'search'}\E/i } @seqs; print "
| ",&text('dbase_showing', "$in{'search'}")," | \n"; print "", "$text{'view_searchreset'} | \n"; print "
\n"; } &show_buttons(); # Check if the user is from Virtualmin, and if so link back to his DB list if (&foreign_check("virtual-server")) { $virtual_server::no_virtualmin_plugins = 1; &foreign_require("virtual-server", "virtual-server-lib.pl"); if (!&virtual_server::master_admin() && !&virtual_server::reseller_admin()) { # Is a domain owner .. which domain is this DB in? foreach my $d (grep { &virtual_server::can_edit_domain($_) } &virtual_server::list_domains()) { @dbs = &virtual_server::domain_databases($d); ($got) = grep { $_->{'name'} eq $in{'db'} && $_->{'type'} eq 'postgres' } @dbs; if ($got) { $virtualmin = $d->{'id'}; } } } } if ($virtualmin) { &ui_print_footer("../virtual-server/list_databases.cgi?dom=$virtualmin", $text{'index_return'}); } elsif ($single) { &ui_print_footer("/", $text{'index'}); } else { &ui_print_footer("", $text{'index_return'}); } # Display buttons for adding tables, views and so on sub show_buttons { print "
| ",&ui_submit($text{'dbase_add'})." ".$text{'dbase_fields'}. " ".&ui_textbox("fields", 4, 4)," | \n"; print &ui_form_end(); $form++; # Add a new view if (&supports_views() && $access{'views'}) { print &ui_form_start("edit_view.cgi"); print &ui_hidden("db", $in{'db'}); print &ui_hidden("new", 1); print "",&ui_submit($text{'dbase_vadd'})," | \n"; print &ui_form_end(); $form++; } # Add a new sequence if (&supports_sequences() && $access{'seqs'}) { print &ui_form_start("edit_seq.cgi"); print &ui_hidden("db", $in{'db'}); print &ui_hidden("new", 1); print "",&ui_submit($text{'dbase_sadd'})," | \n"; print &ui_form_end(); $form++; } } # Drop database button if ($access{'delete'}) { print &ui_form_start("drop_dbase.cgi"); print &ui_hidden("db", $in{'db'}); print "",&ui_submit($text{'dbase_drop'})," | \n"; print &ui_form_end(); $form++; } # Backup and restore buttons if (&get_postgresql_version() >= 7.2) { if ($access{'backup'}) { print &ui_form_start("backup_form.cgi"); print &ui_hidden("db", $in{'db'}); print "",&ui_submit($text{'dbase_bkup'})," | \n"; print &ui_form_end(); $form++; } if ($access{'restore'}) { print &ui_form_start("restore_form.cgi"); print &ui_hidden("db", $in{'db'}); print "",&ui_submit($text{'dbase_rstr'})," | \n"; print &ui_form_end(); $form++; } } # Execute SQL form print &ui_form_start("exec_form.cgi"); print &ui_hidden("db", $in{'db'}); print "",&ui_submit($text{'dbase_exec'})," | \n"; print &ui_form_end(); $form++; print "