diff options
author | Struan Donald <struan@exo.org.uk> | 2012-04-03 12:37:54 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2012-04-03 12:37:54 +0100 |
commit | a16e71730cf86cd48773ffbd8390c65e1dc2fc6a (patch) | |
tree | 0f1f2064fb210e7a49796593f8fd6c4945a6a309 | |
parent | 05da714171febbfba2d65656ea8cf04115978b50 (diff) |
use module::pluggable to get a list of avaible sending modules
skip on sending if the sending module isn't available
-rw-r--r-- | perllib/FixMyStreet/DB/ResultSet/Problem.pm | 10 | ||||
-rw-r--r-- | perllib/FixMyStreet/SendReport.pm | 13 |
2 files changed, 22 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm index 0b49a4557..ae184e87b 100644 --- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm +++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm @@ -12,7 +12,7 @@ use mySociety::EmailUtil; use mySociety::MaPit; use FixMyStreet::App; -use FixMyStreet::SendReport::Email; +use FixMyStreet::SendReport; my $site_restriction; my $site_key; @@ -231,6 +231,10 @@ sub send_reports { council => { '!=', undef }, } ); my (%notgot, %note); + + my $s = FixMyStreet::SendReport->new(); + my $senders = $s->get_senders; + while (my $row = $unsent->next) { my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($row->cobrand)->new(); @@ -312,6 +316,10 @@ sub send_reports { push @dear, $name; my $sender = $cobrand->get_council_sender( $council, $areas_info->{$council} ); $sender = "FixMyStreet::SendReport::$sender"; + if ( ! exists $senders->{ $sender } ) { + warn "No such sender [ $sender ] for council $name ( $council )"; + next; + } $reporters{ $sender } = $sender->new() unless $reporters{$sender}; $reporters{ $sender }->add_council( $council, $name ); } diff --git a/perllib/FixMyStreet/SendReport.pm b/perllib/FixMyStreet/SendReport.pm index f2ebdd3d7..84a89f877 100644 --- a/perllib/FixMyStreet/SendReport.pm +++ b/perllib/FixMyStreet/SendReport.pm @@ -2,9 +2,22 @@ package FixMyStreet::SendReport; use Moose; +use Module::Pluggable + sub_name => 'senders', + search_path => __PACKAGE__, + require => 1; + has 'councils' => (is => 'rw', isa => 'HashRef', default => sub { {} } ); has 'to' => (is => 'rw', isa => 'ArrayRef', default => sub { [] } ); +sub get_senders { + my $self = shift; + + my %senders = map { $_ => 1 } $self->senders; + + return \%senders; +} + sub reset { my $self = shift; |