3 # Copyright 2013 ByWater Solutions
4 # Based on circ/ysearch.pl: Copyright 2007 Tamil s.a.r.l.
6 # This file is part of Koha.
8 # Koha is free software; you can redistribute it and/or modify it under the
9 # terms of the GNU General Public License as published by the Free Software
10 # Foundation; either version 3 of the License, or (at your option) any later
13 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License along
18 # with Koha; if not, write to the Free Software Foundation, Inc.,
19 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 batch_records_ajax.pl - A script for searching batch imported records via ajax
27 This script is to be used as a data source for DataTables that load and display
28 the records from an import batch.
35 use JSON qw
/ to_json /;
39 use C4
::Auth qw
/check_cookie_auth/;
45 qw
/import_record_id title status overlay_status overlay_status/;
47 my $import_batch_id = $input->param('import_batch_id');
48 my $offset = $input->param('iDisplayStart');
49 my $results_per_page = $input->param('iDisplayLength');
50 my $sorting_column = $sort_columns[ $input->param('iSortCol_0') ];
51 my $sorting_direction = $input->param('sSortDir_0');
53 $results_per_page = undef if ( $results_per_page == -1 );
55 binmode STDOUT
, ":encoding(UTF-8)";
56 print $input->header( -type
=> 'text/plain', -charset
=> 'UTF-8' );
58 my ( $auth_status, $sessionID ) =
59 check_cookie_auth
( $input->cookie('CGISESSID'), { tools
=> 'manage_staged_marc' } );
60 if ( $auth_status ne "ok" ) {
64 my $batch = GetImportBatch
($import_batch_id);
66 GetImportRecordsRange
( $import_batch_id, $offset, $results_per_page, undef,
67 { order_by
=> $sorting_column, order_by_direction
=> $sorting_direction } );
69 foreach my $record (@
$records) {
70 my $citation = $record->{'title'} || $record->{'authorized_heading'};
71 $citation .= " $record->{'author'}" if $record->{'author'};
72 $citation .= " (" if $record->{'issn'} or $record->{'isbn'};
73 $citation .= $record->{'isbn'} if $record->{'isbn'};
74 $citation .= ", " if $record->{'issn'} and $record->{'isbn'};
75 $citation .= $record->{'issn'} if $record->{'issn'};
76 $citation .= ")" if $record->{'issn'} or $record->{'isbn'};
78 my $match = GetImportRecordMatches
( $record->{'import_record_id'}, 1 );
79 my $match_citation = '';
81 if ( $#$match > -1 ) {
82 if ( $match->[0]->{'record_type'} eq 'biblio' ) {
83 $match_citation .= $match->[0]->{'title'}
84 if defined( $match->[0]->{'title'} );
85 $match_citation .= ' ' . $match->[0]->{'author'}
86 if defined( $match->[0]->{'author'} );
87 $match_id = $match->[0]->{'biblionumber'};
89 elsif ( $match->[0]->{'record_type'} eq 'auth' ) {
90 if ( defined( $match->[0]->{'authorized_heading'} ) ) {
91 $match_citation .= $match->[0]->{'authorized_heading'};
92 $match_id = $match->[0]->{'candidate_match_id'};
99 DT_RowId
=> $record->{'import_record_id'},
100 import_record_id
=> $record->{'import_record_id'},
101 citation
=> $citation,
102 status
=> $record->{'status'},
103 overlay_status
=> $record->{'overlay_status'},
104 match_citation
=> $match_citation,
105 matched
=> $record->{'matched_biblionumber'}
106 || $record->{'matched_authid'}
108 score
=> $#$match > -1 ? $match->[0]->{'score'} : 0,
109 match_id
=> $match_id,
114 $data->{'iTotalRecords'} = $batch->{'num_records'};
115 $data->{'iTotalDisplayRecords'} = $batch->{'num_records'};
116 $data->{'sEcho'} = $input->param('sEcho') || undef;
117 $data->{'aaData'} = \
@list;
119 print to_json
($data);