diff options
author | Marius Halden <marius.h@lden.org> | 2021-10-07 13:32:40 +0200 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2021-10-07 13:32:40 +0200 |
commit | 09dacfc6b8bf62addeee16c20b1d90c2a256da96 (patch) | |
tree | 7caa2bf9e92227ab74448f9b746dd28bbcb81b2a /perllib/FixMyStreet/App/Controller/Open311.pm | |
parent | 585e57484f9c6332668bf1ac0a6a3b39dbe32223 (diff) | |
parent | cea89fb87a96943708a1db0f646492fbfaaf000f (diff) |
Merge tag 'v3.1' into fiksgatami-devfiksgatami-dev
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Open311.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Open311.pm | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Open311.pm b/perllib/FixMyStreet/App/Controller/Open311.pm index b4b5d5e3a..73a91a62a 100644 --- a/perllib/FixMyStreet/App/Controller/Open311.pm +++ b/perllib/FixMyStreet/App/Controller/Open311.pm @@ -210,7 +210,7 @@ sub output_requests : Private { }; # Look up categories for this council or councils - my $problems = $c->cobrand->problems->search( $criteria, $attr ); + my $problems = $c->stash->{rs}->search( $criteria, $attr ); my %statusmap = ( map( { $_ => 'open' } FixMyStreet::DB::Result::Problem->open_states() ), @@ -220,6 +220,8 @@ sub output_requests : Private { my @problemlist; while ( my $problem = $problems->next ) { + $c->cobrand->call_hook(munge_problem_list => $problem); + my $id = $problem->id; $problem->service( 'Web interface' ) unless $problem->service; @@ -323,24 +325,8 @@ sub get_requests : Private { if ( 'status' eq $param ) { $value = { 'open' => [ FixMyStreet::DB::Result::Problem->open_states() ], - 'closed' => [ FixMyStreet::DB::Result::Problem->fixed_states(), 'closed' ], + 'closed' => [ FixMyStreet::DB::Result::Problem->fixed_states(), FixMyStreet::DB::Result::Problem->closed_states() ], }->{$value}; - } elsif ( 'agency_responsible' eq $param ) { - my @valuelist; - for my $agency (split(/\|/, $value)) { - unless ($agency =~ m/^(\d+)$/) { - $c->detach( 'error', [ - sprintf(_('Invalid agency_responsible value %s'), - $value) - ] ); - } - my $agencyid = $1; - # FIXME This seem to match the wrong entries - # some times. Not sure when or why - my $re = "(\\y$agencyid\\y|^$agencyid\\y|\\y$agencyid\$)"; - push(@valuelist, $re); - } - $value = \@valuelist; } elsif ( 'has_photo' eq $param ) { $value = undef; $op = '!=' if 'true' eq $value; @@ -363,6 +349,11 @@ sub get_requests : Private { $criteria->{confirmed} = { '<', $c->get_param('end_date') }; } + $c->stash->{rs} = $c->cobrand->problems; + if (my $bodies = $c->get_param('agency_responsible')) { + $c->stash->{rs} = $c->stash->{rs}->to_body([ split(/\|/, $bodies) ]); + } + if ('rss' eq $c->stash->{format}) { $c->stash->{type} = 'new_problems'; $c->forward( '/rss/lookup_type' ); @@ -384,7 +375,7 @@ sub rss_query : Private { rows => $limit }; - my $problems = $c->cobrand->problems->search( $criteria, $attr ); + my $problems = $c->stash->{rs}->search( $criteria, $attr ); $c->stash->{problems} = $problems; } @@ -411,6 +402,7 @@ sub get_request : Private { id => $id, non_public => 0, }; + $c->stash->{rs} = $c->cobrand->problems; $c->forward( 'output_requests', [ $criteria ] ); } |