Skip to content
Browse files

Merge branch 'Bug3482' into ptfs-master

  • Loading branch information...
2 parents d5b3f30 + 7c57f26 commit 65f3dd81d02e2d71884e4296e6f6258a57a020b2 J. David Bavousett committed May 5, 2010
View
36 C4/Letters.pm
@@ -27,6 +27,7 @@ use C4::Log;
use C4::SMS;
use C4::Debug;
use C4::Dates qw/format_date/;
+use Date::Calc qw( Add_Delta_Days );
use Encode;
use Carp;
@@ -38,7 +39,7 @@ BEGIN {
$VERSION = 3.01;
@ISA = qw(Exporter);
@EXPORT = qw(
- &GetLetters &getletter &addalert &getalert &delalert &findrelatedto &SendAlerts
+ &GetLetters &getletter &addalert &getalert &delalert &findrelatedto &SendAlerts GetPrintMessages
);
}
@@ -530,6 +531,19 @@ sub parseletter {
}
my $values = $sth->fetchrow_hashref;
+
+ # TEMPORARY hack until the expirationdate column is added to reserves
+ if ( $table eq 'reserves' && $values->{'waitingdate'} ) {
+ my @waitingdate = split /-/, $values->{'waitingdate'};
+
+ $values->{'expirationdate'} = C4::Dates->new(
+ sprintf(
+ '%04d-%02d-%02d',
+ Add_Delta_Days( @waitingdate, C4::Context->preference( 'ReservesMaxPickUpDelay' ) )
+ ),
+ 'iso'
+ )->output();
+ }
# and get all fields from the table
if ($table ne 'items' ) {
@@ -681,6 +695,26 @@ sub GetRSSMessages {
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
View
44 C4/Reserves.pm
@@ -34,7 +34,7 @@ use C4::Stats;
# 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 );
@@ -1608,9 +1608,19 @@ sub _koha_notify_reserve {
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 *
@@ -1624,19 +1634,33 @@ sub _koha_notify_reserve {
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'} );
}
+ my $today = C4::Dates->new()->output();
+ $letter->{'title'} =~ s/<<today>>/$today/g;
+ $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,
@@ -1647,7 +1671,7 @@ sub _koha_notify_reserve {
);
}
- if ( -1 != firstidx { $_ eq 'sms' } @{$messagingprefs->{transports}} ) {
+ if ( grep { $_ eq 'sms' } @{$messagingprefs->{transports}} ) {
C4::Letters::EnqueueLetter(
{ letter => $letter,
borrowernumber => $borrowernumber,
View
1 installer/data/mysql/en/mandatory/message_transport_types.sql
@@ -2,4 +2,5 @@ INSERT INTO message_transport_types
(message_transport_type)
values
('email'),
+('print'),
('sms');
View
24 koha-tmpl/intranet-tmpl/prog/en/modules/batch/print-notices.tmpl
@@ -0,0 +1,24 @@
+<!-- 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>
View
92 misc/cronjobs/gather_print_notices.pl
@@ -0,0 +1,92 @@
+#!/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/holdnotices-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, "holdnotices-" . $today->output( 'iso' ) . ".html" );
+
+my $template = C4::Output::gettemplate( 'batch/print-notices.tmpl', 'intranet', new CGI );
+my $stylesheet_contents = '';
+
+if ($stylesheet) {
+ 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' } );
+}

0 comments on commit 65f3dd8

Please sign in to comment.
Something went wrong with that request. Please try again.