[Koha-patches] [PATCH] bug 324: Setting to_address

Daniel Sweeney daniel.sweeney at liblime.com
Tue Feb 3 23:02:13 CET 2009


From: John Beppu <john.beppu at liblime.com>

- Enqueue the messages with a to_address.

Signed-off-by: Daniel Sweeney <daniel.sweeney at liblime.com>
---
 C4/Circulation.pm |    5 +++--
 C4/Letters.pm     |    3 ---
 C4/Message.pm     |   48 +++++++++++++++++++++++++++++++++++++-----------
 3 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index 95c97bd..d22e28c 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -2395,7 +2395,6 @@ B<Example>:
 sub SendCirculationAlert {
     my ($opts) = @_;
     my ($type, $item, $borrower) = ($opts->{type}, $opts->{item}, $opts->{borrower});
-    my $dbh = C4::Context->dbh;
     my %message_name = (
         CHECKIN  => 'Item Check-in',
         CHECKOUT => 'Item Checkout',
@@ -2410,11 +2409,13 @@ sub SendCirculationAlert {
     C4::Letters::parseletter($letter, 'borrowers',   $borrower->{borrowernumber});
     C4::Letters::parseletter($letter, 'branches',    $item->{homebranch});
     my @transports = @{ $borrower_preferences->{transports} };
+    # warn "no transports" unless @transports;
     for (@transports) {
+        # warn "transport: $_";
         my $message = C4::Message->find_last_message($borrower, $type, $_);
         if (!$message) {
             #warn "create new message";
-            C4::Message->enqueue($letter, $borrower->{borrowernumber}, $_);
+            C4::Message->enqueue($letter, $borrower, $_);
         } else {
             #warn "append to old message";
             $message->append($letter);
diff --git a/C4/Letters.pm b/C4/Letters.pm
index 2f0bbdb..085ae96 100644
--- a/C4/Letters.pm
+++ b/C4/Letters.pm
@@ -531,8 +531,6 @@ sub EnqueueLetter {
     return unless exists $params->{'borrowernumber'};
     return unless exists $params->{'message_transport_type'};
 
-    warn 'got passed the guard';
-
     # If we have any attachments we should encode then into the body.
     if ( $params->{'attachments'} ) {
         $params->{'letter'} = _add_attachments(
@@ -564,7 +562,6 @@ ENDSQL
         $params->{'from_address'},                # from_address
         $params->{'letter'}->{'content-type'},    # content_type
     );
-    warn $result;
     return $result;
 }
 
diff --git a/C4/Message.pm b/C4/Message.pm
index dcd3bad..9a634da 100644
--- a/C4/Message.pm
+++ b/C4/Message.pm
@@ -120,28 +120,54 @@ sub find_last_message {
 }
 
 
-=head3 C4::Message->enqueue($letter, $borrowernumber, $transport)
+=head3 C4::Message->enqueue($letter, $borrower, $transport)
 
 This is a front-end for C<C4::Letters::EnqueueLetter()> that adds metadata to
 the message.
 
 =cut
 
-# C4::Message->enqueue($letter, $borrowernumber, $transport)
+# C4::Message->enqueue($letter, $borrower, $transport)
 sub enqueue {
-    my ($class, $letter, $borrowernumber, $transport) = @_;
-    my $metadata = _make_metadata($letter);
+    my ($class, $letter, $borrower, $transport) = @_;
+    my $metadata   = _metadata($letter);
+    my $to_address = _to_address($borrower, $transport);
     $letter->{metadata} = Dump($metadata);
-    carp 'enqueuing...';
+    #carp "enqueuing... to $to_address";
     C4::Letters::EnqueueLetter({
-      letter                 => $letter,
-      borrowernumber         => $borrowernumber,
-      message_transport_type => $transport,
+        letter                 => $letter,
+        borrowernumber         => $borrower->{borrowernumber},
+        message_transport_type => $transport,
+        to_address             => $to_address,
     });
 }
 
-# _make_metadata($letter) -- return the letter split into head/body/footer
-sub _make_metadata {
+# based on message $transport, pick an appropriate address to send to
+sub _to_address {
+    my ($borrower, $transport) = @_;
+    my $address;
+    if ($transport eq 'email') {
+        $address = $borrower->{email}
+            || $borrower->{emailpro}
+            || $borrower->{B_email};
+    } elsif ($transport eq 'sms') {
+        $address = $borrower->{smsalertnumber}
+            || $borrower->{phone}
+            || $borrower->{phonepro}
+            || $borrower->{B_phone};
+    } else {
+        warn "'$transport' is an unknown message transport.";
+    }
+    if (not defined $address) {
+        warn "An appropriate $transport address "
+            . "for borrower $borrower->{userid} "
+            . "could not be found.";
+    }
+    return $address;
+}
+
+# _metadata($letter) -- return the letter split into head/body/footer
+sub _metadata {
     my ($letter) = @_;
     if ($letter->{content} =~ /----/) {
         my ($header, $body, $footer) = split(/----\r?\n?/, $letter->{content});
@@ -256,7 +282,7 @@ sub append {
     my $item;
     if (ref($letter_or_item)) {
         my $letter   = $letter_or_item;
-        my $metadata = _make_metadata($letter);
+        my $metadata = _metadata($letter);
         $item = $metadata->{body}->[0];
     } else {
         $item = $letter_or_item;
-- 
1.5.5.GIT




More information about the Koha-patches mailing list