From 43ef5c441722163c3c611b257d784400517bd639 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 22 Jan 2014 11:42:41 +0100 Subject: [PATCH] Bug 11603: Preparation step, cleaning up This patch refactores and adds some good practices: - use Modern::Perl - use Pod::Usage - add POD --- misc/cronjobs/gather_print_notices.pl | 162 +++++++++++++++++++--------------- 1 file changed, 92 insertions(+), 70 deletions(-) diff --git a/misc/cronjobs/gather_print_notices.pl b/misc/cronjobs/gather_print_notices.pl index 5903659..0328e0c 100755 --- a/misc/cronjobs/gather_print_notices.pl +++ b/misc/cronjobs/gather_print_notices.pl @@ -1,24 +1,6 @@ #!/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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -use strict; -use warnings; +use Modern::Perl; BEGIN { # find Koha's Perl modules @@ -35,34 +17,26 @@ use C4::Debug; use C4::Letters; use C4::Templates; use File::Spec; +use Pod::Usage; use Getopt::Long; - -sub usage { - print STDERR < \$help, 's|split' => \$split, -) || usage(1); +) || pod2usage(1); -usage(0) if ($help); +pod2usage(0) if $help; my $output_directory = $ARGV[0]; if ( !$output_directory || !-d $output_directory || !-w $output_directory ) { - print STDERR -"Error: You must specify a valid and writeable directory to dump the print notices in.\n"; - usage(1); + pod2usage({ + -exitval => 1, + -msg => qq{\nError: You must specify a valid and writeable directory to dump the print notices in.\n}, + }); } my $today = C4::Dates->new(); @@ -79,18 +53,27 @@ foreach my $message (@all_messages) { my $OUTPUT; -if ($split) { - my %messages_by_branch; - foreach my $message (@all_messages) { - push( @{ $messages_by_branch{ $message->{'branchcode'} } }, $message ); +print_notices_html({ messages => \@all_messages, split => $split }); + +sub print_notices_html { + my ( $params ) = @_; + + my $messages = $params->{messages}; + my $split = $params->{split}; + + my $messages_by_branch; + if ( $split ) { + foreach my $message (@$messages) { + push( @{ $messages_by_branch->{ $message->{'branchcode'} } }, $message ); + } + } else { + $messages_by_branch->{all_branches} = $messages; } - foreach my $branchcode ( keys %messages_by_branch ) { - my @messages = @{ $messages_by_branch{$branchcode} }; - my $output_file = File::Spec->catdir( $output_directory, - "holdnotices-" . $today->output('iso') . "-$branchcode.html" ); - open $OUTPUT, '>', $output_file - or die "Could not open $output_file: $!"; + while ( my ( $branchcode, $branch_messages ) = each %$messages_by_branch ) { + my $filename = $split + ? 'holdnotices-' . $today->output('iso') . "-$branchcode.html" + : 'holdnotices-' . $today->output('iso') . ".html"; my $template = C4::Templates::gettemplate( 'batch/print-notices.tt', 'intranet', @@ -99,43 +82,82 @@ if ($split) { $template->param( stylesheet => C4::Context->preference("NoticeCSS"), today => $today->output(), - messages => \@messages, + messages => $branch_messages, ); + my $output_file = File::Spec->catdir( $output_directory, $filename ) + open my $OUTPUT, '>', $output_file + or die "Could not open $output_file: $!"; print $OUTPUT $template->output; + close $OUTPUT; - foreach my $message (@messages) { + foreach my $message ( @$branch_messages ) { C4::Letters::_set_message_status( - { message_id => $message->{'message_id'}, status => 'sent' } ); + { + message_id => $message->{'message_id'}, + status => 'sent' + } + ); } - - close $OUTPUT; } } -else { - my $output_file = File::Spec->catdir( $output_directory, - "holdnotices-" . $today->output('iso') . ".html" ); - open $OUTPUT, '>', $output_file - or die "Could not open $output_file: $!"; +=head1 NAME - my $template = - C4::Templates::gettemplate( 'batch/print-notices.tt', 'intranet', - new CGI ); +gather_print_notices - Print waiting print notices - $template->param( - stylesheet => C4::Context->preference("NoticeCSS"), - today => $today->output(), - messages => \@all_messages, - ); +=head1 SYNOPSIS - print $OUTPUT $template->output; +gather_print_notices output_directory [-s|--split] [-h|--help] - foreach my $message (@all_messages) { - C4::Letters::_set_message_status( - { message_id => $message->{'message_id'}, status => 'sent' } ); - } +Will print all waiting print notices to the output_directory. - close $OUTPUT; +The generated filename will be holdnotices-TODAY.html or holdnotices-TODAY-BRANCHCODE.html if the --split parameter is given. -} +=head1 OPTIONS + +=over + +=item B + +Define the output directory where the files will be generated. + +=item B<-s|--split> + +Split messages into separate file by borrower home library to OUTPUT_DIRECTORY/notices-CURRENT_DATE-BRANCHCODE.html + +=item B<-h|--help> + +Print a brief help message + +=back + +=head1 AUTHOR + +Jesse Weaver + +Jonathan Druart + +=head1 COPYRIGHT + +Copyright 2009 Jesse Weaver + +Copyright 2014 BibLibre + +=head1 LICENSE +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 . + +=cut -- 2.0.0.rc2