]> ruin.nu Git - ndwebbie.git/blobdiff - main.pl
more fatal warnings and other cleanup
[ndwebbie.git] / main.pl
diff --git a/main.pl b/main.pl
index 0853243f37c24d2733a89f0f6c7118ae0d149446..57dc9ff1f86eb0e1df8fae254affc2090cbe53f7 100644 (file)
--- a/main.pl
+++ b/main.pl
@@ -18,6 +18,7 @@
 #**************************************************************************/
 
 use strict;
+use warnings FATAL => 'all';
 
 $ND::TEMPLATE->param(TITLE => 'Main Page');
 
@@ -25,26 +26,55 @@ our $BODY;
 our $DBH;
 my $error;
 
-if (param('cmd') eq 'fleet'){
-       $DBH->begin_work;
-       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,back) VALUES (?,?,'Full fleet',0,0,0,0)});
-               $insert->execute($ND::UID,$ND::PLANET);
-               ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID);
+if (defined param('cmd')){
+       if (param('cmd') eq 'fleet'){
+               $DBH->begin_work;
+               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,back) VALUES (?,?,'Full fleet',0,0,0,0)});
+                       $insert->execute($ND::UID,$ND::PLANET);
+                       ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID);
+               }
+               my $delete = $DBH->prepare("DELETE FROM fleet_ships WHERE fleet = ?");
+               $delete->execute($id);
+               my $insert = $DBH->prepare('INSERT INTO fleet_ships (fleet,ship,amount) VALUES (?,?,?)');
+               $fleet = param('fleet');
+               $fleet =~ s/,//g;
+               while ($fleet =~ m/((?:[A-Z][a-z]+ )*[A-Z][a-z]+)\s+(\d+)/g){
+                       $insert->execute($id,$1,$2) or $error .= '<p>'.$DBH->errstr.'</p>';
+               }
+               $fleet = $DBH->prepare('UPDATE fleets SET landing_tick = tick() WHERE id = ?');
+               $fleet->execute($id);
+               $DBH->commit;
+       }elsif (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>';
+       }elsif (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>';
        }
-       my $delete = $DBH->prepare("DELETE FROM fleet_ships WHERE fleet = ?");
-       $delete->execute($id);
-       my $insert = $DBH->prepare('INSERT INTO fleet_ships (fleet,ship,amount) VALUES (?,?,?)');
-       $fleet = param('fleet');
-       $fleet =~ s/,//g;
-       while ($fleet =~ m/((?:[A-Z][a-z]+ )*[A-Z][a-z]+)\s+(\d+)/g){
-               $insert->execute($id,$1,$2) or $error .= '<p>'.$DBH->errstr.'</p>';
-       }
-       $fleet = $DBH->prepare('UPDATE fleets SET landing_tick = tick() WHERE id = ?');
-       $fleet->execute($id);
-       $DBH->commit;
 }
 if (param('sms')){
        my $query = $DBH->prepare('UPDATE users SET sms = ? WHERE uid = ?');
@@ -99,19 +129,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);