]> ruin.nu Git - ndwebbie.git/blobdiff - lib/NDWeb/Controller/Calls.pm
Need to pick channel before sending
[ndwebbie.git] / lib / NDWeb / Controller / Calls.pm
index 8515212ac1340db26ab395e7b0bc3a27bad78f68..4033e5c06f6111a78ec04bde4b8847afef7edfc5 100644 (file)
@@ -164,6 +164,16 @@ sub edit : Local {
                }
                push @fleets, $fleet;
        }
+
+       my $available = $dbh->prepare(q{
+SELECT ship,amount from ships_home WHERE planet = $1 AND tick = $2
+               });
+       $available->execute($call->{planet}, $call->{landing_tick});
+       my $fleet = {fid => $call->{member}, mission => 'Available'
+               , name => 'At home', ships => $available->fetchall_arrayref({})
+       };
+       push @fleets, $fleet;
+
        $c->stash(fleets => \@fleets);
 
        my $defenders = $dbh->prepare(q{ 
@@ -231,13 +241,14 @@ sub defleeches : Local {
 
        my $query = $dbh->prepare(q{SELECT username,defense_points,count(id) AS calls
                , SUM(fleets) AS fleets, SUM(recalled) AS recalled
+               ,count(NULLIF(fleets,0)) AS defended_calls
                FROM (SELECT username,defense_points,c.id,count(f.target) AS fleets
                        , count(NULLIF(f.landing_tick + f.eta -1 = f.back,TRUE)) AS recalled
                        FROM users u JOIN calls c ON c.member = u.uid
                                LEFT OUTER JOIN (
                                        SELECT * FROM launch_confirmations JOIN fleets USING (fid)
+                                       WHERE mission = 'Defend'
                                ) f ON u.planet = f.target AND c.landing_tick = f.landing_tick
-                       WHERE f.mission = 'Defend'
                        GROUP BY username,defense_points,c.id
                ) d
                GROUP BY username,defense_points ORDER BY fleets DESC, defense_points
@@ -281,6 +292,12 @@ sub postcallupdate : Local {
                                ,undef,$c->req->param('info'),$call->{id});
                        $log->execute($c->user->id,$call->{ftid},"Updated info");
                }
+               if ($c->req->param('ccalc')){
+                       my $calc = $c->req->param('calc');
+                       $dbh->do(q{UPDATE calls SET calc = ? WHERE id = ?}
+                               ,undef,$calc,$call->{id});
+                       $log->execute($c->user->id,$call->{ftid},html_escape('Updated calc to: [URL]'.$calc.'[/URL]'));
+               }
        }elsif($c->req->param('cmd') =~ /^(Cover|Uncover|Ignore|Open|Take) call$/){
                my $extra_vars = '';
                if ($1 eq 'Cover'){
@@ -351,7 +368,7 @@ sub findCall : Private {
        my $query = $dbh->prepare(q{
                SELECT c.id, coords(p.x,p.y,p.z), c.landing_tick, c.info, covered
                        ,open, dc.username AS dc, u.defense_points,c.member AS uid
-                       ,u.planet, u.username AS member, u.sms,c.ftid
+                       ,u.planet, u.username AS member, u.sms,c.ftid,calc
                FROM calls c 
                JOIN users u ON c.member = u.uid
                LEFT OUTER JOIN users dc ON c.dc = dc.uid