aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/App.pm32
-rw-r--r--perllib/FixMyStreet/App/Controller/Contact.pm2
-rw-r--r--perllib/FixMyStreet/App/Model/EmailSend.pm4
-rw-r--r--perllib/FixMyStreet/Cobrand/EastSussex.pm4
-rw-r--r--perllib/FixMyStreet/Cobrand/Harrogate.pm242
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/AlertType.pm4
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Problem.pm10
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm4
-rw-r--r--perllib/FixMyStreet/EmailSend/ContactEmail.pm9
-rw-r--r--perllib/FixMyStreet/EmailSend/DoNotReply.pm (renamed from perllib/FixMyStreet/EmailSend.pm)2
-rw-r--r--perllib/FixMyStreet/Map/OSM.pm8
-rw-r--r--perllib/FixMyStreet/SendReport.pm2
-rw-r--r--perllib/FixMyStreet/SendReport/Email.pm32
-rw-r--r--perllib/FixMyStreet/SendReport/EmptyHomes.pm11
-rw-r--r--perllib/FixMyStreet/SendReport/NI.pm5
-rw-r--r--perllib/FixMyStreet/SendReport/Zurich.pm2
16 files changed, 316 insertions, 57 deletions
diff --git a/perllib/FixMyStreet/App.pm b/perllib/FixMyStreet/App.pm
index e5e483937..fd70ffda8 100644
--- a/perllib/FixMyStreet/App.pm
+++ b/perllib/FixMyStreet/App.pm
@@ -10,7 +10,6 @@ use FixMyStreet;
use FixMyStreet::Cobrand;
use Memcached;
use mySociety::Email;
-use mySociety::EmailUtil;
use mySociety::Random qw(random_bytes);
use FixMyStreet::Map;
@@ -348,9 +347,19 @@ sub send_email {
}
sub send_email_cron {
- my ( $c, $params, $env_from, $env_to, $nomail, $cobrand, $lang_code ) = @_;
-
- return 1 if $c->is_abuser( $env_to );
+ my ( $c, $params, $env_from, $nomail, $cobrand, $lang_code ) = @_;
+
+ my $first_to;
+ if (ref($params->{To}) eq 'ARRAY') {
+ if (ref($params->{To}[0]) eq 'ARRAY') {
+ $first_to = $params->{To}[0][0];
+ } else {
+ $first_to = $params->{To}[0];
+ }
+ } else {
+ $first_to = $params->{To};
+ }
+ return 1 if $c->is_abuser($first_to);
$params->{'Message-ID'} = sprintf('<fms-cron-%s-%s@%s>', time(),
unpack('h*', random_bytes(5, 1)), FixMyStreet->config('EMAIL_DOMAIN')
@@ -387,15 +396,16 @@ sub send_email_cron {
$params->{_line_indent} = '';
my $email = mySociety::Locale::in_gb_locale { mySociety::Email::construct_email($params) };
- if ( FixMyStreet->test_mode ) {
- my $sender = Email::Send->new({ mailer => 'Test' });
- $sender->send( $email );
- return 0;
- } elsif (!$nomail) {
- return mySociety::EmailUtil::send_email( $email, $env_from, @$env_to );
- } else {
+ if ($nomail) {
print $email;
return 1; # Failure
+ } else {
+ my %model_args;
+ if (!FixMyStreet->test_mode && $env_from eq FixMyStreet->config('CONTACT_EMAIL')) {
+ $model_args{mailer} = 'FixMyStreet::EmailSend::ContactEmail';
+ }
+ my $result = $c->model('EmailSend', %model_args)->send($email);
+ return $result ? 0 : 1;
}
}
diff --git a/perllib/FixMyStreet/App/Controller/Contact.pm b/perllib/FixMyStreet/App/Controller/Contact.pm
index 5a51c8494..f48518d77 100644
--- a/perllib/FixMyStreet/App/Controller/Contact.pm
+++ b/perllib/FixMyStreet/App/Controller/Contact.pm
@@ -4,6 +4,8 @@ use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller'; }
+use mySociety::EmailUtil;
+
=head1 NAME
FixMyStreet::App::Controller::Contact - Catalyst Controller
diff --git a/perllib/FixMyStreet/App/Model/EmailSend.pm b/perllib/FixMyStreet/App/Model/EmailSend.pm
index 7f130c26d..475026267 100644
--- a/perllib/FixMyStreet/App/Model/EmailSend.pm
+++ b/perllib/FixMyStreet/App/Model/EmailSend.pm
@@ -1,5 +1,5 @@
package FixMyStreet::App::Model::EmailSend;
-use base 'Catalyst::Model::Adaptor';
+use base 'Catalyst::Model::Factory';
use strict;
use warnings;
@@ -54,7 +54,7 @@ elsif ( my $smtp_host = FixMyStreet->config('SMTP_SMARTHOST') ) {
push @$mailer_args, username => $username, password => $password
if $username && $password;
$args = {
- mailer => 'FixMyStreet::EmailSend',
+ mailer => 'FixMyStreet::EmailSend::DoNotReply',
mailer_args => $mailer_args,
};
}
diff --git a/perllib/FixMyStreet/Cobrand/EastSussex.pm b/perllib/FixMyStreet/Cobrand/EastSussex.pm
index 5447545e7..5aabae449 100644
--- a/perllib/FixMyStreet/Cobrand/EastSussex.pm
+++ b/perllib/FixMyStreet/Cobrand/EastSussex.pm
@@ -119,5 +119,9 @@ sub pin_colour {
return $open_states->{ $p->state } ? 'yellow' : 'green';
}
+sub send_questionnaires {
+ return 0;
+}
+
1;
diff --git a/perllib/FixMyStreet/Cobrand/Harrogate.pm b/perllib/FixMyStreet/Cobrand/Harrogate.pm
new file mode 100644
index 000000000..6bcc2f227
--- /dev/null
+++ b/perllib/FixMyStreet/Cobrand/Harrogate.pm
@@ -0,0 +1,242 @@
+package FixMyStreet::Cobrand::Harrogate;
+use base 'FixMyStreet::Cobrand::UKCouncils';
+
+use strict;
+use warnings;
+use feature 'say';
+
+sub council_id { return 2407; }
+sub council_area { return 'Harrogate'; }
+sub council_name { return 'Harrogate Borough Council'; }
+sub council_url { return 'harrogate'; }
+sub is_two_tier { return 1; } # with North Yorkshire CC 2235
+
+sub disambiguate_location {
+ my $self = shift;
+ my $string = shift;
+
+ my $town = 'Harrogate';
+
+ # as it's the requested example location, try to avoid a disambiguation page
+ $town .= ', HG1 1DH' if $string =~ /^\s*king'?s\s+r(?:oa)?d\s*(?:,\s*har\w+\s*)?$/i;
+
+ return {
+ %{ $self->SUPER::disambiguate_location() },
+ town => $town,
+ centre => '54.0671557690306,-1.59581319536637',
+ span => '0.370193897090822,0.829517054931808',
+ bounds => [ 53.8914112467619, -2.00450542308575, 54.2616051438527, -1.17498836815394 ],
+ };
+}
+
+sub example_places {
+ return ( 'HG1 2SG', "King's Road" );
+}
+
+sub enter_postcode_text {
+ my ($self) = @_;
+ return 'Enter a Harrogate district postcode, or street name and area';
+}
+
+# increase map zoom level so street names are visible
+sub default_map_zoom { return 3; }
+
+
+=head2 temp_email_to_update, temp_update_contacts
+
+Temporary helper routines to update the extra for potholes (temporary setup
+hack, cargo-culted from ESCC, may in future be superseded either by
+Open311/integration or a better mechanism for manually creating rich contacts).
+
+Can run with a script or command line like:
+
+ bin/cron-wrapper perl -MFixMyStreet::App -MFixMyStreet::Cobrand::Harrogate -e \
+ 'FixMyStreet::Cobrand::Harrogate->new({c => FixMyStreet::App->new})->temp_update_contacts'
+
+=cut
+
+sub temp_email_to_update {
+ return 'CustomerServices@harrogate.gov.uk';
+}
+
+sub temp_update_contacts {
+ my $self = shift;
+
+ my $contact_rs = $self->{c}->model('DB::Contact');
+
+ my $email = $self->temp_email_to_update;
+ my $_update = sub {
+ my ($category, $field, $category_details) = @_;
+ # NB: we're accepting just 1 field, but supply as array [ $field ]
+
+ my $contact = $contact_rs->find_or_create(
+ {
+ body_id => $self->council_id,
+ category => $category,
+
+ confirmed => 1,
+ deleted => 0,
+ email => $email,
+ editor => 'automated script',
+ note => '',
+ send_method => '',
+ whenedited => \'NOW()',
+ %{ $category_details || {} },
+ },
+ {
+ key => 'contacts_body_id_category_idx'
+ }
+ );
+
+ say "Editing category: $category";
+
+ my %default = (
+ variable => 'true',
+ order => '1',
+ required => 'no',
+ datatype => 'string',
+ datatype_description => 'a string',
+ );
+
+ if ($field->{datatype} || '' eq 'boolean') {
+ my $description = $field->{description};
+ %default = (
+ %default,
+ datatype => 'singlevaluelist',
+ datatype_description => 'Yes or No',
+ values => { value => [
+ { key => ['No'], name => ['No'] },
+ { key => ['Yes'], name => ['Yes'] },
+ ] },
+ );
+ }
+
+ $contact->update({
+ extra => [ { %default, %$field } ],
+ confirmed => 1,
+ deleted => 0,
+ editor => 'automated script',
+ whenedited => \'NOW()',
+ note => 'Edited by script as per requirements Dec 2014',
+ });
+ };
+
+ $_update->( 'Abandoned vehicles', {
+ code => 'registration',
+ description => 'Vehicle Registration number:',
+ });
+
+ $_update->( 'Dead animals', {
+ code => 'INFO_TEXT',
+ variable => 'false',
+ description => 'We do not remove small species, e.g. squirrels, rabbits, and small birds.',
+ });
+
+ $_update->( 'Flyposting', {
+ code => 'offensive',
+ description => 'Is it offensive?',
+ datatype => 'boolean', # mapped onto singlevaluelist
+ });
+
+ $_update->( 'Flytipping', {
+ code => 'size',
+ description => 'Size?',
+ datatype => 'singlevaluelist',
+ values => { value => [
+ { key => ['Single Item'], name => ['Single item'] },
+ { key => ['Car boot load'], name => ['Car boot load'] },
+ { key => ['Small van load'], name => ['Small van load'] },
+ { key => ['Transit van load'], name => ['Transit van load'] },
+ { key => ['Tipper lorry load'], name => ['Tipper lorry load'] },
+ { key => ['Significant load'], name => ['Significant load'] },
+ ] },
+ });
+
+ $_update->( 'Graffiti', {
+ code => 'offensive',
+ description => 'Is it offensive?',
+ datatype => 'boolean', # mapped onto singlevaluelist
+ });
+
+ $_update->( 'Parks and playgrounds', {
+ code => 'dangerous',
+ description => 'Is it dangerous or could cause injury?',
+ datatype => 'boolean', # mapped onto singlevaluelist
+ });
+
+ $_update->( 'Trees', {
+ code => 'dangerous',
+ description => 'Is it dangerous or could cause injury?',
+ datatype => 'boolean', # mapped onto singlevaluelist
+ });
+
+ # also ensure that the following categories are created:
+ for my $category (
+ 'Car parking',
+ 'Dog and litter bins',
+ 'Dog fouling',
+ 'Other',
+ 'Rubbish (refuse and recycling)',
+ 'Street cleaning',
+ 'Street lighting',
+ 'Street nameplates',
+ ) {
+ say "Creating $category if required";
+ my $contact = $contact_rs->find_or_create(
+ {
+ body_id => $self->council_id,
+ category => $category,
+ confirmed => 1,
+ deleted => 0,
+ email => $email,
+ editor => 'automated script',
+ note => 'Created by script as per requirements Dec 2014',
+ send_method => '',
+ whenedited => \'NOW()',
+ }
+ );
+ }
+
+ my @to_delete = (
+ 'Parks/landscapes', # delete in favour of to parks and playgrounds
+ 'Public toilets', # as no longer in specs
+ );
+ say sprintf "Deleting: %s (if present)", join ',' => @to_delete;
+ $contact_rs->search({
+ body_id => $self->council_id,
+ category => \@to_delete,
+ deleted => 0
+ })->update({
+ deleted => 1,
+ editor => 'automated script',
+ whenedited => \'NOW()',
+ note => 'Deleted by script as per requirements Dec 2014',
+ });
+}
+
+sub contact_email {
+ my $self = shift;
+ return join( '@', 'customerservices', 'harrogate.gov.uk' );
+}
+
+sub process_additional_metadata_for_email {
+ my ($self, $problem, $h) = @_;
+
+ my $additional = '';
+ if (my $extra = $problem->extra) {
+ $additional = join "\n\n", map {
+ if ($_->{name} eq 'INFO_TEXT') {
+ ();
+ }
+ else {
+ sprintf '%s: %s', $_->{description}, $_->{value};
+ }
+ } @$extra;
+ $additional = "\n\n$additional" if $additional;
+ }
+
+ $h->{additional_information} = $additional;
+}
+
+1;
+
diff --git a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
index 5bed95811..b704fa7dd 100644
--- a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
@@ -5,7 +5,6 @@ use strict;
use warnings;
use mySociety::DBHandle qw(dbh);
-use mySociety::EmailUtil;
use mySociety::Gaze;
use mySociety::Locale;
use mySociety::MaPit;
@@ -262,13 +261,12 @@ sub _send_aggregated_alert_email(%) {
To => $data{alert_email},
},
$sender,
- [ $data{alert_email} ],
0,
$cobrand,
$data{lang}
);
- if ($result == mySociety::EmailUtil::EMAIL_SUCCESS) {
+ unless ($result) {
$token->insert();
} else {
print "Failed to send alert $data{alert_id}!";
diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
index 5d70bf47d..a84a309ee 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
@@ -8,7 +8,6 @@ use CronFns;
use Utils;
use mySociety::Config;
-use mySociety::EmailUtil;
use mySociety::MaPit;
use FixMyStreet::App;
@@ -323,6 +322,10 @@ sub send_reports {
$h{user_details} .= sprintf(_('Email: %s'), $row->user->email) . "\n\n";
}
+ if ($cobrand->can('process_additional_metadata_for_email')) {
+ $cobrand->process_additional_metadata_for_email($row, \%h);
+ }
+
my %reporters = ();
my ( $sender_count );
if ($site eq 'emptyhomes') {
@@ -434,7 +437,7 @@ sub send_reports {
}
}
- if ($result == mySociety::EmailUtil::EMAIL_SUCCESS) {
+ unless ($result) {
$row->update( {
whensent => \'ms_current_timestamp()',
lastupdate => \'ms_current_timestamp()',
@@ -497,7 +500,7 @@ sub _send_report_sent_email {
my $template = FixMyStreet->get_email_template($row->cobrand, $row->lang, 'confirm_report_sent.txt');
- my $result = FixMyStreet::App->send_email_cron(
+ FixMyStreet::App->send_email_cron(
{
_template_ => $template,
_parameters_ => $h,
@@ -505,7 +508,6 @@ sub _send_report_sent_email {
From => mySociety::Config::get('CONTACT_EMAIL'),
},
mySociety::Config::get('CONTACT_EMAIL'),
- [ $row->user->email ],
$nomail,
$cobrand
);
diff --git a/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm b/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm
index b7af9e60e..646967bfc 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm
@@ -5,7 +5,6 @@ use strict;
use warnings;
use Encode;
use Utils;
-use mySociety::EmailUtil;
sub send_questionnaires {
my ( $rs, $params ) = @_;
@@ -103,11 +102,10 @@ sub send_questionnaires_period {
From => [ $sender, $sender_name ],
},
$sender,
- [ $row->user->email ],
$params->{nomail},
$cobrand
);
- if ($result == mySociety::EmailUtil::EMAIL_SUCCESS) {
+ unless ($result) {
print " ...success\n" if $params->{verbose};
$row->update();
$token->insert();
diff --git a/perllib/FixMyStreet/EmailSend/ContactEmail.pm b/perllib/FixMyStreet/EmailSend/ContactEmail.pm
new file mode 100644
index 000000000..28bcc983b
--- /dev/null
+++ b/perllib/FixMyStreet/EmailSend/ContactEmail.pm
@@ -0,0 +1,9 @@
+package FixMyStreet::EmailSend::ContactEmail;
+use base Email::Send::SMTP;
+
+sub get_env_sender {
+ my $sender = FixMyStreet->config('CONTACT_EMAIL');
+ return $sender;
+}
+
+1;
diff --git a/perllib/FixMyStreet/EmailSend.pm b/perllib/FixMyStreet/EmailSend/DoNotReply.pm
index 8b6eed462..d1368f00f 100644
--- a/perllib/FixMyStreet/EmailSend.pm
+++ b/perllib/FixMyStreet/EmailSend/DoNotReply.pm
@@ -1,4 +1,4 @@
-package FixMyStreet::EmailSend;
+package FixMyStreet::EmailSend::DoNotReply;
use base Email::Send::SMTP;
sub get_env_sender {
diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm
index 74af0e9f3..82ddd293b 100644
--- a/perllib/FixMyStreet/Map/OSM.pm
+++ b/perllib/FixMyStreet/Map/OSM.pm
@@ -29,10 +29,10 @@ sub map_tiles {
my ( $x, $y, $z ) = ( $params{x_tile}, $params{y_tile}, $params{zoom_act} );
my $tile_url = $self->base_tile_url();
return [
- "http://a.$tile_url/$z/" . ($x - 1) . "/" . ($y - 1) . ".png",
- "http://b.$tile_url/$z/$x/" . ($y - 1) . ".png",
- "http://c.$tile_url/$z/" . ($x - 1) . "/$y.png",
- "http://$tile_url/$z/$x/$y.png",
+ "https://a.$tile_url/$z/" . ($x - 1) . "/" . ($y - 1) . ".png",
+ "https://b.$tile_url/$z/$x/" . ($y - 1) . ".png",
+ "https://c.$tile_url/$z/" . ($x - 1) . "/$y.png",
+ "https://a.$tile_url/$z/$x/$y.png",
];
}
diff --git a/perllib/FixMyStreet/SendReport.pm b/perllib/FixMyStreet/SendReport.pm
index 5087c7ead..40e76ef72 100644
--- a/perllib/FixMyStreet/SendReport.pm
+++ b/perllib/FixMyStreet/SendReport.pm
@@ -10,6 +10,7 @@ use Module::Pluggable
has 'body_config' => ( is => 'rw', isa => 'HashRef', default => sub { {} } );
has 'bodies' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } );
has 'to' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } );
+has 'bcc' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } );
has 'success' => ( is => 'rw', isa => 'Bool', default => 0 );
has 'error' => ( is => 'rw', isa => 'Str', default => '' );
has 'unconfirmed_counts' => ( 'is' => 'rw', isa => 'HashRef', default => sub { {} } );
@@ -44,6 +45,7 @@ sub reset {
$self->bodies( [] );
$self->body_config( {} );
$self->to( [] );
+ $self->bcc( [] );
}
sub add_body {
diff --git a/perllib/FixMyStreet/SendReport/Email.pm b/perllib/FixMyStreet/SendReport/Email.pm
index 19c6405d2..797b41e91 100644
--- a/perllib/FixMyStreet/SendReport/Email.pm
+++ b/perllib/FixMyStreet/SendReport/Email.pm
@@ -4,11 +4,8 @@ use Moose;
BEGIN { extends 'FixMyStreet::SendReport'; }
-use mySociety::EmailUtil;
-
sub build_recipient_list {
my ( $self, $row, $h ) = @_;
- my %recips;
my $all_confirmed = 1;
foreach my $body ( @{ $self->bodies } ) {
@@ -49,12 +46,10 @@ sub build_recipient_list {
}
for my $email ( @emails ) {
push @{ $self->to }, [ $email, $body_name ];
- $recips{$email} = 1;
}
}
- return () unless $all_confirmed;
- return keys %recips;
+ return $all_confirmed && @{$self->to};
}
sub get_template {
@@ -76,34 +71,36 @@ sub send {
my $self = shift;
my ( $row, $h ) = @_;
- my @recips = $self->build_recipient_list( $row, $h );
+ my $recips = $self->build_recipient_list( $row, $h );
# on a staging server send emails to ourselves rather than the bodies
if (mySociety::Config::get('STAGING_SITE') && !mySociety::Config::get('SEND_REPORTS_ON_STAGING') && !FixMyStreet->test_mode) {
- @recips = ( $row->user->email );
+ $recips = 1;
+ @{$self->to} = [ $row->user->email, $self->to->[0][1] || $row->name ];
}
- unless ( @recips ) {
+ unless ($recips) {
$self->error( 'No recipients' );
return 1;
}
my ($verbose, $nomail) = CronFns::options();
my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($row->cobrand)->new();
+ my $params = {
+ _template_ => $self->get_template( $row ),
+ _parameters_ => $h,
+ To => $self->to,
+ From => $self->send_from( $row ),
+ };
+ $params->{Bcc} = $self->bcc if @{$self->bcc};
my $result = FixMyStreet::App->send_email_cron(
- {
- _template_ => $self->get_template( $row ),
- _parameters_ => $h,
- To => $self->to,
- From => $self->send_from( $row ),
- },
+ $params,
mySociety::Config::get('CONTACT_EMAIL'),
- \@recips,
$nomail,
$cobrand
);
- if ( $result == mySociety::EmailUtil::EMAIL_SUCCESS ) {
+ unless ($result) {
$self->success(1);
} else {
$self->error( 'Failed to send email' );
@@ -143,4 +140,5 @@ sub _get_district_for_contact {
($district) = keys %$district;
return $district;
}
+
1;
diff --git a/perllib/FixMyStreet/SendReport/EmptyHomes.pm b/perllib/FixMyStreet/SendReport/EmptyHomes.pm
index 4bae6af46..ce69aaac3 100644
--- a/perllib/FixMyStreet/SendReport/EmptyHomes.pm
+++ b/perllib/FixMyStreet/SendReport/EmptyHomes.pm
@@ -9,7 +9,6 @@ BEGIN { extends 'FixMyStreet::SendReport::Email'; }
sub build_recipient_list {
my ( $self, $row, $h ) = @_;
- my %recips;
my $all_confirmed = 1;
foreach my $body ( @{ $self->bodies } ) {
@@ -31,24 +30,22 @@ sub build_recipient_list {
}
push @{ $self->to }, [ $body_email, $body->name ];
- $recips{$body_email} = 1;
my $area_info = mySociety::MaPit::call('area', $body->body_areas->first->area_id);
my $country = $area_info->{country};
if ($country eq 'W') {
- $recips{ 'wales@' . mySociety::Config::get('EMAIL_DOMAIN') } = 1;
+ push @{$self->bcc}, 'wales@' . mySociety::Config::get('EMAIL_DOMAIN');
} elsif ($country eq 'S') {
- $recips{ 'scotland@' . mySociety::Config::get('EMAIL_DOMAIN') } = 1;
+ push @{$self->bcc}, 'scotland@' . mySociety::Config::get('EMAIL_DOMAIN');
} else {
- $recips{ 'eha@' . mySociety::Config::get('EMAIL_DOMAIN') } = 1;
+ push @{$self->bcc}, 'eha@' . mySociety::Config::get('EMAIL_DOMAIN');
}
}
# Set address email parameter from added data
$h->{address} = $row->extra->{address};
- return () unless $all_confirmed;
- return keys %recips;
+ return $all_confirmed && @{$self->to};
}
sub get_template {
diff --git a/perllib/FixMyStreet/SendReport/NI.pm b/perllib/FixMyStreet/SendReport/NI.pm
index e0ea24f9c..c60643566 100644
--- a/perllib/FixMyStreet/SendReport/NI.pm
+++ b/perllib/FixMyStreet/SendReport/NI.pm
@@ -6,7 +6,6 @@ BEGIN { extends 'FixMyStreet::SendReport::Email'; }
sub build_recipient_list {
my ( $self, $row, $h ) = @_;
- my %recips;
my $all_confirmed = 1;
foreach my $body ( @{ $self->bodies } ) {
@@ -30,11 +29,9 @@ sub build_recipient_list {
$row->external_body( 'Roads Service' );
}
push @{ $self->to }, [ $email, $name ];
- $recips{$email} = 1;
}
- return () unless $all_confirmed;
- return keys %recips;
+ return $all_confirmed && @{$self->to};
}
1;
diff --git a/perllib/FixMyStreet/SendReport/Zurich.pm b/perllib/FixMyStreet/SendReport/Zurich.pm
index d46561e9e..40417b41e 100644
--- a/perllib/FixMyStreet/SendReport/Zurich.pm
+++ b/perllib/FixMyStreet/SendReport/Zurich.pm
@@ -26,7 +26,7 @@ sub build_recipient_list {
}
push @{ $self->to }, [ $body_email, $body->name ];
- return $body_email;
+ return 1;
}
sub get_template {