X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FMessage.pm;h=e4dafdb215ec7d5565e8acaa91e7b58db929da37;hb=a57723fc594e92a197da9470959d4067e3d63221;hp=16272ff4c2ddc0711166613d98572e0cbc25d209;hpb=aa9b4d92cdfc9147f4da4033f4cbc0245f0ac9d1;p=koha.git diff --git a/C4/Message.pm b/C4/Message.pm index 16272ff4c2..e4dafdb215 100644 --- a/C4/Message.pm +++ b/C4/Message.pm @@ -1,4 +1,24 @@ package C4::Message; + +# Copyright Liblime 2009 +# Copyright Catalyst IT 2012 +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + + use strict; use warnings; use C4::Context; @@ -17,10 +37,16 @@ How to add a new message to the queue: use C4::Message; 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 $item = Koha::Items->find($itemnumber)->unblessed; + 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: @@ -80,7 +106,7 @@ sub find { if (@$msgs) { return $class->new($msgs->[0]); } else { - return undef; + return; } } @@ -116,7 +142,7 @@ sub find_last_message { if (@$msgs) { return $class->new($msgs->[0]); } else { - return undef; + return; } } @@ -133,8 +159,13 @@ sub enqueue { my ($class, $letter, $borrower, $transport) = @_; my $metadata = _metadata($letter); my $to_address = _to_address($borrower, $transport); + + # Same as render_metadata + my $format ||= sub { $_[0] || "" }; + my $body = join('', map { $format->($_) } @{$metadata->{body}}); + $letter->{content} = $metadata->{header} . $body . $metadata->{footer}; + $letter->{metadata} = Dump($metadata); - #carp "enqueuing... to $to_address"; C4::Letters::EnqueueLetter({ letter => $letter, borrowernumber => $borrower->{borrowernumber}, @@ -280,20 +311,24 @@ If passed a string, it'll append the string to the message. # $object->append($letter_or_item) -- add a new item to a message's content sub append { my ($self, $letter_or_item, $format) = @_; - my $item; + my ( $item, $header, $footer ); if (ref($letter_or_item)) { my $letter = $letter_or_item; my $metadata = _metadata($letter); + $header = $metadata->{header}; + $footer = $metadata->{footer}; $item = $metadata->{body}->[0]; } else { $item = $letter_or_item; } if (not $self->metadata) { carp "Can't append to messages that don't have metadata."; - return undef; + return; } my $metadata = $self->metadata; push @{$metadata->{body}}, $item; + $metadata->{header} = $header; + $metadata->{footer} = $footer; $self->metadata($metadata); my $new_content = $self->render_metadata($format); return $self->content($new_content);