]> ruin.nu Git - ndwebbie.git/blob - lib/NDWeb/Controller/Members.pm
Top members converted
[ndwebbie.git] / lib / NDWeb / Controller / Members.pm
1 package NDWeb::Controller::Members;
2
3 use strict;
4 use warnings;
5 use parent 'Catalyst::Controller';
6
7 =head1 NAME
8
9 NDWeb::Controller::Members - Catalyst Controller
10
11 =head1 DESCRIPTION
12
13 Catalyst Controller.
14
15 =head1 METHODS
16
17 =cut
18
19
20 =head2 index 
21
22 =cut
23
24 sub points : Local {
25         my ( $self, $c, $order ) = @_;
26         my $dbh = $c->model;
27
28         if ($order =~ /^((?:defense|attack|total|humor|scan|raid)_points)$/){
29                 $order = "$1 DESC";
30         }else{
31                 $order = 'total_points DESC';
32         }
33
34         my $limit = 'LIMIT 10';
35         $limit = '' if $c->check_user_roles(qw/members_points_nolimit/);
36
37         my $query = $dbh->prepare(qq{SELECT username,defense_points,attack_points
38                 ,scan_points,humor_points
39                 ,(attack_points+defense_points+scan_points/20) as total_points
40                 , count(NULLIF(rc.launched,FALSE)) AS raid_points
41                 FROM users u LEFT OUTER JOIN raid_claims rc USING (uid)
42                 WHERE uid IN (SELECT uid FROM groupmembers WHERE gid = 2)
43                 GROUP BY username,defense_points,attack_points,scan_points,humor_points,rank
44                 ORDER BY $order $limit});
45         $query->execute;
46         my @members;
47         while (my $member = $query->fetchrow_hashref){
48                 push @members,$member;
49         }
50         $c->stash(members => \@members);
51 }
52
53 =head1 AUTHOR
54
55 Michael Andreen (harv@ruin.nu)
56
57 =head1 LICENSE
58
59 GPL 2.0, or later.
60
61 =cut
62
63 1;