Lines 56-62
my $launcher = sub {
Link Here
|
56 |
my ($params) = @_; |
56 |
my ($params) = @_; |
57 |
my $query = $params->{cgi}; |
57 |
my $query = $params->{cgi}; |
58 |
my $dbh = C4::Context->dbh; |
58 |
my $dbh = C4::Context->dbh; |
59 |
my $op = $query->param('op'); |
59 |
my $op = $query->param('op') // ''; |
60 |
|
60 |
|
61 |
# -- op could be equal to |
61 |
# -- op could be equal to |
62 |
# * fillinput |
62 |
# * fillinput |
Lines 87-141
my $launcher = sub {
Link Here
|
87 |
my $biblio = Koha::Biblios->find($biblionumber); |
87 |
my $biblio = Koha::Biblios->find($biblionumber); |
88 |
$marcrecord = $biblio->metadata->record; |
88 |
$marcrecord = $biblio->metadata->record; |
89 |
|
89 |
|
90 |
my $subfield_value_9 = $biblionumber; |
|
|
91 |
my $subfield_value_0 = $biblionumber; |
92 |
|
93 |
#my $subfield_value_0; |
90 |
#my $subfield_value_0; |
94 |
#$subfield_value_0 = $marcrecord->field('001')->data |
91 |
#$subfield_value_0 = $marcrecord->field('001')->data |
95 |
# if $marcrecord->field('001'); |
92 |
# if $marcrecord->field('001'); |
96 |
my $subfield_value_w; |
93 |
my $subfield_value_w = ''; |
97 |
if ( $marcrecord->field('001') ) { |
94 |
|
98 |
$subfield_value_w = $marcrecord->field('001')->data; |
95 |
my $subfield_value_7 = ''; |
99 |
} else { |
96 |
my $subfield_value_9 = ''; |
100 |
$subfield_value_w = $biblionumber; |
97 |
my $subfield_value_0 = ''; |
|
|
98 |
my $subfield_value_a = ''; |
99 |
my $subfield_value_b = ''; |
100 |
my $subfield_value_c = ''; |
101 |
my $subfield_value_d = ''; |
102 |
my $subfield_value_e = ''; |
103 |
|
104 |
my $subfield_value_h = ''; |
105 |
|
106 |
my $subfield_value_i = ''; |
107 |
my $subfield_value_k = ''; |
108 |
|
109 |
my $subfield_value_p = ''; |
110 |
|
111 |
my $subfield_value_t = ''; |
112 |
|
113 |
my $subfield_value_u = ''; |
114 |
my $subfield_value_v = ''; |
115 |
my $subfield_value_x = ''; |
116 |
my $subfield_value_y = ''; |
117 |
my $subfield_value_z = ''; |
118 |
|
119 |
my $main_entry; |
120 |
if ( $marcrecord->field('1..') ) { |
121 |
$main_entry = $marcrecord->field('1..')->clone; |
122 |
if ( $main_entry->tag eq '111' ) { |
123 |
$main_entry->delete_subfield( code => qr/[94j]/ ); |
124 |
} else { |
125 |
$main_entry->delete_subfield( code => qr/[94e]/ ); |
126 |
} |
101 |
} |
127 |
} |
102 |
|
128 |
my $s7 = "nn" . substr( $marcrecord->leader, 6, 2 ); |
103 |
my $subfield_value_a; |
129 |
if ($main_entry) { |
104 |
my $subfield_value_c; |
130 |
my $c1 = 'n'; |
105 |
my $subfield_value_d; |
131 |
if ( $main_entry->tag =~ /^1[01]/ ) { |
106 |
my $subfield_value_e; |
132 |
$c1 = $main_entry->indicator('1') |
107 |
|
133 |
if $main_entry->tag =~ /^1[01]/; |
108 |
my $subfield_value_h; |
134 |
$c1 = $main_entry->tag eq '100' ? 1 : 2 unless $c1 =~ /\d/; |
109 |
|
135 |
} |
110 |
my $subfield_value_i; |
136 |
my $c0 = |
111 |
|
137 |
( $main_entry->tag eq '100' ) ? 'p' |
112 |
my $subfield_value_p; |
138 |
: ( |
113 |
|
139 |
$main_entry->tag eq '110' ? 'c' |
114 |
my $subfield_value_t; |
140 |
: ( $main_entry->tag eq '111' ? 'm' : 'u' ) |
115 |
if ( $marcrecord->field('245') ) { |
141 |
); |
116 |
$subfield_value_t = $marcrecord->title(); |
142 |
substr( $s7, 0, 2, $c0 . $c1 ); |
117 |
} |
143 |
} |
|
|
144 |
$subfield_value_7 = $s7; |
118 |
|
145 |
|
119 |
my $subfield_value_u; |
146 |
if ($main_entry) { |
120 |
my $subfield_value_v; |
147 |
my $a = $main_entry->as_string; |
121 |
my $subfield_value_x; |
148 |
$a =~ s/\.$// unless $a =~ /\b[a-z]{1,2}\.$/i; |
122 |
my $subfield_value_y; |
149 |
$subfield_value_a = $a; |
123 |
my $subfield_value_z; |
150 |
} |
124 |
|
151 |
|
125 |
$subfield_value_x = $marcrecord->field('022')->subfield("a") |
152 |
my $f245c = $marcrecord->field('245')->clone; |
126 |
if ( $marcrecord->field('022') ); |
153 |
$f245c->delete_subfield( code => 'c' ); |
127 |
$subfield_value_z = $marcrecord->field('020')->subfield("a") |
154 |
my $t = $f245c->as_string; |
128 |
if ( $marcrecord->field('020') ); |
155 |
$t =~ s/(\s*\/\s*|\.)$//; |
|
|
156 |
$t = ucfirst substr( $t, $f245c->indicator('2') ); |
157 |
$subfield_value_t = $t; |
158 |
if ( $marcrecord->field('250') ) { |
159 |
my $b = $marcrecord->field('250')->as_string; |
160 |
$b =~ s/\.$//; |
161 |
$subfield_value_b = $b; |
162 |
} |
163 |
if ( $marcrecord->field('260') ) { |
164 |
my $d = $marcrecord->field('260')->as_string('abc'); |
165 |
$d =~ s/\.$//; |
166 |
$subfield_value_d = $d; |
167 |
} |
168 |
for my $f ( $marcrecord->field('8[013][01]') ) { |
169 |
my $k = $f->as_string('abcdnjltnp'); |
170 |
if ( $f->subfield('x') ) { |
171 |
$k .= ', ISSN ' . $f->subfield('x'); |
172 |
} |
173 |
if ( $f->subfield('v') ) { |
174 |
$k .= ' ; ' . $f->subfield('v'); |
175 |
} |
176 |
$subfield_value_k .= $subfield_value_k ? ". $k" : $k; |
177 |
} |
178 |
for my $f ( $marcrecord->field('022') ) { |
179 |
$subfield_value_x = $f->subfield('a') if $f->subfield('a'); |
180 |
} |
181 |
for my $f ( $marcrecord->field('020') ) { |
182 |
$subfield_value_z = $f->subfield('a') if $f->subfield('a'); |
183 |
} |
184 |
if ( $marcrecord->field('001') ) { |
185 |
my $w = $marcrecord->field('001')->data; |
186 |
if ( $marcrecord->field('003') ) { |
187 |
$w = '(' . $marcrecord->field('003')->data . ')' . $w; |
188 |
} |
189 |
$subfield_value_w = $w; |
190 |
} |
191 |
$subfield_value_w ||= $biblionumber; |
129 |
|
192 |
|
130 |
# escape the 's |
193 |
# escape the 's |
|
|
194 |
$subfield_value_7 =~ s/'/\\'/g; |
131 |
$subfield_value_9 =~ s/'/\\'/g; |
195 |
$subfield_value_9 =~ s/'/\\'/g; |
132 |
$subfield_value_0 =~ s/'/\\'/g; |
196 |
$subfield_value_0 =~ s/'/\\'/g; |
133 |
$subfield_value_a =~ s/'/\\'/g; |
197 |
$subfield_value_a =~ s/'/\\'/g; |
|
|
198 |
$subfield_value_b =~ s/'/\\'/g; |
134 |
$subfield_value_c =~ s/'/\\'/g; |
199 |
$subfield_value_c =~ s/'/\\'/g; |
135 |
$subfield_value_d =~ s/'/\\'/g; |
200 |
$subfield_value_d =~ s/'/\\'/g; |
136 |
$subfield_value_e =~ s/'/\\'/g; |
201 |
$subfield_value_e =~ s/'/\\'/g; |
137 |
$subfield_value_h =~ s/'/\\'/g; |
202 |
$subfield_value_h =~ s/'/\\'/g; |
138 |
$subfield_value_i =~ s/'/\\'/g; |
203 |
$subfield_value_i =~ s/'/\\'/g; |
|
|
204 |
$subfield_value_k =~ s/'/\\'/g; |
139 |
$subfield_value_p =~ s/'/\\'/g; |
205 |
$subfield_value_p =~ s/'/\\'/g; |
140 |
$subfield_value_t =~ s/'/\\'/g; |
206 |
$subfield_value_t =~ s/'/\\'/g; |
141 |
$subfield_value_u =~ s/'/\\'/g; |
207 |
$subfield_value_u =~ s/'/\\'/g; |
Lines 148-161
my $launcher = sub {
Link Here
|
148 |
fillinput => 1, |
214 |
fillinput => 1, |
149 |
index => scalar $query->param('index') . "", |
215 |
index => scalar $query->param('index') . "", |
150 |
biblionumber => $biblionumber ? $biblionumber : "", |
216 |
biblionumber => $biblionumber ? $biblionumber : "", |
|
|
217 |
subfield_value_7 => "$subfield_value_7", |
151 |
subfield_value_9 => "$subfield_value_9", |
218 |
subfield_value_9 => "$subfield_value_9", |
152 |
subfield_value_0 => "$subfield_value_0", |
219 |
subfield_value_0 => "$subfield_value_0", |
153 |
subfield_value_a => "$subfield_value_a", |
220 |
subfield_value_a => "$subfield_value_a", |
|
|
221 |
subfield_value_b => "$subfield_value_b", |
154 |
subfield_value_c => "$subfield_value_c", |
222 |
subfield_value_c => "$subfield_value_c", |
155 |
subfield_value_d => "$subfield_value_d", |
223 |
subfield_value_d => "$subfield_value_d", |
156 |
subfield_value_e => "$subfield_value_e", |
224 |
subfield_value_e => "$subfield_value_e", |
157 |
subfield_value_h => "$subfield_value_h", |
225 |
subfield_value_h => "$subfield_value_h", |
158 |
subfield_value_i => "$subfield_value_i", |
226 |
subfield_value_i => "$subfield_value_i", |
|
|
227 |
subfield_value_k => "$subfield_value_k", |
159 |
subfield_value_p => "$subfield_value_p", |
228 |
subfield_value_p => "$subfield_value_p", |
160 |
subfield_value_t => "$subfield_value_t", |
229 |
subfield_value_t => "$subfield_value_t", |
161 |
subfield_value_u => "$subfield_value_u", |
230 |
subfield_value_u => "$subfield_value_u", |
Lines 169-175
my $launcher = sub {
Link Here
|
169 |
} elsif ( $op eq "do_search" ) { |
238 |
} elsif ( $op eq "do_search" ) { |
170 |
my $search = $query->param('search'); |
239 |
my $search = $query->param('search'); |
171 |
my $itype = $query->param('itype'); |
240 |
my $itype = $query->param('itype'); |
172 |
my $startfrom = $query->param('startfrom'); |
241 |
my $startfrom = $query->param('startfrom') || 0; |
173 |
my $resultsperpage = $query->param('resultsperpage') || 20; |
242 |
my $resultsperpage = $query->param('resultsperpage') || 20; |
174 |
my $orderby; |
243 |
my $orderby; |
175 |
my $op = 'AND'; |
244 |
my $op = 'AND'; |
Lines 206-240
my $launcher = sub {
Link Here
|
206 |
my @arrayresults; |
275 |
my @arrayresults; |
207 |
my @field_data = ($search); |
276 |
my @field_data = ($search); |
208 |
for ( my $i = 0 ; $i < $total && $i < $resultsperpage ; $i++ ) { |
277 |
for ( my $i = 0 ; $i < $total && $i < $resultsperpage ; $i++ ) { |
209 |
my $record = C4::Search::new_record_from_zebra( 'biblioserver', $results->[$i] ); |
278 |
my $record = C4::Search::new_record_from_zebra( 'biblioserver', $results->[$i] ); |
210 |
my $rechash = TransformMarcToKoha( { record => $record } ); |
279 |
my $rechash = TransformMarcToKoha( { record => $record } ); |
211 |
my $pos; |
280 |
my $pos = 0; |
212 |
my $countitems = $rechash->{itembumber} ? 1 : 0; |
281 |
my $countitems = $rechash->{itembumber} ? 1 : 0; |
213 |
while ( index( $rechash->{itemnumber}, '|', $pos ) > 0 ) { |
282 |
if ( $rechash->{itembumber} ) { |
214 |
$countitems += 1; |
283 |
while ( index( $rechash->{itemnumber}, '|', $pos ) > 0 ) { |
215 |
$pos = index( $rechash->{itemnumber}, '|', $pos ) + 1; |
284 |
$countitems += 1; |
|
|
285 |
$pos = index( $rechash->{itemnumber}, '|', $pos ) + 1; |
286 |
} |
216 |
} |
287 |
} |
217 |
$rechash->{totitem} = $countitems; |
288 |
$rechash->{totitem} = $countitems; |
218 |
my @holdingbranches = split /\|/, $rechash->{holdingbranch}; |
289 |
my @holdingbranches = split /\|/, $rechash->{holdingbranch} // ''; |
219 |
my @itemcallnumbers = split /\|/, $rechash->{itemcallnumber}; |
290 |
my @itemcallnumbers = split /\|/, $rechash->{itemcallnumber} // ''; |
220 |
my $CN; |
291 |
my $CN = ''; |
221 |
for ( my $i = 0 ; $i < @holdingbranches ; $i++ ) { |
292 |
for ( my $i = 0 ; $i < @holdingbranches ; $i++ ) { |
222 |
$CN .= $holdingbranches[$i] . " ( " . $itemcallnumbers[$i] . " ) |"; |
293 |
$CN .= $holdingbranches[$i] . " ( " . ( $itemcallnumbers[$i] ? $itemcallnumbers[$i] : '' ) . " ) |"; |
223 |
} |
294 |
} |
224 |
$CN =~ s/ \|$//; |
295 |
$CN =~ s/ \|$//; |
225 |
$rechash->{CN} = $CN; |
296 |
$rechash->{CN} = $CN; |
226 |
push @arrayresults, $rechash; |
297 |
push @arrayresults, $rechash; |
227 |
} |
298 |
} |
228 |
|
299 |
|
229 |
# for(my $i = 0 ; $i <= $#marclist ; $i++) |
|
|
230 |
# { |
231 |
# push @field_data, { term => "marclist", val=>$marclist[$i] }; |
232 |
# push @field_data, { term => "and_or", val=>$and_or[$i] }; |
233 |
# push @field_data, { term => "excluding", val=>$excluding[$i] }; |
234 |
# push @field_data, { term => "operator", val=>$operator[$i] }; |
235 |
# push @field_data, { term => "value", val=>$value[$i] }; |
236 |
# } |
237 |
|
238 |
my @numbers = (); |
300 |
my @numbers = (); |
239 |
|
301 |
|
240 |
if ( $total_hits > $resultsperpage ) { |
302 |
if ( $total_hits > $resultsperpage ) { |
Lines 262-279
my $launcher = sub {
Link Here
|
262 |
$to = $from + $resultsperpage; |
324 |
$to = $from + $resultsperpage; |
263 |
} |
325 |
} |
264 |
|
326 |
|
265 |
# my $link="/cgi-bin/koha/cataloguing/value_builder/unimarc4XX.pl?op=do_search&q=$search_desc&resultsperpage=$resultsperpage&startfrom=$startfrom&search=$search"; |
|
|
266 |
# foreach my $sort (@sort_by){ |
267 |
# $link.="&sort_by=".$sort."&"; |
268 |
# } |
269 |
# $template->param( |
270 |
# pagination_bar => pagination_bar( |
271 |
# $link, |
272 |
# getnbpages($hits, $results_per_page), |
273 |
# $page, |
274 |
# 'page' |
275 |
# ), |
276 |
# ); |
277 |
$template->param( |
327 |
$template->param( |
278 |
result => \@arrayresults, |
328 |
result => \@arrayresults, |
279 |
index => scalar $query->param('index') . "", |
329 |
index => scalar $query->param('index') . "", |