From 85d8a494df2ada3f891653a950246046d23a981d Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Sun, 12 Jul 2009 18:57:09 +0200 Subject: [PATCH] List of members with their ranks --- lib/NDWeb/Controller/Members.pm | 38 +++++++++++++++++++++++++++++++++ root/lib/site/leftbar.tt2 | 3 ++- root/src/members/stats.tt2 | 29 +++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 root/src/members/stats.tt2 diff --git a/lib/NDWeb/Controller/Members.pm b/lib/NDWeb/Controller/Members.pm index ae1e8e6..10e8fbd 100644 --- a/lib/NDWeb/Controller/Members.pm +++ b/lib/NDWeb/Controller/Members.pm @@ -268,6 +268,44 @@ ORDER BY } . "$order $limit" $c->stash(members => $query->fetchall_arrayref({})); } +sub stats : Local { + my ( $self, $c, $order ) = @_; + my $dbh = $c->model; + + if ($order ~~ /^(scre|value|xp|size|race)$/){ + $order = "$1rank"; + }else{ + $order = 'scorerank'; + } + $order .= ',race' if $order eq 'racerank'; + + my $limit = 'LIMIT 10'; + $limit = '' if $c->check_user_roles(qw/members_points_nolimit/); + + my ($races) = $dbh->selectrow_array(q{SELECT enum_range(null::race)::text[]}); + $c->stash(races => $races); + my $query = $dbh->prepare(q{ +SELECT nick + ,rank() OVER(ORDER BY score DESC) AS scorerank + ,rank() OVER(ORDER BY value DESC) AS valuerank + ,rank() OVER(ORDER BY xp DESC) AS xprank + ,rank() OVER(ORDER BY size DESC) AS sizerank + ,rank() OVER(PARTITION BY race ORDER BY score DESC) AS racerank + ,race +FROM current_planet_stats +WHERE alliance = 'NewDawn' + AND race = ANY($1) +ORDER BY } . "$order $limit"); + my @race = $c->req->param('race'); + my %race = map { $_ => 1 } @race; + $c->stash(race => \%race); + unless (@race){ + @race = @$races; + } + $query->execute(\@race); + $c->stash(members => $query->fetchall_arrayref({})); +} + sub addintel : Local { my ( $self, $c, $order ) = @_; diff --git a/root/lib/site/leftbar.tt2 b/root/lib/site/leftbar.tt2 index 6a27119..dee6aab 100644 --- a/root/lib/site/leftbar.tt2 +++ b/root/lib/site/leftbar.tt2 @@ -52,7 +52,8 @@ [% IF user.attacker %]

Member menu