]> ruin.nu Git - NDIRC.git/blobdiff - Usermgm.pm
Converted the .+user command
[NDIRC.git] / Usermgm.pm
index 1f8545b689c3cf8a4329ba8457a76fa35dae99ba..d3083f482ce1485a75c98e2b60709e5198b6cb12 100644 (file)
@@ -25,38 +25,8 @@ require Exporter;
 
 our @ISA = qw/Exporter/;
 
-our @EXPORT = qw/addUser whois flags flag laston addPoints chattrG setHost setPNick deactivateUser getShips getFleet/;
+our @EXPORT = qw/whois flags flag laston addPoints chattrG setHost setPNick deactivateUser getShips getFleet/;
 
-sub addUser {
-       my ($msg, $command) = @_;
-
-       my ($nick,$pnick);
-       if(defined $msg && $msg =~ /^(\w+)(?: ([^.\s]+))?$/){
-               $nick = $1;
-               $pnick = $2;
-       }else{
-               $ND::server->command("notice $ND::nick syntax: .$command nick [pnick] | nick must be alphanum characters, if no pnick is given then it will be set to nick");
-               return;
-       }
-       if (hc()){
-               $pnick = $nick unless $pnick;
-               my $host = "$pnick.users.netgamers.org";
-               my ($username,$hostname,$p_nick) = $ND::DBH->selectrow_array(q{SELECT username, hostmask,pnick
-                       FROM users WHERE username ILIKE ? OR hostmask ILIKE ? OR pnick ILIKE ?}
-                       ,undef,$nick,$host,$pnick);
-               if ((not defined $username) && $ND::DBH->do("INSERT INTO users (username,hostmask,pnick,password) VALUES(?,?,?,'')"
-                               ,undef,$nick,$host,$pnick)){
-                       $ND::server->command("msg $ND::target Added $ND::B$nick(/$pnick)$ND::B with host: $ND::B$host$ND::B");
-               }elsif(defined $username){
-                       $ND::server->command("msg $ND::target $ND::B$username ($p_nick)$ND::B already exists with host: $ND::B$hostname$ND::B.");
-
-               }else{
-                       $ND::server->command("msg $ND::target Something went wrong when trying to add $ND::B$nick ($pnick)$ND::B with host: $ND::B$host$ND::B, ".$ND::DBH->errstr);
-               }
-       }else{
-               $ND::server->command("msg $ND::target Only HCs are allowed to add users");
-       }
-}
 sub whois {
        my ($msg, $command) = @_;
 
@@ -197,13 +167,21 @@ sub getShips {
        if (officer() || dc()){
                my $f = $ND::DBH->prepare(qq{SELECT username,SUM(fs.amount) AS amount
                        FROM users u 
-                               JOIN (SELECT DISTINCT ON (sender) sender AS planet,id FROM fleets
+                               JOIN (SELECT DISTINCT ON (planet) planet,fid FROM fleets
                                        WHERE mission = 'Full fleet' AND name <> 'Unit'
-                                       ORDER BY sender,tick DESC,id DESC) f  USING (planet) 
-                               JOIN fleet_ships fs ON f.id = fs.id
-                       WHERE ship ILIKE ?
+                                       ORDER BY planet,tick DESC,fid DESC) f  USING (planet) 
+                               JOIN fleet_ships fs USING (fid)
+                       WHERE ship ILIKE ? AND uid IN (SELECT uid FROM groupmembers WHERE gid = 2)
                        GROUP BY username ORDER BY amount DESC
-               });
+                       });
+               if ($command eq 'shipshome'){
+                       $f = $ND::DBH->prepare(q{
+SELECT username,SUM(amount) AS amount
+FROM available_ships
+WHERE ship ILIKE ? AND uid IN (SELECT uid FROM groupmembers WHERE gid = 2)
+GROUP BY username ORDER BY amount DESC
+                       });
+               }
                $f->execute($ship);
                my $text;
                my $i = 0;
@@ -232,14 +210,14 @@ sub getFleet {
        if (officer() || dc()){
                my $f = $ND::DBH->prepare(q{SELECT fs.ship, fs.amount, username
                        FROM fleet_ships fs
-                               JOIN (SELECT id,username
+                               JOIN (SELECT fid,username
                                        FROM fleets f
-                                               JOIN users u ON u.planet = f.sender
+                                               JOIN users u USING (planet)
                                        WHERE mission = 'Full fleet' AND name <> 'Unit'
                                                AND username ILIKE $1
-                                       ORDER BY planet,tick DESC,id DESC
+                                       ORDER BY planet,tick DESC,fid DESC
                                        LIMIT 1
-                               ) f  USING (id)
+                               ) f  USING (fid)
                        ORDER BY num
                });
                $f->execute($nick);