aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Report.pm
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2015-10-27 13:27:03 +0100
committerMarius Halden <marius.h@lden.org>2015-10-27 13:27:03 +0100
commit4fb5331abd2fa4c89ebeb89bc92a245fadd0aa19 (patch)
tree23632b448612e3845a6e8b1aed6490151395de2a /perllib/FixMyStreet/App/Controller/Report.pm
parente609613b5041a15491417eaa9ae129dd1e7531dd (diff)
parentac39951581a0eefe069c8a707bb89977227d0bce (diff)
Merge tag 'v1.7' into fiksgatami-dev
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Report.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Report.pm19
1 files changed, 13 insertions, 6 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm
index 7b001ee4c..d7cae05d4 100644
--- a/perllib/FixMyStreet/App/Controller/Report.pm
+++ b/perllib/FixMyStreet/App/Controller/Report.pm
@@ -99,23 +99,30 @@ sub load_problem_or_display_error : Private {
my $problem
= ( !$id || $id =~ m{\D} ) # is id non-numeric?
? undef # ...don't even search
- : $c->cobrand->problems->find( { id => $id } );
+ : $c->cobrand->problems->find( { id => $id } )
+ or $c->detach( '/page_error_404_not_found', [ _('Unknown problem ID') ] );
# check that the problem is suitable to show.
- if ( !$problem || ($problem->state eq 'unconfirmed' && !$c->cobrand->show_unconfirmed_reports) || $problem->state eq 'partial' ) {
+ # hidden_states includes partial and unconfirmed, but they have specific handling,
+ # so we check for them first.
+ if ( $problem->state eq 'partial' ) {
$c->detach( '/page_error_404_not_found', [ _('Unknown problem ID') ] );
}
- elsif ( $problem->state eq 'hidden' ) {
+ elsif ( $problem->state eq 'unconfirmed' ) {
+ $c->detach( '/page_error_404_not_found', [ _('Unknown problem ID') ] )
+ unless $c->cobrand->show_unconfirmed_reports ;
+ }
+ elsif ( $problem->hidden_states->{ $problem->state } or
+ (($problem->get_extra_metadata('closure_status')||'') eq 'hidden')) {
$c->detach(
'/page_error_410_gone',
[ _('That report has been removed from FixMyStreet.') ] #
);
} elsif ( $problem->non_public ) {
if ( !$c->user || $c->user->id != $problem->user->id ) {
- my $site_name = Utils::trim_text($c->render_fragment('site-name.html'));
$c->detach(
'/page_error_403_access_denied',
- [ sprintf(_('That report cannot be viewed on %s.'), $site_name) ] #
+ [ sprintf(_('That report cannot be viewed on %s.'), $c->stash->{site_name}) ]
);
}
}
@@ -242,7 +249,7 @@ sub delete :Local :Args(1) {
return $c->res->redirect($uri) unless $p->bodies->{$body->id};
$p->state('hidden');
- $p->lastupdate( \'ms_current_timestamp()' );
+ $p->lastupdate( \'current_timestamp' );
$p->update;
$c->model('DB::AdminLog')->create( {