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(" | ", @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