]> ruin.nu Git - ndwebbie.git/blobdiff - users.pl
order by last post
[ndwebbie.git] / users.pl
index 3425c247dcdb1d713160c2ba585b8e0de363e6bc..ba87e920b190bf488eb68e972125612711895e69 100644 (file)
--- a/users.pl
+++ b/users.pl
 #**************************************************************************/
 
 use strict;
-use POSIX;
+use warnings FATAL => 'all';
+use ND::Include;
 our $BODY;
 our $DBH;
-our $LOG;
 
 $ND::TEMPLATE->param(TITLE => 'Users');
 
@@ -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+)$/){
@@ -56,7 +57,7 @@ if ($user && param('cmd') eq 'change'){
                        if ($DBH->do(qq{UPDATE users SET $column = ? WHERE uid = ? }
                                        ,undef,$value,$user->{uid})){
                                $user->{$column} = param($column);
-                               $LOG->execute($ND::UID,"HC set $column to $value for user: $user->{uid}");
+                               log_message $ND::UID,"HC set $column to $value for user: $user->{uid}";
                        }else{
                                $error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
                        }
@@ -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'){
@@ -75,7 +77,9 @@ if ($user && param('cmd') eq 'change'){
                }
                if ($query){
                        if ($query->execute($user->{uid},$group->{gid})){
-                               $LOG->execute($ND::UID,"HC added user: $user->{uid} to group: $group->{gid}");
+                               my ($action,$a2) = ('added','to');
+                               ($action,$a2) = ('removed','from') if param($group->{gid}) eq 'remove';
+                               log_message $ND::UID,"HC $action user: $user->{uid} ($user->{username}) $a2 group: $group->{gid} ($group->{groupname})";
                        }else{
                                $error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
                        }
@@ -110,14 +114,18 @@ $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;
        while (my $user = $query->fetchrow_hashref){
+               $i++;
                $user->{ODD} = $i % 2;
                push @users, $user;
-               $i++;
        }
        $BODY->param(Users => \@users);
 }