X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=tools%2Fmanage-marc-import.pl;h=47803c374b27fb27bbb65bb006e5e8f93e40edb7;hb=e5cea455d00c52b4a81e87b4dc77315c03ce8630;hp=8a8d9e893b07a2bb384a4da1487619032b40c81e;hpb=5d4d33b22d72e16a4f6a4579ea4c2d98dfa091ab;p=koha.git diff --git a/tools/manage-marc-import.pl b/tools/manage-marc-import.pl index 8a8d9e893b..47803c374b 100755 --- a/tools/manage-marc-import.pl +++ b/tools/manage-marc-import.pl @@ -4,24 +4,24 @@ # # 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 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. +# 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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . use strict; use warnings; # standard or CPAN modules used -use CGI; +use CGI qw ( -utf8 ); use CGI::Cookie; use MARC::File::USMARC; @@ -29,13 +29,13 @@ use MARC::File::USMARC; use C4::Context; use C4::Koha; use C4::Auth; +use C4::AuthoritiesMarc; use C4::Output; use C4::Biblio; use C4::ImportBatch; use C4::Matcher; use C4::BackgroundJob; -use C4::Labels::Batch 1.000000; -use C4::Branch qw(get_branch_code_from_name); +use C4::Labels::Batch; my $script_name = "/cgi-bin/koha/tools/manage-marc-import.pl"; @@ -50,7 +50,7 @@ my $offset = $input->param('offset') || 0; my $results_per_page = $input->param('results_per_page') || 25; my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "tools/manage-marc-import.tmpl", + = get_template_and_user({template_name => "tools/manage-marc-import.tt", query => $input, type => "intranet", authnotrequired => 0, @@ -59,7 +59,7 @@ my ($template, $loggedinuser, $cookie) }); my %cookies = parse CGI::Cookie($cookie); -my $sessionID = $cookies{'CGISESSID'}->value; +our $sessionID = $cookies{'CGISESSID'}->value; our $dbh = C4::Context->dbh; # Frameworks selection loop @@ -99,7 +99,7 @@ if ($op eq "") { if ($import_batch_id eq '') { import_batches_list($template, $offset, $results_per_page); } else { - import_biblios_list($template, $import_batch_id, $offset, $results_per_page); + import_records_list($template, $import_batch_id, $offset, $results_per_page); } } elsif ($op eq "commit-batch") { if ($completedJobID) { @@ -108,14 +108,14 @@ if ($op eq "") { my $framework = $input->param('framework'); commit_batch($template, $import_batch_id, $framework); } - import_biblios_list($template, $import_batch_id, $offset, $results_per_page); + import_records_list($template, $import_batch_id, $offset, $results_per_page); } elsif ($op eq "revert-batch") { if ($completedJobID) { add_saved_job_results_to_template($template, $completedJobID); } else { revert_batch($template, $import_batch_id); } - import_biblios_list($template, $import_batch_id, $offset, $results_per_page); + import_records_list($template, $import_batch_id, $offset, $results_per_page); } elsif ($op eq "clean-batch") { CleanBatch($import_batch_id); import_batches_list($template, $offset, $results_per_page); @@ -131,7 +131,7 @@ if ($op eq "") { my $item_action = $input->param('item_action'); redo_matching($template, $import_batch_id, $new_matcher_id, $current_matcher_id, $overlay_action, $nomatch_action, $item_action); - import_biblios_list($template, $import_batch_id, $offset, $results_per_page); + import_records_list($template, $import_batch_id, $offset, $results_per_page); } output_html_with_http_headers $input, $cookie, $template->output; @@ -163,21 +163,17 @@ sub redo_matching { $template->param('changed_item_action' => 1); } - if ($new_matcher_id eq $current_matcher_id) { - return; - } - my $num_with_matches = 0; if (defined $new_matcher_id and $new_matcher_id ne "") { my $matcher = C4::Matcher->fetch($new_matcher_id); if (defined $matcher) { - $num_with_matches = BatchFindBibDuplicates($import_batch_id, $matcher); + $num_with_matches = BatchFindDuplicates($import_batch_id, $matcher); SetImportBatchMatcher($import_batch_id, $new_matcher_id); } else { $rematch_failed = 1; } } else { - $num_with_matches = BatchFindBibDuplicates($import_batch_id, undef); + $num_with_matches = BatchFindDuplicates($import_batch_id, undef); SetImportBatchMatcher($import_batch_id, undef); SetImportBatchOverlayAction('create_new'); } @@ -214,13 +210,14 @@ sub import_batches_list { foreach my $batch (@$batches) { push @list, { import_batch_id => $batch->{'import_batch_id'}, - num_biblios => $batch->{'num_biblios'}, + num_records => $batch->{'num_records'}, num_items => $batch->{'num_items'}, upload_timestamp => $batch->{'upload_timestamp'}, import_status => $batch->{'import_status'}, file_name => $batch->{'file_name'} || "($batch->{'batch_type'})", comments => $batch->{'comments'}, can_clean => ($batch->{'import_status'} ne 'cleaned') ? 1 : 0, + record_type => $batch->{'record_type'}, }; } $template->param(batch_list => \@list); @@ -243,8 +240,8 @@ sub commit_batch { $job = put_in_background($import_batch_id); $callback = progress_callback($job, $dbh); } - my ($num_added, $num_updated, $num_items_added, $num_items_errored, $num_ignored) = - BatchCommitBibRecords($import_batch_id, $framework, 50, $callback); + my ($num_added, $num_updated, $num_items_added, $num_items_replaced, $num_items_errored, $num_ignored) = + BatchCommitRecords($import_batch_id, $framework, 50, $callback); $dbh->commit(); my $results = { @@ -252,6 +249,7 @@ sub commit_batch { num_added => $num_added, num_updated => $num_updated, num_items_added => $num_items_added, + num_items_replaced => $num_items_replaced, num_items_errored => $num_items_errored, num_ignored => $num_ignored }; @@ -273,7 +271,7 @@ sub revert_batch { $callback = progress_callback($job, $dbh); } my ($num_deleted, $num_errors, $num_reverted, $num_items_deleted, $num_ignored) = - BatchRevertBibRecords($import_batch_id, 50, $callback); + BatchRevertRecords($import_batch_id, 50, $callback); $dbh->commit(); my $results = { @@ -295,7 +293,7 @@ sub put_in_background { my $import_batch_id = shift; my $batch = GetImportBatch($import_batch_id); - my $job = C4::BackgroundJob->new($sessionID, $batch->{'file_name'}, $ENV{'SCRIPT_NAME'}, $batch->{'num_biblios'}); + my $job = C4::BackgroundJob->new($sessionID, $batch->{'file_name'}, $ENV{'SCRIPT_NAME'}, $batch->{'num_records'}); my $jobID = $job->id(); # fork off @@ -350,57 +348,24 @@ sub add_saved_job_results_to_template { add_results_to_template($template, $results); } -sub import_biblios_list { +sub import_records_list { my ($template, $import_batch_id, $offset, $results_per_page) = @_; my $batch = GetImportBatch($import_batch_id); - my $biblios = GetImportBibliosRange($import_batch_id, $offset, $results_per_page); - my @list = (); - foreach my $biblio (@$biblios) { - my $citation = $biblio->{'title'}; - $citation .= " $biblio->{'author'}" if $biblio->{'author'}; - $citation .= " (" if $biblio->{'issn'} or $biblio->{'isbn'}; - $citation .= $biblio->{'isbn'} if $biblio->{'isbn'}; - $citation .= ", " if $biblio->{'issn'} and $biblio->{'isbn'}; - $citation .= $biblio->{'issn'} if $biblio->{'issn'}; - $citation .= ")" if $biblio->{'issn'} or $biblio->{'isbn'}; - - my $match = GetImportRecordMatches($biblio->{'import_record_id'}, 1); - my $match_citation = ''; - if ($#$match > -1) { - $match_citation .= $match->[0]->{'title'} if defined($match->[0]->{'title'}); - $match_citation .= ' ' . $match->[0]->{'author'} if defined($match->[0]->{'author'}); - } - - push @list, - { import_record_id => $biblio->{'import_record_id'}, - final_match_biblionumber => $biblio->{'matched_biblionumber'}, - citation => $citation, - status => $biblio->{'status'}, - record_sequence => $biblio->{'record_sequence'}, - overlay_status => $biblio->{'overlay_status'}, - match_biblionumber => $#$match > -1 ? $match->[0]->{'biblionumber'} : 0, - match_citation => $match_citation, - match_score => $#$match > -1 ? $match->[0]->{'score'} : 0, - }; - } - my $num_biblios = $batch->{'num_biblios'}; - $template->param(biblio_list => \@list); - add_page_numbers($template, $offset, $results_per_page, $num_biblios); - $template->param(offset => $offset); - $template->param(range_top => $offset + $results_per_page - 1); - $template->param(num_results => $num_biblios); - $template->param(results_per_page => $results_per_page); $template->param(import_batch_id => $import_batch_id); + my $overlay_action = GetImportBatchOverlayAction($import_batch_id); $template->param("overlay_action_${overlay_action}" => 1); $template->param(overlay_action => $overlay_action); + my $nomatch_action = GetImportBatchNoMatchAction($import_batch_id); $template->param("nomatch_action_${nomatch_action}" => 1); $template->param(nomatch_action => $nomatch_action); + my $item_action = GetImportBatchItemAction($import_batch_id); $template->param("item_action_${item_action}" => 1); $template->param(item_action => $item_action); + batch_info($template, $batch); } @@ -412,12 +377,13 @@ sub batch_info { $template->param(comments => $batch->{'comments'}); $template->param(import_status => $batch->{'import_status'}); $template->param(upload_timestamp => $batch->{'upload_timestamp'}); - $template->param(num_biblios => $batch->{'num_biblios'}); - $template->param(num_items => $batch->{'num_biblios'}); + $template->{VARS}->{'record_type'} = $batch->{'record_type'}; + $template->param(num_records => $batch->{'num_records'}); + $template->param(num_items => $batch->{'num_items'}); if ($batch->{'import_status'} ne 'cleaned') { $template->param(can_clean => 1); } - if ($batch->{'num_biblios'} > 0) { + if ($batch->{'num_records'} > 0) { if ($batch->{'import_status'} eq 'staged' or $batch->{'import_status'} eq 'reverted') { $template->param(can_commit => 1); }