From 354c2fb813a139fb08476b6d0e7f30308091038a Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Fri, 29 Dec 2006 15:05:48 +0000 Subject: [PATCH] fatal warnings --- ND.pm | 11 +++---- ND/Include.pm | 71 ++++++++++++++++++++++++++++++++++++++++++- addintel.pl | 2 ++ check.pl | 10 +++--- covop.pl | 2 ++ defrequest.pl | 2 ++ launchConfirmation.pl | 2 ++ main.pl | 4 ++- points.pl | 2 ++ raids.pl | 69 ++--------------------------------------- templates/xml.tmpl | 1 + top100.pl | 2 ++ users.pl | 6 +++- 13 files changed, 104 insertions(+), 80 deletions(-) diff --git a/ND.pm b/ND.pm index d62a7ea..0f21c89 100755 --- a/ND.pm +++ b/ND.pm @@ -56,7 +56,7 @@ sub handler { 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'; @@ -98,11 +98,10 @@ sub page { $ND::BODY->param(PAGE => $ND::PAGE); } - unless (my $return = do "$ND::PAGE.pl"){ - $error .= "

couldn't parse $ND::page: $@

" if $@; - $error .= "

couldn't do $ND::page: $!

" unless defined $return; - $error .= "

couldn't run $ND::page

" unless $return; + $error .= "

couldn't parse $ND::PAGE: $@

" if $@; + $error .= "

couldn't do $ND::PAGE: $!

" unless defined $return && defined $!; + $error .= "

couldn't run $ND::PAGE

" unless $return; } unless ($XML){ @@ -120,9 +119,9 @@ sub page { $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); diff --git a/ND/Include.pm b/ND/Include.pm index a01a37f..96f64da 100644 --- a/ND/Include.pm +++ b/ND/Include.pm @@ -25,7 +25,7 @@ require Exporter; 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}; @@ -120,4 +120,73 @@ GROUP BY i.tick,i.mission,t.x,t.y,t.z,o.x,o.y,o.z,i.amount,i.ingal,u.username,t. 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; diff --git a/addintel.pl b/addintel.pl index a2e43ec..28d7d0e 100644 --- a/addintel.pl +++ b/addintel.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'Add Intel and Scans'); diff --git a/check.pl b/check.pl index 788e938..9acf9bf 100644 --- a/check.pl +++ b/check.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'Check planets and galaxies'); @@ -121,7 +123,7 @@ ORDER BY p.x,p.y,p.z}); $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{

Value the last 24 ticks

@@ -138,8 +140,8 @@ ORDER BY p.x,p.y,p.z}); $scan .= q{}; 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{

Previous Coords

}; $query->execute($planet_id); @@ -155,7 +157,7 @@ ORDER BY p.x,p.y,p.z}); $scan .= q{
TickValueDifference
}; 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; diff --git a/covop.pl b/covop.pl index 0614da0..0d67089 100644 --- a/covop.pl +++ b/covop.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'CovOp Targets'); diff --git a/defrequest.pl b/defrequest.pl index 07c68c1..eb90f65 100644 --- a/defrequest.pl +++ b/defrequest.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'Request Defense'); diff --git a/launchConfirmation.pl b/launchConfirmation.pl index 1d8caaf..7e56eed 100644 --- a/launchConfirmation.pl +++ b/launchConfirmation.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'Launch Confirmation'); diff --git a/main.pl b/main.pl index 20a1607..4c8dfab 100644 --- a/main.pl +++ b/main.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'Main Page'); @@ -128,7 +130,7 @@ if ($planet){ } -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 diff --git a/points.pl b/points.pl index 6d33689..95845fa 100644 --- a/points.pl +++ b/points.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'Top Members'); diff --git a/raids.pl b/raids.pl index 4480d6b..b131fe5 100644 --- a/raids.pl +++ b/raids.pl @@ -18,79 +18,14 @@ #**************************************************************************/ 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 = ?)}); diff --git a/templates/xml.tmpl b/templates/xml.tmpl index a3acc24..09c1ee8 100644 --- a/templates/xml.tmpl +++ b/templates/xml.tmpl @@ -1,2 +1,3 @@ + diff --git a/top100.pl b/top100.pl index 455312c..1a7d2e4 100644 --- a/top100.pl +++ b/top100.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); $ND::TEMPLATE->param(TITLE => 'Top100 '); diff --git a/users.pl b/users.pl index 6298808..20687a5 100644 --- a/users.pl +++ b/users.pl @@ -18,6 +18,8 @@ #**************************************************************************/ use strict; +use warnings FATAL => 'all'; +no warnings qw(uninitialized); use POSIX; our $BODY; our $DBH; @@ -34,10 +36,11 @@ if (param('user') =~ /^(\d+)$/){ 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 .= "

Something went wrong: ".$DBH->errstr."

"; +}) or $error .= "

Something went wrong:

"; $user = $DBH->selectrow_hashref($query,undef,$1) or $error.= "

Something went wrong: ".$DBH->errstr."

"; } + if ($user && param('cmd') eq 'change'){ $DBH->begin_work; for my $param (param()){ @@ -68,6 +71,7 @@ if ($user && param('cmd') eq 'change'){ $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'){ -- 2.39.2