see mail on koha-devel : code cleaning on Search.pm + normalizing API + use of biblio...
[koha_ffzg] / opac / opac-sendbasket.pl
index 82cc818..90835a9 100755 (executable)
@@ -5,10 +5,11 @@ use CGI;
 use Mail::Sendmail;
 use MIME::QuotedPrint;
 use MIME::Base64;
-
-use C4::Search;
+use C4::Context;
+use C4::Biblio;
 use C4::Auth;
 use C4::Interface::CGI::Output;
+use C4::Biblio;
 use HTML::Template;
 
 my $query = new CGI;
@@ -23,6 +24,11 @@ my ($template, $borrowernumber, $cookie)
 
 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');
@@ -40,12 +46,13 @@ if ($email_add) {
 
        my @bibs = split(/\//, $bib_list);
        my @results;
-
+       my $iso2709;
        foreach my $biblionumber (@bibs) {
                $template2->param(biblionumber => $biblionumber);
 
                my $dat = &bibdata($biblionumber);
-               my ($authorcount, $addauthor) = &addauthor($biblionumber);
+               my ($authorcount, $addauthor) = &getaddauthor($biblionumber);
+               my @items                     = &ItemInfo(undef, $biblionumber, 'opac');
 
                $dat->{'additional'}=$addauthor->[0]->{'author'};
                for (my $i = 1; $i < $authorcount; $i++) {
@@ -53,56 +60,102 @@ if ($email_add) {
                }
 
                $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);
        }
 
-       my $resultsarray=\@results;
-       $template2->param(BIBLIO_RESULTS => $resultsarray);
-
-       # Getting template result
-       my $template_res = $template2->output();
-
+    # Getting template result                                                                                             
+    my $template_res = $template2->output();
        # Analysing information and getting mail properties
-       if ($template_res =~ /§SUBJECT§\n(.*)\n§END_SUBJECT§/s) { $mail{'subject'} = $1; }
+       if ($template_res =~ /<SUBJECT>\n(.*)\n<END_SUBJECT>/s) { $mail{'subject'} = $1; }
        else { $mail{'subject'} = "no subject"; }
 
        my $email_header = "";
-       if ($template_res =~ /§HEADER§\n(.*)\n§END_HEADER§/s) { $email_header = $1; }
+       if ($template_res =~ /<HEADER>\n(.*)\n<END_HEADER>/s) { $email_header = $1; }
 
        my $email_file = "basket.txt";
-       if ($template_res =~ /§FILENAME§\n(.*)\n§END_FILENAME§/s) { $email_file = $1; }
+       if ($template_res =~ /<FILENAME>\n(.*)\n<END_FILENAME>/s) { $email_file = $1; }
 
-       if ($template_res =~ /§MESSAGE§\n(.*)\n§END_MESSAGE§/s) { $mail{'body'} = $1; }
+       if ($template_res =~ /<MESSAGE>\n(.*)\n<END_MESSAGE>/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\"";
 
-       $email_header = encode_qp($email_header);
+       my $message = encode_qp( "" );
 
-       $boundary = "--".$boundary;
+# $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;
 
-       # Writing mail
-       $mail{body} = <<END_OF_BODY;
+$boundary = '--'.$boundary;
+$mail{body} = <<END_OF_BODY;
 $boundary
 Content-Type: text/plain; charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable
 
-$email_header
+$message
+$boundary
+Content-Type: application/octet-stream; name="basket"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="basket"
 
+$mail{body}
+$boundary--
+END_OF_BODY
+
+
+
+        <<END_OF_BODY;
 $boundary
-Content-Type: text/plain; name="$email_file"
+Content-Type: text/plain; charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable
-Content-Disposition: attachment; filename="$email_file"
+
+$email_header
 
 $mail{'body'}
+
 $boundary--
 END_OF_BODY
 
+$mail{attachment} = $iso2709;
+#      $mail{body} = <<END_OF_BODY;
+#$boundary
+#Content-Type: text/plain; charset="iso-8859-1"
+#Content-Transfer-Encoding: quoted-printable
+#
+#$email_header
+#
+#$boundary
+#Content-Type: text/plain; name="$email_file"
+#Content-Transfer-Encoding: quoted-printable
+#Content-Disposition: attachment; filename="$email_file"
+#
+#$mail{'body'}
+#
+#$boundary--
+#END_OF_BODY
+
        # Sending mail
        if (sendmail %mail) {
        # do something if it works....
-               warn "Mail sent ok\n";
+#              warn " ".$mail{body};
+#              warn " ".$mail{PJ};
                $template->param(SENT => "1");
                $template->param(email_add => $email_add);
        } else {
@@ -110,10 +163,13 @@ END_OF_BODY
                warn "Error sending mail: $Mail::Sendmail::error \n";
        }
 
-       output_html_with_http_headers $query, $cookie, $template->output;
+    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");
+       $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;
 }