$query->execute($1,$2,$3,$ND::UID);
}
- my ($motd) = $DBH->selectrow_array("SELECT value FROM misc WHERE id='MOTD'");
-
- $BODY->param(MOTD => parseMarkup($motd));
$BODY->param(isMember => $self->isMember());
- $BODY->param(isHC => $self->isHC());
my @groups = map {name => $_}, sort keys %{$self->{GROUPS}};
$BODY->param(Groups => \@groups);
$BODY->param(Planet => $planet);
my $calls = $DBH->prepare(qq{
- SELECT id,landing_tick,dc,curreta,
+ SELECT id,landing_tick,dc,curreta,covered,
TRIM('/' FROM concat(DISTINCT race||' /')) AS race, TRIM('/' FROM concat(amount||' /')) AS amount,
TRIM('/' FROM concat(DISTINCT eta||' /')) AS eta, TRIM('/' FROM concat(DISTINCT shiptype||' /')) AS shiptype,
TRIM('/' FROM concat(coords||' /')) AS attackers
- FROM (SELECT c.id,p.x,p.y,p.z, u.defense_points, c.landing_tick, dc.username AS dc,
+ FROM (SELECT c.id,p.x,p.y,p.z, u.defense_points, c.landing_tick, dc.username AS dc,covered,
(c.landing_tick - tick()) AS curreta,p2.race, i.amount, i.eta, i.shiptype, p2.alliance,
coords(p2.x,p2.y,p2.z), COUNT(DISTINCT f.id) AS fleets
FROM calls c
LEFT OUTER JOIN users dc ON c.dc = dc.uid
LEFT OUTER JOIN fleets f ON f.target = u.planet AND f.tick = c.landing_tick AND f.back = f.tick + f.eta - 1
WHERE u.uid = ? AND c.landing_tick >= tick()
- GROUP BY c.id, p.x,p.y,p.z, c.landing_tick, u.defense_points,dc.username,p2.race,i.amount,i.eta,i.shiptype,p2.alliance,p2.x,p2.y,p2.z) a
- GROUP BY id, x,y,z,landing_tick, defense_points,dc,curreta,fleets
+ GROUP BY c.id, p.x,p.y,p.z, c.landing_tick, u.defense_points,dc.username,covered,p2.race,i.amount,i.eta,i.shiptype,p2.alliance,p2.x,p2.y,p2.z) a
+ GROUP BY id, x,y,z,landing_tick, defense_points,dc,covered,curreta,fleets
ORDER BY landing_tick DESC
})or warn $DBH->errstr;
$calls->execute($ND::UID) or warn $DBH->errstr;
- my $i = 0;
my @calls;
while (my $call = $calls->fetchrow_hashref){
$call->{attackers} =~ s{(\d+:\d+:\d+)}{<a href="/check?coords=$1">$1</a>}g;
}else{
$call->{covered} = 'Hostile';
}
- $i++;
- $call->{ODD} = $i % 2;
$call->{shiptype} = $call->{shiptype};
push @calls, $call;
}
$query = $DBH->prepare(q{SELECT f.id, coords(x,y,z) AS target, mission
, f.amount, tick, back
FROM fleets f
-JOIN fleet_ships fs USING (id)
LEFT OUTER JOIN current_planet_stats p ON f.target = p.id
-WHERE f.uid = ? AND f.sender = ? AND
+WHERE NOT ingal AND f.uid = ? AND f.sender = ? AND
(back >= ? OR (tick >= tick() - 24 AND name = 'Main'))
GROUP BY f.id, x,y,z, mission, tick,back,f.amount
ORDER BY x,y,z,mission,tick
});
- my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships where id = ?});
+ my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships
+ WHERe id = ? ORDER BY num
+ });
$query->execute($self->{UID},$self->{PLANET},$self->{TICK}) or warn $DBH->errstr;
my @fleets;
- $i = 0;
while (my $fleet = $query->fetchrow_hashref){
- $fleet->{ODD} = $i++ % 2;
my @ships;
$ships->execute($fleet->{id});
- my $j = 0;
while (my $ship = $ships->fetchrow_hashref){
- $ship->{ODD} = $j++ % 2;
push @ships,$ship;
}
$fleet->{ships} = \@ships;
$BODY->param(SMS => $sms);
$BODY->param(Hostname => $hostname);
+
+ if ($self->isMember()){
+ my $announcements = $DBH->prepare(q{SELECT ft.ftid AS id,u.username,ft.subject,
+ count(NULLIF(COALESCE(fp.time > ftv.time,TRUE),FALSE)) AS unread,count(fp.fpid) AS posts,
+ date_trunc('seconds',max(fp.time)::timestamp) as last_post,
+ min(fp.time)::date as posting_date, ft.sticky
+ FROM forum_threads ft JOIN forum_posts fp USING (ftid)
+ JOIN users u ON u.uid = ft.uid
+ LEFT OUTER JOIN (SELECT * FROM forum_thread_visits WHERE uid = $1) ftv ON ftv.ftid = ft.ftid
+ WHERE ft.fbid = 1
+ GROUP BY ft.ftid, ft.subject,ft.sticky,u.username
+ HAVING count(NULLIF(COALESCE(ft.sticky OR fp.time > ftv.time,TRUE),FALSE)) >= $2
+ ORDER BY sticky DESC,last_post DESC
+ });
+ $announcements->execute($ND::UID,1) or warn $DBH->errstr;
+ my @threads;
+ while (my $thread = $announcements->fetchrow_hashref){
+ push @threads,$thread;
+ }
+ $BODY->param(Announcements => \@threads);
+ }
+
+
return $BODY;
}