]> ruin.nu Git - ndwebbie.git/blobdiff - main.pl
oops, guess I had forgotten about this file
[ndwebbie.git] / main.pl
diff --git a/main.pl b/main.pl
index 81d7c8f12e8b56687477834b003181cfd8413ffc..4c8dfabca13ab16164f4911d8bf4a3b8a52c0924 100644 (file)
--- a/main.pl
+++ b/main.pl
@@ -18,6 +18,8 @@
 #**************************************************************************/
 
 use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
 
 $ND::TEMPLATE->param(TITLE => 'Main Page');
 
@@ -30,7 +32,7 @@ if (param('cmd') eq 'fleet'){
        my $fleet = $DBH->prepare("SELECT id FROM fleets WHERE uid = ? AND fleet = 0");
        my ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID);
        unless ($id){
-               my $insert = $DBH->prepare(q{INSERT INTO fleets (uid,target,mission,landing_tick,fleet,eta) VALUES (?,?,'Base',0,0,0)});
+               my $insert = $DBH->prepare(q{INSERT INTO fleets (uid,target,mission,landing_tick,fleet,eta,back) VALUES (?,?,'Full fleet',0,0,0,0)});
                $insert->execute($ND::UID,$ND::PLANET);
                ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID);
        }
@@ -57,6 +59,35 @@ UPDATE users SET planet =
 WHERE uid = ? });
        $query->execute($1,$2,$3,$ND::UID);
 }
+if (param('cmd') eq 'Recall Fleets'){
+       $DBH->begin_work;
+       my $updatefleets = $DBH->prepare('UPDATE fleets SET back = tick() + (tick() - (landing_tick - eta))  WHERE uid = ? AND id = ?');
+       
+       for my $param (param()){
+               if ($param =~ /^change:(\d+)$/){
+                       if($updatefleets->execute($ND::UID,$1)){
+                               $ND::LOG->execute($ND::UID,"Member recalled fleet $1");
+                       }else{
+                               $error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
+                       }
+               }
+       }
+       $DBH->commit or $error .= '<p>'.$DBH->errstr.'</p>';
+}
+if (param('cmd') eq 'Change Fleets'){
+       $DBH->begin_work;
+       my $updatefleets = $DBH->prepare('UPDATE fleets SET back = ? WHERE uid = ? AND id = ?');
+       for my $param (param()){
+               if ($param =~ /^change:(\d+)$/){
+                       if($updatefleets->execute(param("back:$1"),$ND::UID,$1)){
+                               $ND::LOG->execute($ND::UID,"Member set fleet $1 to be back tick: ".param("back:$1"));
+                       }else{
+                               $error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
+                       }
+               }
+       }
+       $DBH->commit or $error .= '<p>'.$DBH->errstr.'</p>';
+}
 if(param('oldpass') && param('pass')){
        my $query = $DBH->prepare('UPDATE users SET password = MD5(?) WHERE password = MD5(?) AND uid = ?');
        $query->execute(param('pass'),param('oldpass'),$ND::UID);
@@ -99,19 +130,22 @@ if ($planet){
 }
 
 
-my $query = $DBH->prepare(q{SELECT f.fleet, coords(x,y,z), mission, sum(fs.amount) AS amount, landing_tick 
+$query = $DBH->prepare(q{SELECT f.fleet,f.id, coords(x,y,z) AS target, mission, sum(fs.amount) AS amount, landing_tick, back
 FROM fleets f 
        JOIN fleet_ships fs ON f.id = fs.fleet 
        JOIN current_planet_stats p ON f.target = p.id
-WHERE f.uid = ? AND (f.fleet = 0 OR landing_tick > ?)
-GROUP BY f.fleet, x,y,z, mission, landing_tick
+WHERE f.uid = ? AND (f.fleet = 0 OR back >= ?)
+GROUP BY f.fleet,f.id, x,y,z, mission, landing_tick,back
 ORDER BY f.fleet
 });
 
-$query->execute($ND::UID,$ND::TICK);
+$query->execute($ND::UID,$ND::TICK) or $error .= '<p>'.$DBH->errstr.'</p>';
 my @fleets;
-while (my($fleet,$coords,$mission,$amount,$landing_tick) = $query->fetchrow){
-       push @fleets,{Target => $coords, Mission => $mission, Amount => $amount, LandingTick => $landing_tick};
+my $i = 0;
+while (my $fleet = $query->fetchrow_hashref){
+       $i++;
+       $fleet->{ODD} = $i % 2;
+       push @fleets,$fleet;
 }
 $BODY->param(Fleets => \@fleets);