use strict;
use warnings FATAL => 'all';
-no warnings qw(uninitialized);
-use POSIX;
+use ND::Web::Forum;
+use ND::Include;
+
our $BODY;
our $DBH;
-our $LOG;
+our $ERROR;
my $error;
$ND::TEMPLATE->param(TITLE => 'Intel');
die "You don't have access" unless isIntel() || isHC();
my $planet;
-if (param('coords') =~ /^(\d+)(?: |:)(\d+)(?: |:)(\d+)$/){
+if (defined param('coords') && param('coords') =~ /^(\d+)(?: |:)(\d+)(?: |:)(\d+)$/){
my $query = $DBH->prepare(q{SELECT x,y,z,coords(x,y,z),id, nick, alliance,alliance_id, planet_status,channel FROM current_planet_stats
WHERE x = ? AND y = ? AND z = ?});
$planet = $DBH->selectrow_hashref($query,undef,$1,$2,$3);
}
my $showticks = 'AND (i.tick - i.eta) > (tick() - 48)';
-if (param('show') eq 'all'){
- $showticks = '';
-}elsif (param('show') =~ /^(\d+)$/){
- $showticks = "AND (i.tick - i.eta) > (tick() - $1)";
+if (defined param('show')){
+ if (param('show') eq 'all'){
+ $showticks = '';
+ }elsif (param('show') =~ /^(\d+)$/){
+ $showticks = "AND (i.tick - i.eta) > (tick() - $1)";
+ }
+}
+
+my $thread;
+if (defined $planet){
+ $thread = $DBH->selectrow_hashref(q{SELECT ftid AS id, subject FROM forum_threads
+ where planet = $1},undef,$planet->{id}) or $ERROR .= p($DBH->errstr);
}
-if (param('cmd') eq 'coords'){
+if (defined param('cmd') && param('cmd') eq 'coords'){
my $coords = param('coords');
$DBH->do(q{CREATE TEMPORARY TABLE coordlist (
x integer NOT NULL,
}
$BODY->param(CoordList => \@planets);
}
+if (defined $thread and defined param('cmd') and param('cmd') eq 'forumpost'){
+ addForumPost($DBH,$thread,$ND::UID,param('message'));
+}
-if ($planet){
+if ($planet && defined param('cmd')){
if (param('cmd') eq 'change'){
$DBH->begin_work;
if (param('cnick')){
my $value = escapeHTML(param('nick'));
if ($DBH->do(q{UPDATE planets SET nick = ? WHERE id =?}
,undef,$value,$planet->{id})){
+ intel_log $ND::UID,$planet->{id},"Set nick to: $value";
$planet->{nick} = $value;
}else{
$error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
my $value = escapeHTML(param('channel'));
if ($DBH->do(q{UPDATE planets SET channel = ? WHERE id =?}
,undef,$value,$planet->{id})){
+ intel_log $ND::UID,$planet->{id},"Set channel to: $value";
$planet->{channel} = $value;
}else{
$error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
my $value = escapeHTML(param('status'));
if ($DBH->do(q{UPDATE planets SET planet_status = ? WHERE id =?}
,undef,$value,$planet->{id})){
+ intel_log $ND::UID,$planet->{id},"Set planet_status to: $value";
$planet->{planet_status} = $value;
}else{
$error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
if (param('calliance')){
if ($DBH->do(q{UPDATE planets SET alliance_id = NULLIF(?,-1) WHERE id =?}
,undef,param('alliance'),$planet->{id})){
+ intel_log $ND::UID,$planet->{id},"Set alliance_id to: ".param('alliance');
$planet->{alliance_id} = param('alliance');
}else{
$error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
$BODY->param(Channel => $planet->{channel});
my @status;
for my $status (" ","Friendly", "NAP", "Hostile"){
- push @status,{Status => $status, Selected => $status eq $planet->{planet_status}}
+ push @status,{Status => $status, Selected => defined $planet->{planet_status} && $status eq $planet->{planet_status}}
}
$BODY->param(PlanetStatus => \@status);
my @alliances = alliances($planet->{alliance_id});
$BODY->param(Alliances => \@alliances);
+ $BODY->param(Thread => viewForumThread $thread);
+
my $query = $DBH->prepare(intelquery('o.alliance AS oalliance,coords(o.x,o.y,o.z) AS origin',"t.id = ? $showticks"));
$query->execute($planet->{id}) or $error .= $DBH->errstr;
my @intellists;
$message->{message} = parseMarkup($message->{message});
push @messages,$message;
}
-$BODY->param(IntelMessages => \@messages);
+#$BODY->param(IntelMessages => \@messages);
$BODY->param(Error => $error);
1;