Lines 79-84
BEGIN {
Link Here
|
79 |
&GetMarcSeries |
79 |
&GetMarcSeries |
80 |
&GetMarcHosts |
80 |
&GetMarcHosts |
81 |
GetMarcUrls |
81 |
GetMarcUrls |
|
|
82 |
&GetOpacHideMARC |
83 |
&GetFilteredOpacBiblio |
82 |
&GetUsedMarcStructure |
84 |
&GetUsedMarcStructure |
83 |
&GetXmlBiblio |
85 |
&GetXmlBiblio |
84 |
&GetCOinSBiblio |
86 |
&GetCOinSBiblio |
Lines 1207-1212
sub GetUsedMarcStructure {
Link Here
|
1207 |
return $sth->fetchall_arrayref( {} ); |
1209 |
return $sth->fetchall_arrayref( {} ); |
1208 |
} |
1210 |
} |
1209 |
|
1211 |
|
|
|
1212 |
=head2 GetOpacHideMARC |
1213 |
|
1214 |
Return a hash reference of whether a field, built from |
1215 |
kohafield and tag, is hidden in OPAC (1) or not (0). |
1216 |
|
1217 |
my $OpacHideMARC = GetOpacHideMARC($frameworkcode); |
1218 |
|
1219 |
if ($OpacHideMARC->{'stocknumber'}==1) { |
1220 |
print "Hidden!\n"; |
1221 |
} |
1222 |
|
1223 |
C<$OpacHideMARC> is a ref to a hash which contains a series |
1224 |
of key value pairs indicating if that field (key) is |
1225 |
hidden (value == 1) or not (value == 0). |
1226 |
|
1227 |
C<$frameworkcode> is the framework code. |
1228 |
|
1229 |
=cut |
1230 |
|
1231 |
sub GetOpacHideMARC { |
1232 |
my ( $frameworkcode ) = shift || ''; |
1233 |
my $dbh = C4::Context->dbh; |
1234 |
my $sth = $dbh->prepare("SELECT kohafield AS field, tagfield AS tag, hidden FROM marc_subfield_structure WHERE kohafield>'' AND frameworkcode=? ORDER BY field, tagfield;"); |
1235 |
my $rv = $sth->execute($frameworkcode); |
1236 |
my %opachidemarc; |
1237 |
my $data = $sth->fetchall_hashref( [ qw(field tag) ] ); |
1238 |
foreach my $fullfield (keys %{$data}) { |
1239 |
my @tmpsplit = split(/\./,$fullfield); |
1240 |
my $field = $tmpsplit[-1]; |
1241 |
foreach my $tag (keys %{$data->{$fullfield}}) { |
1242 |
if ($data->{$fullfield}->{$tag}->{'hidden'}>0) { |
1243 |
$opachidemarc{ $field } = 1; |
1244 |
} |
1245 |
elsif ( !exists($opachidemarc{ $field }) ) { |
1246 |
$opachidemarc{ $field } = 0; |
1247 |
} |
1248 |
} |
1249 |
} |
1250 |
return \%opachidemarc; |
1251 |
} |
1252 |
|
1253 |
=head2 GetFilteredOpacBiblio |
1254 |
|
1255 |
Return a MARC::Record which has been filtered based |
1256 |
on the corresponding marc_subfield_structure records |
1257 |
for the given framework by excluding hidden>0. |
1258 |
|
1259 |
my $filtered_record = GetFilteredOpacBiblio($record,$frameworkcode); |
1260 |
|
1261 |
C<$record> is a MARC::Record. |
1262 |
|
1263 |
C<$frameworkcode> is the framework code. |
1264 |
|
1265 |
=cut |
1266 |
|
1267 |
sub GetFilteredOpacBiblio { |
1268 |
my ( $record ) = shift; |
1269 |
if (!$record) { return $record; } |
1270 |
my $filtered_record = $record->clone; |
1271 |
|
1272 |
my ( $frameworkcode ) = shift || ''; |
1273 |
|
1274 |
my $marcsubfieldstructure = GetMarcStructure(0,$frameworkcode); |
1275 |
#if ($marcsubfieldstructure->{'000'}->{'@'}->{hidden}>0) { |
1276 |
# LDR field is excluded from $record->fields(). |
1277 |
# if we hide it here, the MARCXML->MARC::Record->MARCXML transformation blows up. |
1278 |
#} |
1279 |
foreach my $fields ($filtered_record->fields()) { |
1280 |
my $tag = $fields->tag(); |
1281 |
if ($tag>=10) { |
1282 |
foreach my $subpairs ($fields->subfields()) { |
1283 |
my ($subtag,$value) = @$subpairs; |
1284 |
my $hidden = $marcsubfieldstructure->{$tag}->{$subtag}->{hidden}; |
1285 |
$hidden //= 0; |
1286 |
$hidden = ($hidden<=0) ? 0 : 1; |
1287 |
if ($hidden) { |
1288 |
# deleting last subfield doesn't delete field, so |
1289 |
# this detects that case to delete the field. |
1290 |
if (scalar $fields->subfields() <= 1) { |
1291 |
$filtered_record->delete_fields($fields); |
1292 |
} |
1293 |
else { |
1294 |
$fields->delete_subfield( code => $subtag ); |
1295 |
} |
1296 |
} |
1297 |
} |
1298 |
} |
1299 |
# tags less than 10 don't have subfields, use @ trick. |
1300 |
else { |
1301 |
my $hidden = $marcsubfieldstructure->{$tag}->{'@'}->{hidden}; |
1302 |
$hidden //= 0; |
1303 |
$hidden = ($hidden<=0) ? 0 : 1; |
1304 |
if ($hidden) { |
1305 |
$filtered_record->delete_fields($fields); |
1306 |
} |
1307 |
} |
1308 |
} |
1309 |
|
1310 |
return $filtered_record; |
1311 |
} |
1312 |
|
1210 |
=head2 GetMarcFromKohaField |
1313 |
=head2 GetMarcFromKohaField |
1211 |
|
1314 |
|
1212 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |
1315 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |
Lines 1427-1433
sub GetCOinSBiblio {
Link Here
|
1427 |
$oauthors .= "&rft.au=$au"; |
1530 |
$oauthors .= "&rft.au=$au"; |
1428 |
} |
1531 |
} |
1429 |
} |
1532 |
} |
1430 |
$title = "&rft." . $titletype . "title=" . $record->subfield( '245', 'a' ); |
1533 |
$title = $record->subfield( '245', 'a' ) || ''; |
|
|
1534 |
$title = "&rft." . $titletype . "title=" . $title; |
1431 |
$subtitle = $record->subfield( '245', 'b' ) || ''; |
1535 |
$subtitle = $record->subfield( '245', 'b' ) || ''; |
1432 |
$title .= $subtitle; |
1536 |
$title .= $subtitle; |
1433 |
if ($titletype eq 'a') { |
1537 |
if ($titletype eq 'a') { |
Lines 1873-1879
sub GetMarcSubjects {
Link Here
|
1873 |
push @marcsubjects, { |
1977 |
push @marcsubjects, { |
1874 |
MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop, |
1978 |
MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop, |
1875 |
authoritylink => $authoritylink, |
1979 |
authoritylink => $authoritylink, |
1876 |
}; |
1980 |
} if $authoritylink || @subfields_loop; |
1877 |
|
1981 |
|
1878 |
} |
1982 |
} |
1879 |
return \@marcsubjects; |
1983 |
return \@marcsubjects; |