Bug 9374: (follow-up) add FIXME suggesting that use of a regexp is not the long-term...
[koha.git] / labels / label-create-csv.pl
index be29afa..1b0c02c 100755 (executable)
 #!/usr/bin/perl
 
+# Copyright Koha development team 2011
+#
+# 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;
+use warnings;
+
 use CGI;
-use C4::Labels;
-use C4::Auth;
-use C4::Output;
-use C4::Context;
-use C4::Biblio;
 use Text::CSV_XS;
+use Data::Dumper;
+
+use C4::Debug;
+use C4::Creators;
+use C4::Labels;
 
-my $DEBUG = 0;
-my $DEBUG_LPT = 0;
+my $cgi = new CGI;
 
-my $htdocs_path = C4::Context->config('intrahtdocs');
-my $cgi         = new CGI;
+my $batch_id;
+my @label_ids;
+my @item_numbers;
+$batch_id    = $cgi->param('batch_id') if $cgi->param('batch_id');
+my $template_id = $cgi->param('template_id') || undef;
+my $layout_id   = $cgi->param('layout_id') || undef;
+@label_ids   = $cgi->param('label_id') if $cgi->param('label_id');
+@item_numbers  = $cgi->param('item_number') if $cgi->param('item_number');
 
+my $items = undef;
 
-# get the printing settings
-my $template    = GetActiveLabelTemplate();
-my $conf_data   = get_label_options();
+my $csv_file = (@label_ids || @item_numbers ? "label_single_" . scalar(@label_ids || @item_numbers) : "label_batch_$batch_id");
+print $cgi->header(-type        => 'application/vnd.sun.xml.calc',
+                   -encoding    => 'utf-8',
+                   -attachment  => "$csv_file.csv",
+                    );
 
-my $batch_id =   $cgi->param('batch_id');
-my $exportname = 'koha_label_' . $batch_id . '.csv';
 
-print $cgi->header(-type => 'application/vnd.sun.xml.calc',
-                            -encoding    => 'utf-8',
-                            -attachment => $exportname,
-                            -filename => $exportname );
+my $batch = C4::Labels::Batch->retrieve(batch_id => $batch_id);
+my $template = C4::Labels::Template->retrieve(template_id => $template_id, profile_id => 1);
+my $layout = C4::Labels::Layout->retrieve(layout_id => $layout_id);
 
-my $batch_type   = $conf_data->{'type'};
-my $barcodetype  = $conf_data->{'barcodetype'};
-my $printingtype = $conf_data->{'printingtype'};
 
-my @resultsloop = GetLabelItems($batch_id);
+if (@label_ids) {
+    my $batch_items = $batch->get_attr('items');
+    grep {
+        my $label_id = $_;
+        push(@{$items}, grep{$_->{'label_id'} == $label_id;} @{$batch_items});
+    } @label_ids;
+}
+elsif (@item_numbers) {
+    grep {
+        push(@{$items}, {item_number => $_});
+    } @item_numbers;
+}
+else {
+    $items = $batch->get_attr('items');
+}
+
 my $csv = Text::CSV_XS->new();
-my @str_fields = get_text_fields($conf_data->{'id'}, 'codes' );
-for my $item (@resultsloop) {
-    my $record = GetMarcBiblio($item->{biblionumber});
-    my @datafields = map { C4::Labels::GetBarcodeData($_->{'code'},$item,$record) } @str_fields ;
-       my $csvout ;
-       if($csv->combine(@datafields)) {
-               $csvout = $csv->string();
-               print "$csvout\n";
-       } else {
-               warn "CSV ERROR: " . $csv->error_input;
-       }
 
-}    # end for item loop
+foreach my $item (@$items) {
+    my $label = C4::Labels::Label->new(
+                                    batch_id            => $batch_id,
+                                    item_number         => $item->{'item_number'},
+                                    format_string       => $layout->get_attr('format_string'),
+                                      );
+    my $csv_fields = $label->csv_data();
+    if ($csv->combine(@$csv_fields)) {
+        print $csv->string() . "\n";
+    }
+    else {
+        warn sprintf('Text::CSV_XS->combine() returned the following error: %s', $csv->error_input);
+    }
+}
+
+__END__
+
+=head1 NAME
+
+labels/label-create-csv.pl - A script for creating a csv export of labels and label batches in Koha
+
+=head1 ABSTRACT
+
+This script provides the means of producing a csv of labels for items either individually, in groups, or in batches from within Koha.
+
+=head1 AUTHOR
+
+Chris Nighswonger <cnighswonger AT foundations DOT edu>
+
+=head1 COPYRIGHT
+
+Copyright 2009 Foundations Bible College.
+
+=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 2 of the License, or (at your option) any later version.
 
-exit(1);
-# is that the right way to do this ?
+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.
 
+=head1 DISCLAIMER OF WARRANTY
 
+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.
 
+=cut