X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=ND%2FWeb%2FPages%2FPoints.pm;h=04c17dd4fa8f9f0cd3b322f21a7419a27d87164f;hb=0879282588fe6070eab80acaf29f79a6ed75d124;hp=30512fbdfe5131be97c3bc0a41173ea4033cac29;hpb=9ce5a8529e75cb109ed9ba3fc788c94ef47b1080;p=ndwebbie.git diff --git a/ND/Web/Pages/Points.pm b/ND/Web/Pages/Points.pm index 30512fb..04c17dd 100644 --- a/ND/Web/Pages/Points.pm +++ b/ND/Web/Pages/Points.pm @@ -23,23 +23,21 @@ use warnings FATAL => 'all'; use CGI qw/:standard/; use ND::Web::Include; -$ND::PAGES{points} = {parse => \&parse, process => \&process, render=> \&render}; +use base qw/ND::Web::XMLPage/; -sub parse { -} - -sub process { +$ND::Web::Page::PAGES{points} = __PACKAGE__; -} -sub render { - my ($DBH,$BODY) = @_; - $ND::TEMPLATE->param(TITLE => 'Top Members'); +sub render_body { + my $self = shift; + my ($BODY) = @_; + $self->{TITLE} = 'Top Members'; + my $DBH = $self->{DBH}; - return $ND::NOACCESS unless isMember(); + return $self->noAccess unless $self->isMember; my $type = "total"; - if (defined param('type') && param('type') =~ /^(defense|attack|total|humor|scan|rank)$/){ + if (defined param('type') && param('type') =~ /^(defense|attack|total|humor|scan|rank|raid)$/){ $type = $1; } $type .= '_points' unless ($type eq 'rank'); @@ -48,16 +46,21 @@ sub render { $order = 'ASC' if ($type eq 'rank'); my $limit = 'LIMIT 10'; - $limit = '' if isHC(); + $limit = '' if $self->isHC; - my $query = $DBH->prepare("SELECT username,defense_points,attack_points,scan_points,humor_points, (attack_points+defense_points+scan_points/20) as total_points, rank FROM users WHERE uid IN (SELECT uid FROM groupmembers WHERE gid = 2) ORDER BY $type $order $limit"); + my $query = $DBH->prepare(qq{SELECT username,defense_points,attack_points,scan_points,humor_points + ,(attack_points+defense_points+scan_points/20) as total_points, rank, count(NULLIF(rc.launched,FALSE)) AS raid_points + FROM users u LEFT OUTER JOIN raid_claims rc USING (uid) + WHERE uid IN (SELECT uid FROM groupmembers WHERE gid = 2) + GROUP BY username,defense_points,attack_points,scan_points,humor_points,rank + ORDER BY $type $order $limit}); $query->execute; my @members; my $i = 0; - while (my ($username,$defense,$attack,$scan,$humor,$total,$rank) = $query->fetchrow){ + while (my ($username,$defense,$attack,$scan,$humor,$total,$rank,$raid) = $query->fetchrow){ $i++; - push @members,{Username => $username, Defense => $defense, Attack => $attack + push @members,{Username => $username, Defense => $defense, Attack => $attack, Raid => $raid , Scan => $scan, Humor => $humor, Total => $total, Rank => $rank, ODD => $i % 2}; } $BODY->param(Members => \@members);