From 62e8f0d857b12761d85b8c97ffab2bc02d4b6777 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Fri, 4 Apr 2008 12:39:39 +0200 Subject: [PATCH] Storing government for planets --- NDWeb/Pages/Check.pm | 2 +- NDWeb/Pages/Intel.pm | 19 +++++++++++++++++-- database/gov.sql | 19 +++++++++++++++++++ templates/check.tmpl | 3 ++- templates/intel.tmpl | 8 ++++++++ 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 database/gov.sql diff --git a/NDWeb/Pages/Check.pm b/NDWeb/Pages/Check.pm index 88e37e6..a0062ab 100644 --- a/NDWeb/Pages/Check.pm +++ b/NDWeb/Pages/Check.pm @@ -78,7 +78,7 @@ sub render_body { $extra_columns = ", planet_status,hit_us, alliance,relationship"; } - my $query = $DBH->prepare(qq{Select p.id,coords(x,y,z), ((ruler || ' OF ') || p.planet) as planet,race, + my $query = $DBH->prepare(qq{Select p.id,coords(x,y,z), ((ruler || ' OF ') || p.planet) as planet,race,gov, size, size_gain, size_gain_day, score,score_gain,score_gain_day, value,value_gain,value_gain_day, diff --git a/NDWeb/Pages/Intel.pm b/NDWeb/Pages/Intel.pm index bd9777a..a5dfc5e 100644 --- a/NDWeb/Pages/Intel.pm +++ b/NDWeb/Pages/Intel.pm @@ -48,7 +48,7 @@ sub render_body { my $planet; 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,ftid FROM current_planet_stats + my $query = $DBH->prepare(q{SELECT x,y,z,coords(x,y,z),id, nick, alliance,alliance_id, planet_status,channel,ftid,gov FROM current_planet_stats WHERE x = ? AND y = ? AND z = ?}); $planet = $DBH->selectrow_hashref($query,undef,$1,$2,$3) or $ND::ERROR .= p $DBH->errstr; } @@ -127,6 +127,16 @@ sub render_body { $error .= "

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

"; } } + if (param('cgov')){ + my $value = escapeHTML(param('gov')); + if ($DBH->do(q{UPDATE planets SET gov = ? WHERE id =?} + ,undef,$value,$planet->{id})){ + intel_log $ND::UID,$planet->{id},"Set government to: $value"; + $planet->{gov} = $value; + }else{ + $error .= "

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

"; + } + } if (param('calliance')){ if ($DBH->do(q{UPDATE planets SET alliance_id = NULLIF(?,-1) WHERE id =?} ,undef,param('alliance'),$planet->{id})){ @@ -157,9 +167,14 @@ sub render_body { $BODY->param(Planet => $planet->{id}); $BODY->param(Nick => escapeHTML($planet->{nick})); $BODY->param(Channel => $planet->{channel}); + my @gov; + for my $gov ("","Feu", "Dic", "Dem","Uni"){ + push @gov,{Gov => $gov, Selected => $gov eq $planet->{gov}} + } + $BODY->param(Gov => \@gov); my @status; for my $status ("","Friendly", "NAP", "Hostile"){ - push @status,{Status => $status, Selected => defined $planet->{planet_status} && $status eq $planet->{planet_status}} + push @status,{Status => $status, Selected => $status eq $planet->{planet_status}} } $BODY->param(PlanetStatus => \@status); my @alliances = alliances($planet->{alliance_id}); diff --git a/database/gov.sql b/database/gov.sql new file mode 100644 index 0000000..5c0149c --- /dev/null +++ b/database/gov.sql @@ -0,0 +1,19 @@ +DROP VIEW current_planet_stats_full; +DROP VIEW current_planet_stats; + +CREATE TYPE governments AS ENUM ('','Feu','Dic','Dem','Uni'); + +ALTER TABLE planets ADD COLUMN gov governments NOT NULL DEFAULT ''::governments; + +CREATE VIEW current_planet_stats AS + SELECT p.id, p.nick, p.planet_status, p.hit_us, ps.x, ps.y, ps.z, p.ruler, p.planet, p.race, ps.size, ps.score, ps.value, ps.xp, ps.sizerank, ps.scorerank, ps.valuerank, ps.xprank, alliances.name AS alliance, alliances.relationship, p.alliance_id, p.channel, p.ftid, p.gov + FROM (SELECT planet_stats.id, planet_stats.tick, planet_stats.x, planet_stats.y, planet_stats.z, planet_stats.size, planet_stats.score, planet_stats.value, planet_stats.xp, planet_stats.sizerank, planet_stats.scorerank, planet_stats.valuerank, planet_stats.xprank FROM planet_stats WHERE (planet_stats.tick = (SELECT max(planet_stats.tick) AS max FROM planet_stats))) ps + NATURAL JOIN planets p + LEFT JOIN alliances ON alliances.id = p.alliance_id; + + +CREATE VIEW current_planet_stats_full AS + SELECT p.id, p.nick, p.planet_status, p.hit_us, ps.x, ps.y, ps.z, p.ruler, p.planet, p.race, ps.size, ps.score, ps.value, ps.xp, ps.sizerank, ps.scorerank, ps.valuerank, ps.xprank, alliances.name AS alliance, alliances.relationship, p.alliance_id, p.channel, p.ftid, ps.size_gain, ps.score_gain, ps.value_gain, ps.xp_gain, ps.sizerank_gain, ps.scorerank_gain, ps.valuerank_gain, ps.xprank_gain, ps.size_gain_day, ps.score_gain_day, ps.value_gain_day, ps.xp_gain_day, ps.sizerank_gain_day, ps.scorerank_gain_day, ps.valuerank_gain_day, ps.xprank_gain_day,p.gov + FROM (SELECT planet_stats.id, planet_stats.tick, planet_stats.x, planet_stats.y, planet_stats.z, planet_stats.size, planet_stats.score, planet_stats.value, planet_stats.xp, planet_stats.sizerank, planet_stats.scorerank, planet_stats.valuerank, planet_stats.xprank, planet_stats.size_gain, planet_stats.score_gain, planet_stats.value_gain, planet_stats.xp_gain, planet_stats.sizerank_gain, planet_stats.scorerank_gain, planet_stats.valuerank_gain, planet_stats.xprank_gain, planet_stats.size_gain_day, planet_stats.score_gain_day, planet_stats.value_gain_day, planet_stats.xp_gain_day, planet_stats.sizerank_gain_day, planet_stats.scorerank_gain_day, planet_stats.valuerank_gain_day, planet_stats.xprank_gain_day FROM planet_stats WHERE (planet_stats.tick = (SELECT max(planet_stats.tick) AS max FROM planet_stats))) ps + NATURAL JOIN planets p + LEFT JOIN alliances ON alliances.id = p.alliance_id; diff --git a/templates/check.tmpl b/templates/check.tmpl index 3270812..37be110 100644 --- a/templates/check.tmpl +++ b/templates/check.tmpl @@ -36,7 +36,7 @@ - + @@ -50,6 +50,7 @@ + diff --git a/templates/intel.tmpl b/templates/intel.tmpl index 080233b..fca56eb 100644 --- a/templates/intel.tmpl +++ b/templates/intel.tmpl @@ -40,6 +40,14 @@ + + + +
Rank
SizeScoreValue XPCoordsPlanetRaceSizeScoreValue
SizeScoreValue XPCoordsPlanetRaceGovSizeScoreValue XPFleet (Resource) valueNickHit usAlliance
<TMPL_VAR NAME=SizeImg> <TMPL_VAR NAME=ScoreImg> <TMPL_VAR NAME=ValueImg>
Government
Planet status