From 95365cc1a5b8827230e5213bf4dd3377949af7f0 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Wed, 25 Jun 2008 15:17:56 +0200 Subject: [PATCH] Converted addintel --- NDWeb/Pages/AddIntel.pm | 106 -------------------------------- lib/NDWeb/Controller/Forum.pm | 18 +++--- lib/NDWeb/Controller/Members.pm | 96 +++++++++++++++++++++++++++++ root/src/members/addintel.tt2 | 46 ++++++++++++++ templates/addintel.tmpl | 25 -------- 5 files changed, 153 insertions(+), 138 deletions(-) delete mode 100644 NDWeb/Pages/AddIntel.pm create mode 100644 root/src/members/addintel.tt2 delete mode 100644 templates/addintel.tmpl diff --git a/NDWeb/Pages/AddIntel.pm b/NDWeb/Pages/AddIntel.pm deleted file mode 100644 index 834fb0d..0000000 --- a/NDWeb/Pages/AddIntel.pm +++ /dev/null @@ -1,106 +0,0 @@ -#************************************************************************** -# Copyright (C) 2006 by Michael Andreen * -# * -# This program is free software; you can redistribute it and/or modify * -# it under the terms of the GNU General Public License as published by * -# the Free Software Foundation; either version 2 of the License, or * -# (at your option) any later version. * -# * -# This program is distributed in the hope that it will be useful, * -# but WITHOUT ANY WARRANTY; without even the implied warranty of * -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# GNU General Public License for more details. * -# * -# You should have received a copy of the GNU General Public License * -# along with this program; if not, write to the * -# Free Software Foundation, Inc., * -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -#**************************************************************************/ - -package NDWeb::Pages::AddIntel; -use strict; -use warnings; -use CGI qw/:standard/; -use NDWeb::Forum; -use NDWeb::Include; - -use base qw/NDWeb::XMLPage/; - -$NDWeb::Page::PAGES{addintel} = 'NDWeb::Pages::AddIntel'; - -sub render_body { - my $self = shift; - my ($BODY) = @_; - - my $DBH = $self->{DBH}; - - $self->{TITLE} = 'Add Intel and Scans'; - - my $error; - - return $self->noAccess unless $self->isMember; - - if (defined param('cmd')){ - if (param('cmd') eq 'submit' || param('cmd') eq 'submit_message'){ - my $findscan = $DBH->prepare(q{SELECT scan_id FROM scans WHERE scan_id = ? AND tick >= tick() - 168 AND groupscan = ?}); - my $addscan = $DBH->prepare(q{INSERT INTO scans (scan_id,tick,uid,groupscan) VALUES (?,tick(),?,?)}); - my $addpoint = $DBH->prepare(q{UPDATE users SET scan_points = scan_points + 1 WHERE uid = ? }); - my $intel = param('intel'); - my @scans; - while ($intel =~ m{http://[\w.]+/.+?scan(_id|_grp)?=(\d+)}g){ - my $groupscan = (defined $1 && $1 eq '_grp') || 0; - my %scan; - $scan{Scan} = $2; - $scan{Message} = ($groupscan ? b 'Group':'')."Scan $2: "; - $findscan->execute($2,$groupscan); - if ($findscan->rows == 0){ - if ($addscan->execute($2,$ND::UID,$groupscan)){ - $addpoint->execute($ND::UID) unless $groupscan; - $scan{Message} .= 'added'; - }else{ - $scan{Message} .= "something went wrong: $DBH->errstr"; - } - }else{ - $scan{Message} .= 'already exists'; - } - push @scans,\%scan; - } - $BODY->param(Scans => \@scans); - my $tick = $self->{TICK}; - $tick = param('tick') if defined param('tick') - && param('tick') =~ /^(\d+)$/; - my $addintel = $DBH->prepare(q{INSERT INTO fleets - (name,mission,tick,target,sender,eta,amount,ingal,back,uid) - VALUES($1,$2,$3,planetid($4,$5,$6,$10),planetid($7,$8,$9,$10) - ,$11,$12,$13,$14,$15) - }); - my $findplanet = $DBH->prepare(q{SELECT planetid(?,?,?,?)}); - while ($intel =~ m/(\d+):(\d+):(\d+)\*?\s+(\d+):(\d+):(\d+) - \*?\s+(.+)(?:Ter|Cat|Xan|Zik|Etd)? - \s+(\d+)\s+(Attack|Defend)\s+(\d+)/gx){ - my $ingal = ($1 == $4 && $2 == $5) || 0; - my $lt = $tick + $10; - my $back = ($ingal ? $lt + 4 : undef); - warn "Added: $&\n"; - $addintel->execute($7,$9,$lt,$1,$2,$3,$4,$5,$6,$tick,$10,$8 - ,$ingal,$back, $ND::UID) or warn $DBH->errstr; - } - } - if (param('cmd') eq 'submit_message'){ - my $board = {id => 12}; - my $subject = param('subject'); - unless ($subject){ - if (param('intel') =~ /(.*\w.*)/){ - $subject = $1; - } - } - if (my $thread = addForumThread $DBH,$board,$ND::UID,$subject){ - $error .= 'Intel message added' if addForumPost $DBH,$thread,$ND::UID,param('intel') - } - } - } - $BODY->param(Tick => $self->{TICK}); - $BODY->param(Error => $error); - return $BODY; -} -1; diff --git a/lib/NDWeb/Controller/Forum.pm b/lib/NDWeb/Controller/Forum.pm index d242ed9..4145781 100644 --- a/lib/NDWeb/Controller/Forum.pm +++ b/lib/NDWeb/Controller/Forum.pm @@ -314,7 +314,6 @@ sub moveThreads : Local { sub newThread : Local { my ( $self, $c, $board ) = @_; - my $dbh = $c->model; $c->forward('findBoard'); $board = $c->stash->{board}; @@ -322,16 +321,21 @@ sub newThread : Local { unless ($c->stash->{board}->{post}){ $c->acl_access_denied('test',$c->action,'No post access to board.') } - + + $c->forward('insertThread'); + $c->forward('addPost',[$c->stash->{thread}]); +} + +sub insertThread : Private { + my ( $self, $c, $board ) = @_; + my $dbh = $c->model; + my $insert = $dbh->prepare(q{INSERT INTO forum_threads (ftid,fbid,subject,uid) VALUES(DEFAULT,$1,$2,$3) RETURNING (ftid); }); - - $insert->execute($board->{fbid},html_escape($c->req->param('subject')),$c->stash->{UID}); - my $thread = $insert->fetchrow; + $insert->execute($board,html_escape($c->req->param('subject')),$c->stash->{UID}); + $c->stash(thread => $insert->fetchrow); $insert->finish; - $c->forward('addPost',[$thread]); - } sub addPost : Local { diff --git a/lib/NDWeb/Controller/Members.pm b/lib/NDWeb/Controller/Members.pm index e25a69b..f3a53f4 100644 --- a/lib/NDWeb/Controller/Members.pm +++ b/lib/NDWeb/Controller/Members.pm @@ -50,6 +50,102 @@ sub points : Local { $c->stash(members => \@members); } +sub addintel : Local { + my ( $self, $c, $order ) = @_; + + $c->stash(intel => $c->flash->{intel}); + $c->stash(scans => $c->flash->{scans}); + $c->stash(intelmessage => $c->flash->{intelmessage}); +} + +sub postintel : Local { + my ( $self, $c, $order ) = @_; + + $c->forward('insertintel'); + + $c->res->redirect($c->uri_for('addintel')); +} + +sub postintelmessage : Local { + my ( $self, $c, $order ) = @_; + + unless ($c->req->param('subject')){ + if ($c->req->param('message') =~ /(.*\w.*)/){ + $c->req->param(subject => $1); + } + } + + $c->forward('/forum/insertThread',[12]); + $c->forward('/forum/insertPost',[$c->stash->{thread}]); + $c->flash(intelmessage => 1); + + $c->forward('insertintel'); + + $c->res->redirect($c->uri_for('addintel')); +} + +sub insertintel : Private { + my ( $self, $c, $order ) = @_; + my $dbh = $c->model; + + $dbh->begin_work; + my $findscan = $dbh->prepare(q{SELECT scan_id FROM scans + WHERE scan_id = ? AND tick >= tick() - 168 AND groupscan = ? + }); + my $addscan = $dbh->prepare(q{INSERT INTO scans (scan_id,tick,uid,groupscan) + VALUES (?,tick(),?,?) + }); + my $addpoint = $dbh->prepare(q{UPDATE users SET scan_points = scan_points + 1 + WHERE uid = ? + }); + my @scans; + my $intel = $c->req->param('message'); + while ($intel =~ m{http://[\w.]+/.+?scan(_id|_grp)?=(\d+)}g){ + my $groupscan = (defined $1 && $1 eq '_grp') || 0; + my %scan; + $scan{id} = $2; + $scan{group} = $groupscan; + $findscan->execute($2,$groupscan); + if ($findscan->rows == 0){ + if ($addscan->execute($2,$c->user->id,$groupscan)){ + $addpoint->execute($c->user->id) unless $groupscan; + $scan{added} = 1; + } + }else{ + $scan{message} = 'already exists'; + } + push @scans,\%scan; + } + my $tick = $c->req->param('tick'); + unless ($tick =~ /^(\d+)$/){ + $tick = $c->stash->{game}->{tick}; + } + my $addintel = $dbh->prepare(q{INSERT INTO fleets + (name,mission,tick,target,sender,eta,amount,ingal,back,uid) + VALUES($1,$2,$3,planetid($4,$5,$6,$10),planetid($7,$8,$9,$10) + ,$11,$12,$13,$14,$15) + }); + my @intel; + while ($intel =~ m/(\d+):(\d+):(\d+)\*?\s+(\d+):(\d+):(\d+) + \*?\s+(.+)(?:Ter|Cat|Xan|Zik|Etd)? + \s+(\d+)\s+(Attack|Defend)\s+(\d+)/gx){ + my $ingal = ($1 == $4 && $2 == $5) || 0; + my $lt = $tick + $10; + my $back = ($ingal ? $lt + 4 : undef); + eval { + $addintel->execute($7,$9,$lt,$1,$2,$3,$4,$5,$6,$tick,$10,$8 + ,$ingal,$back, $c->user->id); + push @intel,"Added $&"; + }; + if ($@){ + push @intel,"Couldn't add $&: ".$dbh->errstr; + } + } + $dbh->commit; + $c->flash(intel => \@intel); + $c->flash(scans => \@scans); +} + =head1 AUTHOR Michael Andreen (harv@ruin.nu) diff --git a/root/src/members/addintel.tt2 b/root/src/members/addintel.tt2 new file mode 100644 index 0000000..a77cc1b --- /dev/null +++ b/root/src/members/addintel.tt2 @@ -0,0 +1,46 @@ +[% META title = 'Add intel and scans' %] +[% IF scans.size > 0 %] +
+

