]> ruin.nu Git - ndwebbie.git/blobdiff - users.pl
nicer output
[ndwebbie.git] / users.pl
index 6ed91d80bb3a32fdc5d1756bb749c3eeaa0fe892..5e489e5c4c9fcea56781086582924134bfd39a03 100644 (file)
--- 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 .= "<p> Something went wrong: ".$DBH->errstr."</p>";
+}) or $error .= "<p> Something went wrong: </p>";
        $user = $DBH->selectrow_hashref($query,undef,$1) or $error.= "<p> Something went wrong: ".$DBH->errstr."</p>";
 }
 
-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;