added a cache for org-from-address
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 24 Aug 2008 15:51:06 +0000 (15:51 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 24 Aug 2008 15:51:06 +0000 (15:51 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@10424 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/support-scripts/generate_circ_notices.pl

index 4294d0a..57dcd9f 100755 (executable)
@@ -241,6 +241,33 @@ sub process_circs {
 }
 
 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;
@@ -250,17 +277,10 @@ sub generate_notice {
     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,