X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;ds=sidebyside;f=lib%2FNDWeb%2FController%2FStats.pm;h=36cc1e5ef19e1997415ff53a956537b8a17661ad;hb=28cc9c2d61cf6ee0bfcd02c82e0195efaf6cf27a;hp=1796605d0d7b38d2cdc2d743610b4c525730069a;hpb=436af6a696e3488f5d25e027553ec356da4cde01;p=ndwebbie.git diff --git a/lib/NDWeb/Controller/Stats.pm b/lib/NDWeb/Controller/Stats.pm index 1796605..36cc1e5 100644 --- a/lib/NDWeb/Controller/Stats.pm +++ b/lib/NDWeb/Controller/Stats.pm @@ -55,7 +55,10 @@ sub galaxy : Local { }); $query->execute($x,$y); - $c->stash(g => $query->fetchrow_hashref ); + my $g = $query->fetchrow_hashref; + $c->detach('/default') unless $g; + $c->stash(g => $g); + my $extra_columns = ''; if ($c->check_user_roles(qw/stats_intel/)){ @@ -67,8 +70,8 @@ sub galaxy : Local { $extra_columns .= q{ ,gov, p.value - p.size*200 - COALESCE(ps.metal+ps.crystal+ps.eonium,0)/150 - - COALESCE(ss.total ,(SELECT COALESCE(avg(total),0) - FROM structure_scans)::int)*1500 AS fleetvalue + COALESCE(ds.total ,(SELECT COALESCE(avg(total),0) + FROM current_development_scans)::int)*1500 AS fleetvalue ,(metal+crystal+eonium)/100 AS resvalue }; } @@ -86,9 +89,9 @@ sub galaxy : Local { $extra_columns FROM current_planet_stats_full p LEFT OUTER JOIN planet_scans ps ON p.id = ps.planet - LEFT OUTER JOIN structure_scans ss ON p.id = ss.planet + LEFT OUTER JOIN current_development_scans ds ON p.id = ds.planet WHERE x = ? AND y = ? AND COALESCE(z = ?,TRUE) - ORDER BY x,y,z,p.id,ps.tick DESC, ps.id DESC, ss.tick DESC, ss.id DESC + ORDER BY x,y,z,p.id,ps.tick DESC, ps.id DESC, ds.tick DESC, ds.id DESC }); $query->execute($x,$y,$z); @@ -102,6 +105,8 @@ sub planet : Local { my $p = $dbh->selectrow_hashref(q{SELECT id,x,y,z FROM current_planet_stats WHERE id = $1},undef,$id); + $c->detach('/default') unless $p; + $c->forward('galaxy',[$p->{x},$p->{y},$p->{z}]); $c->stash(p => $p); @@ -181,10 +186,8 @@ sub planet : Local { if ($c->check_user_roles(qw/stats_planetdata/)){ $c->stash(planetscan => $dbh->selectrow_hashref(q{SELECT * FROM current_planet_scans WHERE planet = $1},undef,$id)); - $c->stash(structurescan => $dbh->selectrow_hashref(q{SELECT * - FROM current_structure_scans WHERE planet = $1},undef,$id)); - $c->stash(techscan => $dbh->selectrow_hashref(q{SELECT * - FROM current_tech_scans WHERE planet = $1},undef,$id)); + $c->stash(devscan => $dbh->selectrow_hashref(q{SELECT * + FROM current_development_scans WHERE planet = $1},undef,$id)); } my $query = $dbh->prepare(q{SELECT value,value_gain AS gain,tick FROM planet_stats @@ -212,6 +215,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)} @@ -219,8 +223,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); + } } - }