Bug 11603: Preparation step, cleaning up

This patch refactores and adds some good practices:
- use Modern::Perl
- use Pod::Usage
- add POD

Signed-off-by: Frederic Demians <f.demians@tamil.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Jonathan Druart 2014-01-22 11:42:41 +01:00 committed by Tomas Cohen Arazi
parent 154eb5f6f5
commit 9f88fe0069

View file

@ -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 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 <http://www.gnu.org/licenses>.
use strict;
use warnings;
use Modern::Perl;
BEGIN {
# find Koha's Perl modules
@ -35,35 +17,28 @@ use C4::Debug;
use C4::Letters;
use C4::Templates;
use File::Spec;
use Pod::Usage;
use Getopt::Long;
use C4::Log;
sub usage {
print STDERR <<USAGE;
Usage: $0 OUTPUT_DIRECTORY
Will print all waiting print notices to
OUTPUT_DIRECTORY/notices-CURRENT_DATE.html .
-s --split Split messages into separate file by borrower home library to OUTPUT_DIRECTORY/notices-CURRENT_DATE-BRANCHCODE.html
USAGE
exit $_[0];
}
use Koha::DateUtils;
my ( $stylesheet, $help, $split );
GetOptions(
'h|help' => \$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},
});
}
cronlogaction();
@ -82,18 +57,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',
@ -102,43 +86,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;
foreach my $message (@messages) {
C4::Letters::_set_message_status(
{ message_id => $message->{'message_id'}, status => 'sent' } );
}
close $OUTPUT;
foreach my $message ( @$branch_messages ) {
C4::Letters::_set_message_status(
{
message_id => $message->{'message_id'},
status => 'sent'
}
);
}
}
}
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<output_directory>
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 <pianohacker@gmail.com>
Jonathan Druart <jonathan.druart@biblibre.com>
=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 <http://www.gnu.org/licenses>.
=cut