From 3bc07a705f155a26ec4c27c10ecd31b53469ec29 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 23 Jan 2014 13:12:30 +0100 Subject: [PATCH] Bug 11678: Gather print notices: add --email parameter This patch add the ability to send generated files by email. You can specify several emails. Test plan: - same as Bug 11603 - call the script misc/cronjobs/gather_print_notices.pl with the following parameters: perl misc/cronjobs/gather_print_notices.pl /tmp/test --csv --ods --html --letter_code=CHECKIN -d=: --email="email_one@example.org" --email="email_two@example.org" check your mailbox and verify the email contain 3 attached files: 1 csv, 1 ods and 1 html --- misc/cronjobs/gather_print_notices.pl | 76 ++++++++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 5 deletions(-) diff --git a/misc/cronjobs/gather_print_notices.pl b/misc/cronjobs/gather_print_notices.pl index 2f8f7b9..f93c115 100755 --- a/misc/cronjobs/gather_print_notices.pl +++ b/misc/cronjobs/gather_print_notices.pl @@ -21,8 +21,9 @@ use Pod::Usage; use Getopt::Long; use File::Temp qw( tempdir ); use Koha::DateUtils; +use MIME::Lite; -my ( $stylesheet, $help, $split, $html, $csv, $ods, $delimiter, @letter_codes ); +my ( $stylesheet, $help, $split, $html, $csv, $ods, $delimiter, @letter_codes, @emails ); GetOptions( 'h|help' => \$help, @@ -32,6 +33,7 @@ GetOptions( 'ods' => \$ods, 'd|delimiter:s' => \$delimiter, 'letter_code:s' => \@letter_codes, + 'e|email:s' => \@emails, ) || pod2usage(1); pod2usage(0) if $help; @@ -101,27 +103,44 @@ foreach my $message (@all_messages) { $message->{'content'} = $_; } -print_notices({ +my ( $html_filenames, $csv_filenames, $ods_filenames ); +$html_filenames = print_notices({ messages => \@all_messages, split => $split, output_directory => $output_directory, format => 'html', }) if $html; -print_notices({ +$csv_filenames = print_notices({ messages => \@all_messages, split => $split, output_directory => $output_directory, format => 'csv', }) if $csv; -print_notices({ +$ods_filenames = print_notices({ messages => \@all_messages, split => $split, output_directory => $output_directory, format => 'ods', }) if $ods; +if ( @emails ) { + my $files = { + html => $html_filenames, + csv => $csv_filenames, + ods => $ods_filenames, + }; + for my $email ( @emails ) { + send_files({ + directory => $output_directory, + files => $files, + to => $email, + from => C4::Context->preference('KohaAdminEmailAddress'), # Should be replaced if bug 8000 is pushed + }); + } +} + sub print_notices { my ( $params ) = @_; @@ -251,13 +270,56 @@ sub generate_ods { |; } +sub send_files { + my ( $params ) = @_; + my $directory = $params->{directory}; + my $files = $params->{files}; + my $to = $params->{to}; + my $from = $params->{from}; + return unless $to and $from; + + my $mail = MIME::Lite->new( + From => $from, + To => $to, + Subject => 'Print notices for ' . $today->output(), + Type => 'multipart/mixed', + ); + + while ( my ( $type, $filenames ) = each %$files ) { + for my $filename ( @$filenames ) { + my $mimetype = $type eq 'html' + ? 'text/html' + : $type eq 'csv' + ? 'text/csv' + : $type eq 'ods' + ? 'application/vnd.oasis.opendocument.spreadsheet' + : undef; + + next unless $mimetype; + + my $filepath = File::Spec->catdir( $directory, $filename ); + + next unless $filepath or -f $filepath; + + $mail->attach( + Type => $mimetype, + Path => $filepath, + Filename => $filename, + Encoding => 'base64', + ); + } + } + + $mail->send; +} + =head1 NAME gather_print_notices - Print waiting print notices =head1 SYNOPSIS -gather_print_notices output_directory [-s|--split] [--html] [--csv] [--ods] [--letter_code=LETTER_CODE] [-h|--help] +gather_print_notices output_directory [-s|--split] [--html] [--csv] [--ods] [--letter_code=LETTER_CODE] [-e|--email=your_email@example.org] [-h|--help] Will print all waiting print notices to the output_directory. @@ -302,6 +364,10 @@ This is the same as the csv parameter but using csv2odf to generate an ods file Filter print messages by letter_code. Several letter_code parameters can be given. +=item B<-e|--email> + +E-mail address to send generated files. + =item B<-h|--help> Print a brief help message -- 1.7.10.4