$VERSION = 3.01;
@ISA = qw(Exporter);
@EXPORT = qw(
- &GetLetters &getletter &addalert &getalert &delalert &findrelatedto &SendAlerts
+ &GetLetters &getletter &addalert &getalert &delalert &findrelatedto &SendAlerts GetPrintMessages
);
}
borrowernumber => $params->{'borrowernumber'}, } );
}
+=head2 GetPrintMessages
+
+=over 4
+
+my $message_list = GetPrintMessages( { borrowernumber => $borrowernumber } )
+
+Returns a arrayref of all queued print messages (optionally, for a particular
+person).
+
+=back
+
+=cut
+
+sub GetPrintMessages {
+ my $params = shift || {};
+
+ return _get_unsent_messages( { message_transport_type => 'print',
+ borrowernumber => $params->{'borrowernumber'}, } );
+}
+
=head2 GetQueuedMessages ([$hashref])
=over 4
# for _koha_notify_reserve
use C4::Members::Messaging;
-use C4::Members qw( GetMember );
+use C4::Members qw();
use C4::Letters;
use C4::Branch qw( GetBranchDetail );
use C4::Dates qw( format_date_in_iso );
my ($itemnumber, $borrowernumber, $biblionumber) = @_;
my $dbh = C4::Context->dbh;
- my $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber, message_name => 'Hold Filled' } );
-
- return if ( !defined( $messagingprefs->{'letter_code'} ) );
+ my $borrower = C4::Members::GetMember( $borrowernumber );
+ my $letter_code;
+ my $print_mode = 0;
+ my $messagingprefs;
+ if ( $borrower->{'email'} || $borrower->{'smsalertnumber'} ) {
+ $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber, message_name => 'Hold Filled' } );
+
+ return if ( !defined( $messagingprefs->{'letter_code'} ) );
+ $letter_code = $messagingprefs->{'letter_code'};
+ } else {
+ $letter_code = 'HOLD_PRINT';
+ $print_mode = 1;
+ }
my $sth = $dbh->prepare("
SELECT *
my $admin_email_address = $branch_details->{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
- my $letter = getletter( 'reserves', $messagingprefs->{'letter_code'} );
+ my $letter = getletter( 'reserves', $letter_code );
+ die "Could not find a letter called '$letter_code' in the 'reserves' module" unless( $letter );
C4::Letters::parseletter( $letter, 'branches', $reserve->{'branchcode'} );
- C4::Letters::parseletter( $letter, 'borrowers', $reserve->{'borrowernumber'} );
- C4::Letters::parseletter( $letter, 'biblio', $reserve->{'biblionumber'} );
- C4::Letters::parseletter( $letter, 'reserves', $reserve->{'borrowernumber'}, $reserve->{'biblionumber'} );
+ C4::Letters::parseletter( $letter, 'borrowers', $borrowernumber );
+ C4::Letters::parseletter( $letter, 'biblio', $biblionumber );
+ C4::Letters::parseletter( $letter, 'reserves', $borrowernumber, $biblionumber );
if ( $reserve->{'itemnumber'} ) {
C4::Letters::parseletter( $letter, 'items', $reserve->{'itemnumber'} );
$letter->{'content'} =~ s/<<today>>/$today/g;
$letter->{'content'} =~ s/<<[a-z0-9_]+\.[a-z0-9]+>>//g; #remove any stragglers
- if ( -1 != firstidx { $_ eq 'email' } @{$messagingprefs->{transports}} ) {
+ if ( $print_mode ) {
+ C4::Letters::EnqueueLetter( {
+ letter => $letter,
+ borrowernumber => $borrowernumber,
+ message_transport_type => 'print',
+ } );
+
+ return;
+ }
+
+ if ( grep { $_ eq 'email' } @{$messagingprefs->{transports}} ) {
# aka, 'email' in ->{'transports'}
C4::Letters::EnqueueLetter(
{ letter => $letter,
);
}
- if ( -1 != firstidx { $_ eq 'sms' } @{$messagingprefs->{transports}} ) {
+ if ( grep { $_ eq 'sms' } @{$messagingprefs->{transports}} ) {
C4::Letters::EnqueueLetter(
{ letter => $letter,
borrowernumber => $borrowernumber,
(message_transport_type)
values
('email'),
+('print'),
('sms');
--- /dev/null
+<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
+ <title>Print Notices for <!-- TMPL_VAR NAME="today" --></title>
+ <style type="text/css">
+ <!--
+ .message { page-break-after: always }
+ pre { font-family: monospace }
+ -->
+ </style>
+ <!-- TMPL_IF NAME="stylesheet" -->
+ <style type="text/css">
+ <!--
+ <!-- TMPL_VAR NAME="stylesheet" -->
+ -->
+ </style>
+ <!-- /TMPL_IF -->
+</head>
+<body>
+ <!-- TMPL_LOOP NAME="messages" -->
+ <div class="message">
+ <pre><!-- TMPL_VAR NAME="content" --></pre>
+ </div>
+ <!--/TMPL_LOOP -->
+</body>
+</html>
--- /dev/null
+#!/usr/bin/perl -w
+
+# Copyright 2009 Jesse Weaver
+#
+# 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 2 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, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+
+use strict;
+use warnings;
+
+BEGIN {
+
+ # find Koha's Perl modules
+ # test carefully before changing this
+ use FindBin;
+ eval { require "$FindBin::Bin/../kohalib.pl" };
+}
+
+use CGI; # NOT a CGI script, this is just to keep C4::Output::gettemplate happy
+use C4::Context;
+use C4::Dates;
+use C4::Debug;
+use C4::Letters;
+use C4::Output;
+use File::Spec;
+use Getopt::Long;
+
+sub usage {
+ print STDERR <<USAGE;
+Usage: $0 [ -s STYLESHEET ] OUTPUT_DIRECTORY
+ Will print all waiting print notices to
+ OUTPUT_DIRECTORY/notices-CURRENT_DATE.html .
+ If the filename of a CSS stylesheet is specified with -s, the contents of that
+ file will be included in the HTML.
+USAGE
+ exit $_[0];
+}
+
+my ( $stylesheet, $help );
+
+GetOptions(
+ 's:s' => \$stylesheet,
+ 'h|help' => \$help,
+) || usage( 1 );
+
+usage( 0 ) if ( $help );
+
+my $output_directory = $ARGV[0];
+
+if ( !$output_directory || !-d $output_directory ) {
+ print STDERR "Error: You must specify a valid directory to dump the print notices in.\n";
+ usage( 1 );
+}
+
+my $today = C4::Dates->new();
+my @messages = @{ GetPrintMessages() };
+exit unless( @messages );
+
+open OUTPUT, '>', File::Spec->catdir( $output_directory, "notices-" . $today->output( 'iso' ) . ".html" );
+
+my $template = C4::Output::gettemplate( 'batch/print-notices.tmpl', 'intranet', new CGI );
+my $stylesheet_contents = '';
+
+open STYLESHEET, '<', $stylesheet;
+while ( <STYLESHEET> ) { $stylesheet_contents .= $_ }
+close STYLESHEET;
+
+$template->param(
+ stylesheet => $stylesheet_contents,
+ today => $today->output(),
+ messages => \@messages,
+);
+
+print OUTPUT $template->output;
+
+foreach my $message ( @messages ) {
+ C4::Letters::_set_message_status( { message_id => $message->{'message_id'}, status => 'sent' } );
+}