sub page {
our $DBH = ND::DB::DB();
our $USER = $ENV{'REMOTE_USER'};
- my $error;# = $ND::r->param('page');
+ my $error = '';
chdir '/var/www/ndawn/code';
$ND::BODY->param(PAGE => $ND::PAGE);
}
-
unless (my $return = do "$ND::PAGE.pl"){
- $error .= "<p><b>couldn't parse $ND::page: $@</b></p>" if $@;
- $error .= "<p><b>couldn't do $ND::page: $!</b></p>" unless defined $return;
- $error .= "<p><b>couldn't run $ND::page</b></p>" unless $return;
+ $error .= "<p><b>couldn't parse $ND::PAGE: $@</b></p>" if $@;
+ $error .= "<p><b>couldn't do $ND::PAGE: $!</b></p>" unless defined $return && defined $!;
+ $error .= "<p><b>couldn't run $ND::PAGE</b></p>" unless $return;
}
unless ($XML){
$ND::TEMPLATE->param(Targets => listTargets());
}
$TEMPLATE->param(Coords => param('coords') ? param('coords') : '1:1:1');
- $TEMPLATE->param(Error => $error);
}
+ $TEMPLATE->param(Error => $error);
$ND::TEMPLATE->param(BODY => $ND::BODY->output);
my $output = $TEMPLATE->output;
print header(-type=> $type, -charset => 'utf-8', -Content_Length => length $output);
our @ISA = qw/Exporter/;
our @EXPORT = qw/isMember isHC isDC isBC isOfficer isScanner isIntel parseMarkup min max listTargets
- alliances intelquery/;
+ alliances intelquery generateClaimXml/;
sub isMember {
return exists $ND::GROUPS{Members};
ORDER BY i.tick DESC, i.mission};
}
+
+sub generateClaimXml {
+ my ($raid, $from, $target) = @_;
+
+ my ($timestamp) = $ND::DBH->selectrow_array("SELECT MAX(modified)::timestamp AS modified FROM raid_targets");
+ $ND::BODY->param(Timestamp => $timestamp);
+ if ($target){
+ $target = "r.id = $target";
+ $_ = listTargets();
+ $ND::BODY->param(TargetList => $_);
+ }else{
+ $target = "r.raid = $raid->{id}";
+ }
+
+ if ($from){
+ $from = "AND modified > '$from'";
+ }else{
+ $from = '';
+ }
+ my $targets = $ND::DBH->prepare(qq{SELECT r.id,r.planet FROM raid_targets r WHERE $target $from});
+ $targets->execute or print p($ND::DBH->errstr);
+ my $claims = $ND::DBH->prepare(qq{ SELECT username,joinable,launched FROM raid_claims
+ NATURAL JOIN users WHERE target = ? AND wave = ?});
+ my @targets;
+ while (my $target = $targets->fetchrow_hashref){
+ my %target;
+ $target{Id} = $target->{id};
+ $target{Coords} = $target->{id};
+ my @waves;
+ for (my $i = 1; $i <= $raid->{waves}; $i++){
+ my %wave;
+ $wave{Id} = $i;
+ $claims->execute($target->{id},$i);
+ my $joinable = 0;
+ my $claimers;
+ if ($claims->rows != 0){
+ my $owner = 0;
+ my @claimers;
+ while (my $claim = $claims->fetchrow_hashref){
+ $owner = 1 if ($ND::USER eq $claim->{username});
+ $joinable = 1 if ($claim->{joinable});
+ $claim->{username} .= '*' if ($claim->{launched});
+ push @claimers,$claim->{username};
+ }
+ $claimers = join '/', @claimers;
+ if ($owner){
+ $wave{Command} = 'Unclaim';
+ if ($raid->{released_coords}){
+ $target{Coords} = $ND::DBH->selectrow_array('SELECT coords(x,y,z) FROM current_planet_stats WHERE id = ?',undef,$target->{planet});
+ }
+ }elsif ($joinable){
+ $wave{Command} = 'Join';
+ }else{
+ $wave{Command} = 'none';
+ }
+ }else{
+ #if (!isset($planet) || ($target->value/$planet->value > 0.4 || $target->score/$planet->score > 0.4))
+ $wave{Command} = 'Claim';
+ }
+ $wave{Claimers} = $claimers;
+ $wave{Joinable} = $joinable;
+ push @waves,\%wave;
+ }
+ $target{Waves} = \@waves;
+ push @targets,\%target;
+ }
+ $ND::BODY->param(Targets => \@targets);
+}
+
1;
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'Add Intel and Scans');
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'Check planets and galaxies');
$BODY->param(Missions => \@missions);
my @scans;
- my $query = $DBH->prepare(q{SELECT value,tick FROM planet_stats
+ $query = $DBH->prepare(q{SELECT value,tick FROM planet_stats
WHERE id = ? AND tick > tick() - 24});
my $scan = q{
<p>Value the last 24 ticks</p>
$scan .= q{</table>};
push @scans, {Scan => $scan};
- my $query = $DBH->prepare(q{SELECT x,y,z,tick FROM planet_stats WHERE id = ?});
- my $scan = q{
+ $query = $DBH->prepare(q{SELECT x,y,z,tick FROM planet_stats WHERE id = ?});
+ $scan = q{
<p>Previous Coords</p>
<table><tr><th>Tick</th><th>Value</th><th>Difference</th></tr>};
$query->execute($planet_id);
$scan .= q{</table>};
push @scans, {Scan => $scan};
- my $query = $DBH->prepare(q{SELECT DISTINCT ON (type) type,scan_id, tick, scan FROM scans WHERE planet = ?
+ $query = $DBH->prepare(q{SELECT DISTINCT ON (type) type,scan_id, tick, scan FROM scans WHERE planet = ?
GROUP BY type,scan_id, tick, scan ORDER BY type,tick DESC});
$query->execute($planet_id);
my %scans;
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'CovOp Targets');
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'Request Defense');
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'Launch Confirmation');
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'Main Page');
}
-my $query = $DBH->prepare(q{SELECT f.fleet,f.id, coords(x,y,z) AS target, mission, sum(fs.amount) AS amount, landing_tick, back
+$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
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'Top Members');
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
use POSIX;
our $BODY;
our $DBH;
our $LOG;
our $XML;
-
-sub generateClaimXml {
- my ($raid, $from, $target) = @_;
-
- my ($timestamp) = $DBH->selectrow_array("SELECT MAX(modified)::timestamp AS modified FROM raid_targets");
- $BODY->param(Timestamp => $timestamp);
- if ($target){
- $target = "r.id = $target";
- $_ = listTargets();
- $BODY->param(TargetList => $_);
- }else{
- $target = "r.raid = $raid->{id}";
- }
-
- if ($from){
- $from = "AND modified > '$from'";
- }
- my $targets = $DBH->prepare(qq{SELECT r.id,r.planet FROM raid_targets r WHERE $target $from});
- $targets->execute;
- my $claims = $DBH->prepare(qq{ SELECT username,joinable,launched FROM raid_claims
- NATURAL JOIN users WHERE target = ? AND wave = ?});
- my @targets;
- while (my $target = $targets->fetchrow_hashref){
- my %target;
- $target{Id} = $target->{id};
- $target{Coords} = $target->{id};
- my @waves;
- for (my $i = 1; $i <= $raid->{waves}; $i++){
- my %wave;
- $wave{Id} = $i;
- $claims->execute($target->{id},$i);
- my $joinable = 0;
- my $claimers;
- if ($claims->rows != 0){
- my $owner = 0;
- my @claimers;
- while (my $claim = $claims->fetchrow_hashref){
- $owner = 1 if ($ND::USER eq $claim->{username});
- $joinable = 1 if ($claim->{joinable});
- $claim->{username} .= '*' if ($claim->{launched});
- push @claimers,$claim->{username};
- }
- $claimers = join '/', @claimers;
- if ($owner){
- $wave{Command} = 'Unclaim';
- if ($raid->{released_coords}){
- $target{Coords} = $DBH->selectrow_array('SELECT coords(x,y,z) FROM current_planet_stats WHERE id = ?',undef,$target->{planet});
- }
- }elsif ($joinable){
- $wave{Command} = 'Join';
- }else{
- $wave{Command} = 'none';
- }
- }else{
- #if (!isset($planet) || ($target->value/$planet->value > 0.4 || $target->score/$planet->score > 0.4))
- $wave{Command} = 'Claim';
- }
- $wave{Claimers} = $claimers;
- $wave{Joinable} = $joinable;
- push @waves,\%wave;
- }
- $target{Waves} = \@waves;
- push @targets,\%target;
- }
- $BODY->param(Targets => \@targets);
-}
-
my $raid;
if (param('raid') =~ /^(\d+)$/){
my $query = $DBH->prepare(q{SELECT id,tick,waves,message,released_coords FROM raids WHERE id = ? AND open AND not removed AND id IN (SELECT raid FROM raid_access NATURAL JOIN groupmembers WHERE uid = ?)});
<?xml version="1.0"?>
+<TMPL_VAR NAME=Error>
<TMPL_VAR NAME=BODY>
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
$ND::TEMPLATE->param(TITLE => 'Top100 ');
#**************************************************************************/
use strict;
+use warnings FATAL => 'all';
+no warnings qw(uninitialized);
use POSIX;
our $BODY;
our $DBH;
SELECT uid,username,hostmask,coords(x,y,z) AS planet,attack_points,defense_points,scan_points,humor_points
FROM users u LEFT OUTER JOIN current_planet_stats p ON u.planet = p.id
WHERE uid = ?;
-}) or $error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
+}) or $error .= "<p> Something went wrong: </p>";
$user = $DBH->selectrow_hashref($query,undef,$1) or $error.= "<p> Something went wrong: ".$DBH->errstr."</p>";
}
+
if ($user && param('cmd') eq 'change'){
$DBH->begin_work;
for my $param (param()){
$groups->execute();
while (my $group = $groups->fetchrow_hashref){
my $query;
+ next unless defined param($group->{gid});
if (param($group->{gid}) eq 'remove'){
$query = $delgroup;
}elsif(param($group->{gid}) eq 'add'){