+sub end : ActionClass('RenderView') {
+ my ($self, $c) = @_;
+
+ if ($c->res->status >= 300 && $c->res->status <= 400 ){
+ return;
+ }
+
+ my $dbh = $c ->model;
+
+ if (scalar @{ $c->error } ){
+ if ($c->error->[0] =~ m/Can't call method "id" on an undefined value at/){
+ $c->stash->{template} = 'access_denied.tt2';
+ $c->res->status(403);
+ $c->clear_errors;
+ }elsif ($c->error->[0] =~ m/Missing roles: /){
+ $c->stash->{template} = 'access_denied.tt2';
+ $c->res->status(403);
+ $c->clear_errors;
+ }
+ }
+
+ if ($c->user_exists){
+ my $fleetupdate = 0;
+ if ($c->check_user_roles(qw/member_menu/)){
+ $fleetupdate = $dbh->selectrow_array(q{
+SELECT tick FROM fleets WHERE planet = ? AND tick > tick() - 24
+AND mission = 'Full fleet' AND name IN ('Main','Advanced Unit');
+ },undef,$c->user->planet);
+ $fleetupdate = 0 unless defined $fleetupdate;
+ }
+
+ my ($unread,$newposts) = $dbh->selectrow_array(q{SELECT * FROM unread_posts($1)}
+ ,undef,$c->user->id);
+
+ $c->stash(user => {
+ id => $c->user->id,
+ name => $c->user->username,
+ css => $c->user->css,
+ newposts => $newposts,
+ unreadposts => $unread
+ });
+ $c->stash->{user}->{attacker} = $c->check_user_roles(qw/attack_menu/)
+ && (!$c->check_user_roles(qw/member_menu/)
+ || ($c->user->planet && (($c->stash->{TICK} - $fleetupdate < 24)
+ || $c->check_user_roles(qw/no_fleet_update/)))),
+ $c->forward('listTargets');
+ }
+ my $birthdays = $dbh->prepare(q{SELECT username
+ ,date_part('year',age(birthday)) AS age
+ FROM users WHERE birthday IS NOT NULL
+ AND mmdd(birthday) = mmdd(CURRENT_DATE)
+ });
+ $birthdays->execute;
+ $c->stash(birthdays => $birthdays->fetchall_arrayref({}));
+
+ if ($c->res->status == 200 || $c->req->method eq 'GET'){
+ $c->session->{referrer} = $c->req->path;
+ }
+}