X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-sendbasket.pl;h=d450758341d257bf5e63c4c5cf0a3f13ed42219a;hb=cd14fd421c6908a73174d2cd0267779b9fd4e08f;hp=90835a91d2c56e27998027f052e729d21fe9bf54;hpb=e82eca42c934a22d172f6693c9195598f509d834;p=koha.git diff --git a/opac/opac-sendbasket.pl b/opac/opac-sendbasket.pl index 90835a91d2..d450758341 100755 --- a/opac/opac-sendbasket.pl +++ b/opac/opac-sendbasket.pl @@ -1,175 +1,186 @@ #!/usr/bin/perl + +# 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; -require Exporter; + use CGI; +use Encode qw(encode); + use Mail::Sendmail; use MIME::QuotedPrint; use MIME::Base64; -use C4::Context; use C4::Biblio; +use C4::Items; use C4::Auth; -use C4::Interface::CGI::Output; +use C4::Output; use C4::Biblio; -use HTML::Template; +use C4::Members; my $query = new CGI; -my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "opac-sendbasketform.tmpl", - query => $query, - type => "opac", - authnotrequired => 1, - flagsrequired => {borrow => 1}, - }); - -my $bib_list=$query->param('bib_list'); -my $email_add=$query->param('email_add'); -my $email_sender=$query->param('email_sender'); -my $dbh=C4::Context->dbh; -my $sth; -$sth=$dbh->prepare("select bibid from marc_biblio where biblionumber=? order by bibid"); - - -if ($email_add) { - my $email_from = C4::Context->preference('KohaAdminEmailAddress'); - - my %mail = ( To => $email_add, - From => $email_from); - - my ($template2, $borrowernumber, $cookie) - = get_template_and_user({template_name => "opac-sendbasket.tmpl", - query => $query, - type => "opac", - authnotrequired => 1, - flagsrequired => {borrow => 1}, - }); - - my @bibs = split(/\//, $bib_list); - my @results; - my $iso2709; - foreach my $biblionumber (@bibs) { - $template2->param(biblionumber => $biblionumber); - - my $dat = &bibdata($biblionumber); - my ($authorcount, $addauthor) = &getaddauthor($biblionumber); - my @items = &ItemInfo(undef, $biblionumber, 'opac'); - - $dat->{'additional'}=$addauthor->[0]->{'author'}; - for (my $i = 1; $i < $authorcount; $i++) { - $dat->{'additional'} .= "|" . $addauthor->[$i]->{'author'}; - } - - $dat->{'biblionumber'} = $biblionumber; - $dat->{ITEM_RESULTS} = \@items; - $sth->execute($biblionumber); - my ($bibid) = $sth->fetchrow; - my $record = MARCgetbiblio($dbh,$bibid); - $iso2709 .= $record->as_usmarc(); - - push (@results, $dat); - } - - # Getting template result +my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( + { + template_name => "opac-sendbasketform.tmpl", + query => $query, + type => "opac", + authnotrequired => 0, + flagsrequired => { borrow => 1 }, + } +); + +my $bib_list = $query->param('bib_list'); +my $email_add = $query->param('email_add'); +my $email_sender = $query->param('email_sender'); + +my $dbh = C4::Context->dbh; + +if ( $email_add ) { + my $email_from = C4::Context->preference('KohaAdminEmailAddress'); + my $comment = $query->param('comment'); + my %mail = ( + To => $email_add, + From => $email_from + ); + + my ( $template2, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => "opac-sendbasket.tmpl", + query => $query, + type => "opac", + authnotrequired => 1, + flagsrequired => { borrow => 1 }, + } + ); + + my @bibs = split( /\//, $bib_list ); + my @results; + my $iso2709; + my $marcflavour = C4::Context->preference('marcflavour'); + foreach my $biblionumber (@bibs) { + $template2->param( biblionumber => $biblionumber ); + + my $dat = GetBiblioData($biblionumber); + my $record = GetMarcBiblio($biblionumber); + my $marcnotesarray = GetMarcNotes( $record, $marcflavour ); + my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour ); + my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour ); + + my @items = &GetItemsInfo( $biblionumber, 'opac' ); + + my $hasauthors = 0; + if($dat->{'author'} || @$marcauthorsarray) { + $hasauthors = 1; + } + + + $dat->{MARCNOTES} = $marcnotesarray; + $dat->{MARCSUBJCTS} = $marcsubjctsarray; + $dat->{MARCAUTHORS} = $marcauthorsarray; + $dat->{HASAUTHORS} = $hasauthors; + $dat->{'biblionumber'} = $biblionumber; + $dat->{ITEM_RESULTS} = \@items; + + $iso2709 .= $record->as_usmarc(); + + push( @results, $dat ); + } + + my $resultsarray = \@results; + + my $user = GetMember($borrowernumber); + + $template2->param( + BIBLIO_RESULTS => $resultsarray, + email_sender => $email_sender, + comment => $comment, + firstname => $user->{firstname}, + surname => $user->{surname}, + ); + + # Getting template result my $template_res = $template2->output(); - # Analysing information and getting mail properties - if ($template_res =~ /\n(.*)\n/s) { $mail{'subject'} = $1; } - else { $mail{'subject'} = "no subject"; } - - my $email_header = ""; - if ($template_res =~ /
\n(.*)\n/s) { $email_header = $1; } - - my $email_file = "basket.txt"; - if ($template_res =~ /\n(.*)\n/s) { $email_file = $1; } - - if ($template_res =~ /\n(.*)\n/s) { $mail{'body'} = $1; } - - my $boundary = "====" . time() . "===="; -# $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\""; -# -# $email_header = encode_qp($email_header); -# -# $boundary = "--".$boundary; -# -# # Writing mail -# $mail{body} = - $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\""; - - my $message = encode_qp( "" ); - -# $file = $^X; # This is the perl executable -# -# open (F, $file) or die "Cannot read $file: $!"; -# binmode F; undef $/; -$mail{body} = encode_base64($iso2709); -# close F; - -$boundary = '--'.$boundary; -$mail{body} = <\n(.*)\n/s ) { + $mail{'subject'} = $1; + } + else { $mail{'subject'} = "no subject"; } + + my $email_header = ""; + if ( $template_res =~ /
\n(.*)\n/s ) { + $email_header = $1; + } + + my $email_file = "basket.txt"; + if ( $template_res =~ /\n(.*)\n/s ) { + $email_file = $1; + } + + if ( $template_res =~ /\n(.*)\n/s ) { $body = encode_qp($1); } + + my $boundary = "====" . time() . "===="; + + # $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\""; + # + # $email_header = encode_qp($email_header); + # + # $boundary = "--".$boundary; + # + # # Writing mail + # $mail{body} = + $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\""; + my $isofile = encode_base64(encode("UTF-8", $iso2709)); + $boundary = '--' . $boundary; + $mail{body} = <param(SENT => "1"); - $template->param(email_add => $email_add); - } else { - # do something if it doesnt work.... - warn "Error sending mail: $Mail::Sendmail::error \n"; - } - + # Sending mail + if ( sendmail %mail ) { + # do something if it works.... + $template->param( SENT => "1" ); + } + else { + # do something if it doesnt work.... + warn "Error sending mail: $Mail::Sendmail::error \n"; + $template->param( error => 1 ); + } + $template->param( email_add => $email_add ); output_html_with_http_headers $query, $cookie, $template->output; } else { - $template->param(bib_list => $bib_list); - $template->param(url => "/cgi-bin/koha/opac-sendbasket.pl", - suggestion => C4::Context->preference("suggestion"), - virtualshelves => C4::Context->preference("virtualshelves"), - ); - output_html_with_http_headers $query, $cookie, $template->output; + $template->param( bib_list => $bib_list ); + $template->param( + url => "/cgi-bin/koha/opac-sendbasket.pl", + suggestion => C4::Context->preference("suggestion"), + virtualshelves => C4::Context->preference("virtualshelves"), + ); + output_html_with_http_headers $query, $cookie, $template->output; }