X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=users.pl;h=5e489e5c4c9fcea56781086582924134bfd39a03;hb=30ff54d1d68e41a17bd8a7ff57e4104021e52ff5;hp=6ed91d80bb3a32fdc5d1756bb749c3eeaa0fe892;hpb=8bd21c625add06fed135d3ce99208c7a94b44882;p=ndwebbie.git diff --git a/users.pl b/users.pl index 6ed91d8..5e489e5 100644 --- a/users.pl +++ b/users.pl @@ -18,7 +18,7 @@ #**************************************************************************/ use strict; -use POSIX; +use warnings FATAL => 'all'; our $BODY; our $DBH; our $LOG; @@ -29,16 +29,17 @@ die "You don't have access" unless isHC(); my $error = ''; my $user; -if (param('user') =~ /^(\d+)$/){ +if (defined param('user') && param('user') =~ /^(\d+)$/){ my $query = $DBH->prepare(q{ SELECT uid,username,hostmask,coords(x,y,z) AS planet,attack_points,defense_points,scan_points,humor_points FROM users u LEFT OUTER JOIN current_planet_stats p ON u.planet = p.id WHERE uid = ?; -}) or $error .= "

Something went wrong: ".$DBH->errstr."

"; +}) or $error .= "

Something went wrong:

"; $user = $DBH->selectrow_hashref($query,undef,$1) or $error.= "

Something went wrong: ".$DBH->errstr."

"; } -if ($user && param('cmd') eq 'change'){ + +if ($user && defined param('cmd') && param('cmd') eq 'change'){ $DBH->begin_work; for my $param (param()){ if ($param =~ /^c:(\w+)$/){ @@ -68,6 +69,7 @@ if ($user && param('cmd') eq 'change'){ $groups->execute(); while (my $group = $groups->fetchrow_hashref){ my $query; + next unless defined param($group->{gid}); if (param($group->{gid}) eq 'remove'){ $query = $delgroup; }elsif(param($group->{gid}) eq 'add'){ @@ -110,7 +112,11 @@ $BODY->param(RemoveGroups => \@remgroups); $BODY->param(AddGroups => \@addgroups); }else{ - my $query = $DBH->prepare(qq{SELECT uid,username FROM users ORDER BY username})or $error .= $DBH->errstr; + my $query = $DBH->prepare(qq{SELECT u.uid,username,TRIM(',' FROM concat(g.groupname||',')) AS groups + FROM users u LEFT OUTER JOIN (groupmembers gm NATURAL JOIN groups g) ON gm.uid = u.uid + WHERE u.uid > 0 + GROUP BY u.uid,username + ORDER BY username})or $error .= $DBH->errstr; $query->execute or $error .= $DBH->errstr; my @users; my $i = 0;