Added the following scans:

+ [% FOR s IN scans %] +

[%IF s.group %]Group [%END%][% s.id %]: [% IF s.added %]added + [%ELSE%][% s.message %][%END%]

+ [% END %] +
+[% END %] + +[% IF intel.size > 0 %] +
+

Added the following intel:

+ [% FOR i IN intel %] +

[% i %]

+ [% END %] +
+[% END %] + +[% IF intelmessage %] +

Intel message has been forwarrded to intel dept

+[% END %] + +
+
Intel/scans +

Paste scan urls and intel from gal status here

+ +

Tick: + +

+
+
+ +
+
Intel +

Write other messages to intel dept here (sms numbers, relay channels, bots etc) (NOT gal status):

+ +

Subject: + Tick: +

+
+
+ + + diff --git a/templates/addintel.tmpl b/templates/addintel.tmpl deleted file mode 100644 index ad44f26..0000000 --- a/templates/addintel.tmpl +++ /dev/null @@ -1,25 +0,0 @@ - - -

-
-
-
Intel/scans -

Paste scan urls and intel from gal status here

- - - -
Tick: - -
-
- -
-
Intel -

Write other messages to intel dept here (sms numbers, relay channels, bots etc) (NOT gal status):

- - - -
Subject: - -
-
-- 2.39.2