1#!/usr/local/bin/perl
2# list_dbs.cgi
3# Display database-level permissions
4
5require './mysql-lib.pl';
6$access{'perms'} || &error($text{'perms_ecannot'});
7&ui_print_header(undef, $text{'dbs_title'}, "", "dbs");
8
9@rowlinks = ( &ui_link("edit_db.cgi?new=1",$text{'dbs_add'}) );
10$d = &execute_sql_safe($master_db, "select * from db order by db");
11%fieldmap = map { $_->{'field'}, $_->{'index'} }
12		&table_structure($master_db, "db");
13if (@{$d->{'data'}}) {
14	print &ui_form_start("delete_dbs.cgi");
15	unshift(@rowlinks, &select_all_link("d", 0),
16			   &select_invert_link("d", 0) );
17	print &ui_links_row(\@rowlinks);
18	@tds = ( "width=5" );
19	print &ui_columns_start([ "",
20				  $text{'dbs_db'},
21				  $text{'dbs_user'},
22				  $text{'dbs_host'},
23				  $text{'dbs_perms'} ], 100, 0, \@tds);
24	$i = -1;
25	foreach $u (@{$d->{'data'}}) {
26		$i++;
27		next if ($access{'perms'} == 2 && !&can_edit_db($u->[1]));
28		local @cols;
29		push(@cols, "<a href='edit_db.cgi?idx=$i'>".
30			($u->[1] eq '%' || $u->[1] eq '' ? $text{'dbs_any'}
31					: &html_escape($u->[1]))."</a>");
32		push(@cols, $u->[2] eq '' ? $text{'dbs_anon'}
33					    : &html_escape($u->[2]));
34		push(@cols, $u->[0] eq '%' ? $text{'dbs_any'} :
35			    $u->[0] eq '' ? $text{'dbs_hosts'}
36					  : &html_escape($u->[0]));
37		my @priv;
38		my ($allprivs, $noprivs) = (1, 1);
39		foreach my $f (&priv_fields('db')) {
40			if ($u->[$fieldmap{$f->[0]}] eq 'Y') {
41				push(@priv, $f->[1]);
42				$noprivs = 0;
43				}
44			else {
45				$allprivs = 0;
46				}
47			}
48		push(@cols, $allprivs ? $text{'users_all'} :
49			    $noprivs ? $text{'users_none'} :
50				       join("&nbsp;| ", @priv));
51		print &ui_checked_columns_row(\@cols, \@tds,
52				"d", join(" ", $u->[0], $u->[1], $u->[2]));
53		}
54	print &ui_columns_end();
55	}
56else {
57	print "<b>$text{'dbs_empty'}</b> <p>\n";
58	}
59print &ui_links_row(\@rowlinks);
60print &ui_form_end([ [ "delete", $text{'users_delete'} ]]) if (@{$d->{'data'}});
61
62&ui_print_footer("", $text{'index_return'});
63
64