From ae3584eafcf3b109119ed28e6a7c6d873ca6ec2c Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Thu, 6 Nov 2008 19:50:04 +0100 Subject: [PATCH] Search for planet stats by nick --- database/group_roles.sql | 2 ++ lib/NDWeb/Controller/Stats.pm | 14 +++++++++++++- root/src/stats/find.tt2 | 19 ++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/database/group_roles.sql b/database/group_roles.sql index b18c285..e14d9d1 100644 --- a/database/group_roles.sql +++ b/database/group_roles.sql @@ -38,6 +38,7 @@ INSERT INTO roles VALUES('intel_members'); INSERT INTO roles VALUES('intel_member'); INSERT INTO roles VALUES('intel_naps'); INSERT INTO roles VALUES('textexport_alliance'); +INSERT INTO roles VALUES('stats_find_nick'); INSERT INTO group_roles (gid,role) VALUES(2,'member_menu'); INSERT INTO group_roles (gid,role) VALUES(2,'attack_menu'); @@ -64,6 +65,7 @@ INSERT INTO group_roles (gid,role) VALUES(8,'no_fleet_update'); INSERT INTO group_roles (gid,role) VALUES(9,'members_points_nolimit'); INSERT INTO group_roles (gid,role) VALUES(9,'stats_intel'); +INSERT INTO group_roles (gid,role) VALUES(9,'stats_find_nick'); INSERT INTO group_roles (gid,role) VALUES(1,'dc_menu'); INSERT INTO group_roles (gid,role) VALUES(1,'bc_menu'); diff --git a/lib/NDWeb/Controller/Stats.pm b/lib/NDWeb/Controller/Stats.pm index 63ad6d7..1c52a02 100644 --- a/lib/NDWeb/Controller/Stats.pm +++ b/lib/NDWeb/Controller/Stats.pm @@ -210,6 +210,7 @@ sub find : Local { my $dbh = $c->model; local $_ = $find || $c->req->param('coords'); + $c->stash(searchterm => $_); if (/(\d+)(?: |:)(\d+)(?: |:)(\d+)(?:(?: |:)(\d+))?/){ my $planet = $dbh->selectrow_array(q{SELECT planetid($1,$2,$3,$4)} @@ -217,8 +218,19 @@ sub find : Local { $c->res->redirect($c->uri_for('planet',$planet)); }elsif (/(\d+)(?: |:)(\d+)/){ $c->res->redirect($c->uri_for('galaxy',$1,$2)); + }elsif($c->check_user_roles(qw/stats_find_nick/)) { + my $query = $dbh->prepare(q{SELECT id,coords(x,y,z),nick + FROM current_planet_stats p + WHERE nick ilike $1 + }); + $query->execute($_); + my $planets = $query->fetchall_arrayref({}); + if (@{$planets} == 1){ + $c->res->redirect($c->uri_for('planet',$planets->[0]->{id})); + }else{ + $c->stash(planets => $planets); + } } - } diff --git a/root/src/stats/find.tt2 b/root/src/stats/find.tt2 index 1e7402b..e64e55d 100644 --- a/root/src/stats/find.tt2 +++ b/root/src/stats/find.tt2 @@ -1,10 +1,27 @@ [% META title = 'Find' %] -

Could not find: "[% c.req.param('coords') | html %]"

+

Could not find a single planet matching: "[% searchterm | html %]"

+ +[% IF planets %] + + + [% FOR p IN planets %] + + + + + [% END %] +
CoordsNick
[% p.coords %][% p.nick %]
+[% END %] +

The following syntaxes are possible:

+ -- 2.39.2