|
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') . "", |