aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/Open311/PopulateServiceList.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/Open311/PopulateServiceList.pm')
-rw-r--r--perllib/Open311/PopulateServiceList.pm14
1 files changed, 10 insertions, 4 deletions
diff --git a/perllib/Open311/PopulateServiceList.pm b/perllib/Open311/PopulateServiceList.pm
index 9be17946e..a3672770c 100644
--- a/perllib/Open311/PopulateServiceList.pm
+++ b/perllib/Open311/PopulateServiceList.pm
@@ -145,6 +145,8 @@ sub _handle_existing_contact {
my $service_name = $self->_normalize_service_name;
my $protected = $contact->get_extra_metadata("open311_protect");
+ return if $self->_current_body_cobrand && $self->_current_body_cobrand->call_hook(open311_skip_existing_contact => $contact);
+
print $self->_current_body->id . " already has a contact for service code " . $self->_current_service->{service_code} . "\n" if $self->verbose >= 2;
if ( $contact->state eq 'deleted' || $service_name ne $contact->category || $self->_current_service->{service_code} ne $contact->email ) {
@@ -350,10 +352,10 @@ 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.
+ # If the body has can_be_devolved switched on, ignore any
+ # contact with its own send method
$found_contacts = $found_contacts->search(
- { email => { -not_like => '%@%' } }
+ { send_method => [ "", undef ] },
);
}
@@ -370,7 +372,11 @@ sub _delete_contacts_not_in_service_list {
sub _delete_contacts_not_in_service_list_cobrand_overrides {
my ( $self, $found_contacts ) = @_;
- return $found_contacts;
+ if ($self->_current_body_cobrand && $self->_current_body_cobrand->can('open311_filter_contacts_for_deletion')) {
+ return $self->_current_body_cobrand->open311_filter_contacts_for_deletion($found_contacts);
+ } else {
+ return $found_contacts;
+ }
}
1;