]> ruin.nu Git - ndwebbie.git/commitdiff
Report incs through webbie
authorMichael Andreen <harv@ruin.nu>
Fri, 22 Jan 2010 12:56:00 +0000 (13:56 +0100)
committerMichael Andreen <harv@ruin.nu>
Fri, 22 Jan 2010 12:56:00 +0000 (13:56 +0100)
lib/NDWeb/Controller/Members.pm
root/lib/site/leftbar.tt2
root/src/members/addincs.tt2 [new file with mode: 0644]

index d5b634c5b80d57c682cd30c7ec8df9c1ed658f4a..8c24d66e79489d5fca2e6fff22f548dd2f0f249b 100644 (file)
@@ -445,6 +445,75 @@ sub insertintel : Private {
        $c->flash(scans => \@scans);
 }
 
+sub addincs : Local {
+       my ( $self, $c ) = @_;
+       $c->stash(incs => $c->flash->{incs});
+
+}
+
+sub postincs : Local {
+       my ( $self, $c ) = @_;
+       my $dbh = $c->model;
+
+       my @incs;
+
+       my $user = $dbh->prepare(q{
+SELECT uid FROM users u
+WHERE pid = planetid($1,$2,$3,tick())
+       AND uid IN (SELECT uid FROM groupmembers WHERE gid = 'M')
+               });
+       my $call = $dbh->prepare(q{
+SELECT call
+FROM calls WHERE uid = $1 AND landing_tick = tick() + $2
+               });
+       my $fleet = $dbh->prepare(q{
+SELECT pid
+FROM incomings i
+WHERE pid = planetid($1,$2,$3,tick()) AND amount = $4 and fleet = $5 AND call = $6
+               });
+       my $irc = $dbh->prepare(q{
+INSERT INTO irc_requests (uid,channel,message) VALUES($1,'def',$2)
+               });
+
+       my $msg = $c->req->param('message');
+       while ($msg =~ /(\d+):(\d+):(\d+)\*?\s+(\d+):(\d+):(\d+)\s+([^:]*\S+)\s+(?:Ter|Cat|Xan|Zik|Etd)\s+([\d,]+)\s+Attack\s+(\d+)/gc
+                       || $msg =~ /(\d+):(\d+):(\d+)\s+(\d+):(\d+):(\d+)\s+\((?:Ter|Cat|Xan|Zik|Etd)\)\s+([^,]*\S+)\s+([\d,]+)\s+(\d+)\s+\(\d+\)/gc){
+
+               my $inc = {message => $&};
+               my $amount = $8;
+               {
+                       $amount =~ s/,//g;
+               }
+               try {
+                       my $uid = $dbh->selectrow_array($user,undef,$1,$2,$3);
+                       die '<i>No user with these coords</i>' unless $uid;
+
+                       my $call = $dbh->selectrow_array($call,undef,$uid,$9);
+                       if ($call){
+                               my $pid = $dbh->selectrow_hashref($fleet,undef,$4,$5,$6,$amount,$7,$call);
+                               die '<i>Duplicate</i>' if $pid;
+
+                       }
+
+                       $irc->execute($c->user->id, $inc->{message});
+                       $inc->{status} = '<b>Added</b>';
+
+               } catch {
+                       when (m(^(<i>.*</i>) at )){
+                               $inc->{status} = $1;
+                       }
+                       default {
+                               $inc->{status} = $_;
+                       }
+               };
+               push @incs, $inc;
+       }
+
+       $c->signal_bots if @incs;
+       $c->flash(incs => \@incs);
+       $c->res->redirect($c->uri_for('addincs'));
+}
+
 sub launchConfirmation : Local {
        my ( $self, $c ) = @_;
 
index 0e0c52fa157d7cadd381b84413066c427d50e8e2..6ad29761c539a14d3cdda09b1bc788b08e2cbdec 100644 (file)
@@ -54,6 +54,7 @@
        <li><a href="/members/points">Top points</a></li>
        <li><a href="/members/stats">Top ranks</a></li>
        <li><a href="/members/addintel">Add intel/scans</a></li>
+       <li><a href="/members/addincs">Report incs</a></li>
        <li><a href="/members/ircrequest">IRC request</a></li>
        <li><a href="/stats/tags">Planet tags</a></li>
 </ul>
diff --git a/root/src/members/addincs.tt2 b/root/src/members/addincs.tt2
new file mode 100644 (file)
index 0000000..578de0f
--- /dev/null
@@ -0,0 +1,20 @@
+[% META title = 'Add new incs' %]
+[% IF incs.size %]
+<div class="leftinfo">
+<h3>Added the following incs:</h3>
+       [% FOR i IN incs %]
+<p>[% i.status %]: [% i.message %]</p>
+       [% END %]
+</div>
+[% END %]
+
+<form action="[% c.uri_for('postincs') %]" method="post"><fieldset> <legend>Intel/scans</legend>
+       <p>
+               Paste incs from overview or ingame defense page here, for use when
+               <a href="/wiki/Members:MailReport">MailReport</a> doesn't work.
+               New incs will be forwarded to irc where they will be reported.
+       </p>
+       <textarea rows="20" cols="50" name="message"></textarea>
+       <p><input type="submit" name="cmd" value="Submit"></p>
+</fieldset></form>
+