}
my %ORG_CACHE;
+my %ORG_FROM_CACHE;
+
+sub get_from_addr {
+ my $type = shift;
+ my $org_id = shift;
+ my $sender;
+
+ if(defined $ORG_FROM_CACHE{$org_id}) {
+ # we have we already loaded the setting for this org unit
+ $sender = $ORG_FROM_CACHE{$org_id};
+
+ } elsif(my $set = $e->search_actor_org_unit_setting(
+ {name => 'org.bounced_emails', org_unit => $org_id} )->[0]) {
+ my $bemail = OpenSRF::Utils::JSON->JSON2perl($set->value);
+ $sender = $ORG_FROM_CACHE{$org_id} = $bemail if $bemail;
+ }
+
+ unless($sender) {
+ # there is no setting, use the configured sender
+ $sender = $settings->config_value(
+ notifications => $type => 'sender_address') ||
+ $settings->config_value(notifications => 'sender_address');
+ $ORG_FROM_CACHE{$org_id} = '';
+ }
+
+ return $sender;
+}
sub generate_notice {
my $notice = shift;
my $circ_list = fetch_circ_data(@circs);
my $tt = Template->new({ABSOLUTE => 1});
- my $sender = $settings->config_value(
- notifications => $type => 'sender_address') ||
- $settings->config_value(notifications => 'sender_address');
-
# see if there is a configured bounce address for this org unit.
# if so, use that as the sender
- if(my $set = $e->search_actor_org_unit_setting(
- {name => 'org.bounced_emails', org_unit => $circ_list->[0]->circ_lib->id} )->[0]) {
- my $bemail = OpenSRF::Utils::JSON->JSON2perl($set->value);
- $sender = $bemail if $bemail;
- }
+ my $org_id = $circ_list->[0]->circ_lib->id;
+ my $sender = get_from_addr($type, $org_id);
my $context = {
circ_list => $circ_list,