$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 ) = @_;
[% IF user.attacker %]
<p>Member menu</p>
<ul class="linkbar">
- <li><a href="/members/points">Top members</a></li>
+ <li><a href="/members/points">Top points</a></li>
+ <li><a href="/members/stats">Top ranks</a></li>
<li><a href="/members/addintel">Add intel/scans</a></li>
<li><a href="/members/launchConfirmation">Launch confirmation</a></li>
<li><a href="/members/ircrequest">IRC request</a></li>
--- /dev/null
+[% META title = 'Top members' %]
+<form method="get" action="">
+[% FOR r IN races %]
+[% r %]:<input type="checkbox" name="race" value="[% r %]"[% IF race.exists(r) %] checked[% END %]>
+[% END %]
+<input type="submit" value="Submit">
+</form>
+<table>
+ <tr>
+ <th>User</th>
+ <th><a href="[% c.uri_for('stats','score',c.req.params) %]">Score</a></th>
+ <th><a href="[% c.uri_for('stats','value',c.req.params) %]">Value</a></th>
+ <th><a href="[% c.uri_for('stats','xp',c.req.params) %]">XP</a></th>
+ <th><a href="[% c.uri_for('stats','size',c.req.params) %]">Size</a></th>
+ <th><a href="[% c.uri_for('stats','race',c.req.params) %]">Racerank</a></th>
+ <th>Race</th>
+ </tr>
+[% FOR m IN members %]
+ <tr align="right" class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
+ <td align="left">[% m.nick %]</td>
+ <td>[% m.scorerank %]</td>
+ <td>[% m.valuerank %]</td>
+ <td>[% m.xprank %]</td>
+ <td>[% m.sizerank %]</td>
+ <td>[% m.racerank %]</td>
+ <td>[% m.race %]</td>
+ </tr>
+[% END %]
+</table>