X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=NDWeb%2FPages%2FMain.pm;h=083b96da133a0fb365905090a9661e197b19ccfa;hb=da77e07d9a4ac17a25796a0b897a03f4853ba341;hp=8bcbdc4b6cc8f7df549dc452bfe4e51673280752;hpb=2a86de01949110d5f64e38ca2f95e83d16555874;p=ndwebbie.git diff --git a/NDWeb/Pages/Main.pm b/NDWeb/Pages/Main.pm index 8bcbdc4..083b96d 100644 --- a/NDWeb/Pages/Main.pm +++ b/NDWeb/Pages/Main.pm @@ -116,11 +116,7 @@ sub render_body { $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); @@ -141,11 +137,11 @@ sub render_body { $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 @@ -156,13 +152,12 @@ sub render_body { 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+)}{$1}g; @@ -175,9 +170,7 @@ sub render_body { }else{ $call->{covered} = 'Hostile'; } - $i++; - $call->{ODD} = $i % 2; - $call->{shiptype} = escapeHTML($call->{shiptype}); + $call->{shiptype} = $call->{shiptype}; push @calls, $call; } $BODY->param(Calls => \@calls); @@ -215,26 +208,23 @@ sub render_body { $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; @@ -244,6 +234,29 @@ ORDER BY x,y,z,mission,tick $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; }