X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FMessage.pm;h=4b88970207621f4602dd8b6c9d69be8a062ffb82;hb=3414c117cdbe983c9c4dd8cbf3843bd5419bd0d8;hp=dcd3bad5bd804f045ba89045183ea9c69f9365dd;hpb=39d0ed3635b8fea34a813a4be97f38d419731f42;p=koha_fer diff --git a/C4/Message.pm b/C4/Message.pm index dcd3bad5bd..4b88970207 100644 --- a/C4/Message.pm +++ b/C4/Message.pm @@ -18,9 +18,15 @@ How to add a new message to the queue: use C4::Items; my $borrower = { borrowernumber => 1 }; my $item = C4::Items::GetItem(1); - my $letter = C4::Letters::getletter('circulation', 'CHECKOUT'); - C4::Letters::parseletter($letter, 'biblio', $item->{biblionumber}); - C4::Letters::parseletter($letter, 'biblioitems', $item->{biblionumber}); + my $letter = C4::Letters::GetPreparedLetter ( + module => 'circulation', + letter_code => 'CHECKOUT', + branchcode => $branch, + tables => { + 'biblio', $item->{biblionumber}, + 'biblioitems', $item->{biblionumber}, + }, + ); C4::Message->enqueue($letter, $borrower->{borrowernumber}, 'email'); How to update a borrower's last checkout message: @@ -33,10 +39,11 @@ How to update a borrower's last checkout message: =head1 DESCRIPTION -This module presents an OO interface to the message_queue. Previously, you could -only add messages to the message_queue via C. With -this module, you can also get previously inserted messages, manipulate them, and -save them back to the database. +This module presents an OO interface to the message_queue. Previously, +you could only add messages to the message_queue via +C. With this module, you can also get +previously inserted messages, manipulate them, and save them back to the +database. =cut @@ -120,28 +127,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 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 +289,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; @@ -276,26 +309,48 @@ sub append { =head3 $message->message_id +=cut + =head3 $message->borrowernumber +=cut + =head3 $message->subject +=cut + =head3 $message->content +=cut + =head3 $message->metadata +=cut + =head3 $message->letter_code +=cut + =head3 $message->message_transport_type +=cut + =head3 $message->status +=cut + =head3 $message->time_queued +=cut + =head3 $message->to_address +=cut + =head3 $message->from_address +=cut + =head3 $message->content_type =cut @@ -329,14 +384,3 @@ L, L, L John Beppu =cut - -# Local Variables: *** -# mode: cperl *** -# indent-tabs-mode: nil *** -# cperl-close-paren-offset: -4 *** -# cperl-continued-statement-offset: 4 *** -# cperl-indent-level: 4 *** -# cperl-indent-parens-as-block: t *** -# cperl-tab-always-indent: nil *** -# End: *** -# vim:tabstop=8 softtabstop=4 shiftwidth=4 shiftround expandtab