- if (defined $findGraph and my $graph = $findGraph->fetchrow_hashref){
- $img = $graph->{graph};
- }elsif(defined $z){
- my $planets = $DBH->prepare(q{SELECT id, tick,size,coords(x,y,z),score,size,value,xp,scorerank,sizerank,valuerank,xprank from planets natural join planet_stats where id = planetid($1,$2,$3,$4) ORDER BY tick ASC});
- $planets->execute($x,$y,$z,$ND::TICK) or die $DBH->errstr;
-
- my @score;
- my @size;
- my @value;
- my @xp;
- my @ticks;
-
- while (my $tick = $planets->fetchrow_hashref){
- push @ticks,$tick->{tick};
- if ($type eq 'stats'){
- push @score,$tick->{score};
- push @size,$tick->{size};
- push @value,$tick->{value};
- push @xp,$tick->{xp}*60;
- }elsif($type eq 'ranks'){
- push @score,-$tick->{scorerank};
- push @size,-$tick->{sizerank};
- push @value,-$tick->{valuerank};
- push @xp,-$tick->{xprank};
+ if ($self->{URI} =~ m{^/\w+/(stats|ranks)/(.*)}){
+ my $type = $1;
+ my ($x,$y,$z);
+ if ($2 =~ m{(\d+)(?: |:)(\d+)(?:(?: |:)(\d+))?$}){
+ $x = $1;
+ $y = $2;
+ $z = $3;
+ }
+ my $findGraph;
+ if (defined $z){
+ $findGraph = $DBH->prepare(q{SELECT graph FROM planet_graphs WHERE planet = planetid($1,$2,$3,$4) AND tick = $4 AND type = $5});
+ $findGraph->execute($x,$y,$z,$ND::TICK,$type) or die $DBH->errstr;
+ }
+ if (defined $findGraph and my $graph = $findGraph->fetchrow_hashref){
+ $img = $graph->{graph};
+ }elsif(defined $x){
+ my $query;
+ if (defined $z){
+ if ($type eq 'stats'){
+ $query = $DBH->prepare(q{SELECT tick,score,size,value,xp*60 AS "xp*60" FROM planets natural join planet_stats WHERE id = planetid($1,$2,$3,$4) ORDER BY tick ASC});
+ }elsif($type eq 'ranks'){
+ $query = $DBH->prepare(q{SELECT tick,-scorerank AS score,-sizerank AS size,-valuerank AS value,-xprank AS xp FROM planets natural join planet_stats WHERE id = planetid($1,$2,$3,$4) ORDER BY tick ASC});
+ }
+ $query->execute($x,$y,$z,$ND::TICK) or die $DBH->errstr;
+ }else{
+ if ($type eq 'stats'){
+ $query = $DBH->prepare(q{SELECT tick,score,size,value,xp*60 AS "xp*60" FROM galaxies WHERE x = $1 AND y = $2 ORDER BY tick ASC});
+ }elsif($type eq 'ranks'){
+ $query = $DBH->prepare(q{SELECT tick,-scorerank AS score,-sizerank AS size,-valuerank AS value,-xprank AS xp FROM galaxies WHERE x = $1 AND y = $2 ORDER BY tick ASC});
+ }
+ $query->execute($x,$y) or die $DBH->errstr;