diff options
Diffstat (limited to 'perllib')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Contact.pm | 14 | ||||
-rw-r--r-- | perllib/Open311/PopulateServiceList.pm | 29 |
2 files changed, 19 insertions, 24 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Contact.pm b/perllib/FixMyStreet/App/Controller/Contact.pm index b124ba1c0..997009b87 100644 --- a/perllib/FixMyStreet/App/Controller/Contact.pm +++ b/perllib/FixMyStreet/App/Controller/Contact.pm @@ -87,9 +87,17 @@ sub determine_contact_type : Private { } elsif ($id) { $c->forward( '/report/load_problem_or_display_error', [ $id ] ); if ($update_id) { - my $update = $c->model('DB::Comment')->find( - { id => $update_id } - ); + my $update = $c->model('DB::Comment')->search( + { + id => $update_id, + problem_id => $id, + state => 'confirmed', + } + )->first; + + unless ($update) { + $c->detach( '/page_error_404_not_found', [ _('Unknown update ID') ] ); + } $c->stash->{update} = $update; } diff --git a/perllib/Open311/PopulateServiceList.pm b/perllib/Open311/PopulateServiceList.pm index 4ffd8c143..f10bdf7fb 100644 --- a/perllib/Open311/PopulateServiceList.pm +++ b/perllib/Open311/PopulateServiceList.pm @@ -320,6 +320,14 @@ sub _delete_contacts_not_in_service_list { } ); + if ($self->_current_body->can_be_devolved) { + # If the body has can_be_devolved switched on, it's most likely a + # combination of Open311/email, so ignore any email addresses. + $found_contacts = $found_contacts->search( + { email => { -not_like => '%@%' } } + ); + } + $found_contacts = $self->_delete_contacts_not_in_service_list_cobrand_overrides($found_contacts); $found_contacts->update( @@ -335,27 +343,6 @@ sub _delete_contacts_not_in_service_list { sub _delete_contacts_not_in_service_list_cobrand_overrides { my ( $self, $found_contacts ) = @_; - # for Warwickshire/Bristol/BANES, which are mixed Open311 and email, don't delete - # the email addresses - if ($self->_current_body->name eq 'Warwickshire County Council' || - $self->_current_body->name eq 'Bristol City Council' || - $self->_current_body->name eq 'Bath and North East Somerset Council') { - $found_contacts = $found_contacts->search( - { - email => { -not_like => '%@%' } - } - ); - } elsif ($self->_current_body->name eq 'East Hertfordshire District Council' || - $self->_current_body->name eq 'Stevenage Borough Council') { - # For EHDC/Stevenage we need to leave the 'Other' category alone or reports made - # in this category will be sent only to Hertfordshire County Council. - $found_contacts = $found_contacts->search( - { - category => { '!=' => 'Other' } - } - ); - } - return $found_contacts; } |