--- /dev/null
+DROP VIEW IF EXISTS full_intel;
+CREATE VIEW full_intel AS
+SELECT s.alliance AS salliance ,coords(s.x,s.y,s.z) AS scoords, i.sender, s.nick AS snick
+ ,t.alliance AS talliance,coords(t.x,t.y,t.z) AS tcoords, i.target, t.nick AS tnick
+ ,i.mission, i.tick, MIN(i.eta) AS eta, i.amount, i.ingal
+ ,uid,u.username
+FROM intel i
+ JOIN users u USING (uid)
+ JOIN current_planet_stats t ON i.target = t.pid
+ JOIN current_planet_stats s ON i.sender = s.pid
+GROUP BY i.tick,i.mission,t.x,t.y,t.z,s.x,s.y,s.z,i.amount,i.ingal,u.username,uid
+ ,t.alliance,s.alliance,t.nick,s.nick,i.sender,i.target
+;
use warnings;
use parent 'Catalyst::Controller';
-use NDWeb::Include;
-
=head1 NAME
NDWeb::Controller::Alliances - Catalyst Controller
my $ticks = $c->req->param('ticks') || 48;
$c->stash(showticks => $ticks);
- $query = $dbh->prepare(intelquery q{
- o.alliance AS oalliance ,coords(o.x,o.y,o.z) AS ocoords, i.sender
- ,t.alliance AS talliance,coords(t.x,t.y,t.z) AS tcoords, i.target
- },q{NOT ingal AND (o.alliance = $1 OR t.alliance = $1)
- AND (i.mission = 'Defend' OR i.mission = 'AllyDef')
- AND COALESCE( t.alliance != o.alliance, TRUE)
- AND i.tick > (tick() - $2)
+ $query = $dbh->prepare(q{
+SELECT salliance, scoords, sender, talliance, tcoords, target
+ ,mission, tick AS landingtick, eta, amount, ingal, username
+FROM full_intel
+WHERE NOT ingal AND (salliance = $1 OR talliance = $1)
+ AND (mission = 'Defend' OR mission = 'AllyDef')
+ AND COALESCE( talliance <> salliance, TRUE)
+ AND tick > (tick() - $2)
+ORDER BY tick DESC, mission
});
$query->execute($a->{name}, $ticks);
$c->stash(intel => $query->fetchall_arrayref({}) );
my $ticks = $c->req->param('ticks') || 48;
$c->stash(showticks => $ticks);
- my $query = $dbh->prepare(intelquery q{
- o.alliance AS oalliance ,coords(o.x,o.y,o.z) AS ocoords, i.sender
- ,t.alliance AS talliance,coords(t.x,t.y,t.z) AS tcoords, i.target
- },q{not ingal
- AND ((COALESCE( t.alliance != o.alliance,TRUE) AND (i.mission = 'Defend' OR i.mission = 'AllyDef' ))
- OR ( t.alliance = o.alliance AND i.mission = 'Attack'))
- AND i.tick > (tick() - $1)
+ my $query = $dbh->prepare(q{
+SELECT salliance, scoords, sender, talliance, tcoords, target
+ ,mission, tick AS landingtick, eta, amount, ingal, username
+FROM full_intel
+WHERE NOT ingal AND tick > (tick() - $1)
+ AND ((COALESCE( talliance <> salliance,TRUE) AND (mission = 'Defend' OR mission = 'AllyDef' ))
+ OR ( talliance = salliance AND mission = 'Attack'))
+ORDER BY tick DESC, mission
});
$query->execute($ticks);
$c->stash(intel => $query->fetchall_arrayref({}) );
$c->stash(govs => ["","Feu", "Dic", "Dem","Uni"]);
$c->stash(planetstatus => ["","Friendly", "NAP", "Hostile"]);
- $query = $dbh->prepare(intelquery q{i.sender
- ,o.alliance AS oalliance,coords(o.x,o.y,o.z) AS ocoords
- },q{i.target = $1 AND i.tick > (tick() - $2)});
+ $query = $dbh->prepare(q{
+SELECT salliance, scoords, sender
+ ,mission, tick AS landingtick, eta, amount, ingal, username
+FROM full_intel
+WHERE target = $1 AND tick > (tick() - $2)
+ORDER BY tick DESC, mission
+ });
$query->execute($id,$ticks);
$c->stash(incoming => $query->fetchall_arrayref({}) );
- $query = $dbh->prepare(intelquery q{i.target
- ,t.alliance AS talliance,coords(t.x,t.y,t.z) AS tcoords
- },q{i.sender = $1 AND i.tick > (tick() - $2)});
+ $query = $dbh->prepare(q{
+SELECT talliance, tcoords, target
+ ,mission, tick AS landingtick, eta, amount, ingal, username
+FROM full_intel
+WHERE sender = $1 AND tick > (tick() - $2)
+ORDER BY tick DESC, mission
+ });
$query->execute($id,$ticks);
$c->stash(outgoing => $query->fetchall_arrayref({}) );
our @ISA = qw/Exporter/;
our @EXPORT = qw/parseMarkup
- intelquery html_escape
+ html_escape
comma_value array_expand/;
sub html_escape($) {
return $text;
}
-sub intelquery {
- my ($columns,$where) = @_;
- return qq{
-SELECT $columns, i.mission, i.tick AS landingtick,MIN(i.eta) AS eta, i.amount, i.ingal, u.username
-FROM (intel i NATURAL JOIN users u)
- JOIN current_planet_stats t ON i.target = t.pid
- JOIN current_planet_stats o ON i.sender = o.pid
-WHERE $where
-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.alliance,o.alliance,t.nick,o.nick,i.sender,i.target
-ORDER BY i.tick DESC, i.mission};
-}
-
sub array_expand ($) {
my ($array) = @_;
</tr>
[% FOR i IN intel %]
<tr class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
- <td>[% i.oalliance %]</td>
- <td><a href="[% c.uri_for('/intel/planet',i.sender) %]">[% i.ocoords %]</a></td>
+ <td>[% i.salliance %]</td>
+ <td><a href="[% c.uri_for('/intel/planet',i.sender) %]">[% i.scoords %]</a></td>
<td class="[% i.mission %]">[% i.mission %]</td>
<td align="center">[% i.landingtick %]</td>
<td align="center">[% i.eta %]</td>
</tr>
[% FOR i IN intel %]
<tr class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
- <td>[% i.oalliance %]</td>
- <td><a href="[% c.uri_for('planet',i.sender) %]">[% i.ocoords %]</a></td>
+ <td>[% i.salliance %]</td>
+ <td><a href="[% c.uri_for('planet',i.sender) %]">[% i.scoords %]</a></td>
<td class="[% i.mission %]">[% i.mission %]</td>
<td align="center">[% i.landingtick %]</td>
<td align="center">[% i.eta %]</td>
</tr>
[% FOR i IN incoming %]
<tr class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
- <td>[% i.oalliance %]</td>
- <td><a href="[% c.uri_for('planet',i.sender) %]">[% i.ocoords %]</a></td>
+ <td>[% i.salliance %]</td>
+ <td><a href="[% c.uri_for('planet',i.sender) %]">[% i.scoords %]</a></td>
<td class="[% i.ingal ? 'ingal' : i.mission %]">[% i.mission %]</td>
<td align="center">[% i.landingtick %]</td>
<td align="center">[% i.eta %]</td>