X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=lib%2FNDWeb%2FController%2FMembers.pm;h=354bdbeefedfc939ef656ebf2685583e7ded2f4d;hb=f8e878fd27cf0abeeb3935a5728549acc5f624c7;hp=2b50ebe7f6449c9f2f6d0a47a99c5fd7b11e3557;hpb=c8563070feee1d24bcdab637f37048b68e8b0b4d;p=ndwebbie.git diff --git a/lib/NDWeb/Controller/Members.pm b/lib/NDWeb/Controller/Members.pm index 2b50ebe..354bdbe 100644 --- a/lib/NDWeb/Controller/Members.pm +++ b/lib/NDWeb/Controller/Members.pm @@ -2,6 +2,7 @@ package NDWeb::Controller::Members; use strict; use warnings; +use feature ":5.10"; use parent 'Catalyst::Controller'; use NDWeb::Include; @@ -32,8 +33,8 @@ sub index : Path : Args(0) { $c->stash(u => $dbh->selectrow_hashref(q{SELECT planet,defense_points ,attack_points,scan_points,humor_points , (attack_points+defense_points+scan_points/20)::NUMERIC(5,1) as total_points - , sms,rank,hostmask,call_if_needed,sms_note - FROM users WHERE uid = ? + , sms,rank,hostmask,call_if_needed,sms_note,defprio + FROM users_defprio WHERE uid = ? },undef,$c->user->id) ); @@ -261,7 +262,8 @@ sub points : Local { my ( $self, $c, $order ) = @_; my $dbh = $c->model; - if ($order && $order =~ /^((?:defense|attack|total|humor|scan|raid)_points)$/){ + if ($order ~~ /^((?:defense|attack|total|humor|scan|raid)_points)$/ + || $order ~~ /^(defprio)$/){ $order = "$1 DESC"; }else{ $order = 'total_points DESC'; @@ -270,20 +272,18 @@ sub points : Local { my $limit = 'LIMIT 10'; $limit = '' if $c->check_user_roles(qw/members_points_nolimit/); - my $query = $dbh->prepare(qq{SELECT username,defense_points,attack_points - ,scan_points,humor_points - ,(attack_points+defense_points+scan_points/20)::NUMERIC(4,0) as total_points - , 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 $order $limit}); + my $query = $dbh->prepare(q{ +SELECT username,defense_points,attack_points + ,scan_points,humor_points,defprio + ,(attack_points+defense_points+scan_points/20)::NUMERIC(4,0) as total_points + , count(NULLIF(rc.launched,FALSE)) AS raid_points +FROM users_defprio 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,defprio +ORDER BY } . "$order $limit" + ); $query->execute; - my @members; - while (my $member = $query->fetchrow_hashref){ - push @members,$member; - } - $c->stash(members => \@members); + $c->stash(members => $query->fetchall_arrayref({})); } sub addintel : Local {