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 SUBSTRING(kohafield,LOCATE('.',kohafield)+1,40) AS field,tagfield AS tag,hidden FROM marc_subfield_structure WHERE LENGTH(TRIM(kohafield))>0 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 $field (keys %{$data}) { |
1239 |
foreach my $tag (keys %{$data->{$field}}) { |
1240 |
if ($data->{$field}->{$tag}->{'hidden'}>0) { |
1241 |
$opachidemarc{ $field } = 1; |
1242 |
} |
1243 |
elsif ( !exists($opachidemarc{ $field }) ) { |
1244 |
$opachidemarc{ $field } = 0; |
1245 |
} |
1246 |
} |
1247 |
} |
1248 |
return \%opachidemarc; |
1249 |
} |
1250 |
|
1251 |
=head2 GetFilteredOpacBiblio |
1252 |
|
1253 |
Return a MARC::Record which has been filtered based |
1254 |
on the corresponding marc_subfield_structure records |
1255 |
for the given framework by excluding hidden>0. |
1256 |
|
1257 |
my $filtered_record = GetFilteredOpacBiblio($record,$frameworkcode); |
1258 |
|
1259 |
C<$record> is a MARC::Record. |
1260 |
|
1261 |
C<$frameworkcode> is the framework code. |
1262 |
|
1263 |
=cut |
1264 |
|
1265 |
sub GetFilteredOpacBiblio { |
1266 |
my ( $record ) = shift; |
1267 |
if (!$record) { return $record; } |
1268 |
|
1269 |
my ( $frameworkcode ) = shift || ''; |
1270 |
|
1271 |
my $marcsubfieldstructure = GetMarcStructure(0,$frameworkcode); |
1272 |
if ($marcsubfieldstructure->{'000'}->{'@'}->{hidden}>0) { |
1273 |
# LDR field is excluded from $record->fields(). |
1274 |
# if we hide it here, the MARCXML->MARC::Record->MARCXML transformation blows up. |
1275 |
print STDERR "Supposed to hide LEADER\n"; |
1276 |
} |
1277 |
foreach my $fields ($record->fields()) { |
1278 |
my $tag = $fields->tag(); |
1279 |
if ($tag>=10) { |
1280 |
foreach my $subpairs ($fields->subfields()) { |
1281 |
my ($subtag,$value) = @$subpairs; |
1282 |
my $hidden = $marcsubfieldstructure->{$tag}->{$subtag}->{hidden}; |
1283 |
$hidden //= 0; |
1284 |
$hidden = ($hidden<=0) ? 0 : 1; |
1285 |
if ($hidden) { |
1286 |
# deleting last subfield doesn't delete field, so |
1287 |
# this detects that case to delete the field. |
1288 |
if (scalar $fields->subfields() <= 1) { |
1289 |
$record->delete_fields($fields); |
1290 |
} |
1291 |
else { |
1292 |
$fields->delete_subfield( code => $subtag ); |
1293 |
} |
1294 |
} |
1295 |
} |
1296 |
} |
1297 |
# tags less than 10 don't have subfields, use @ trick. |
1298 |
else { |
1299 |
my $hidden = $marcsubfieldstructure->{$tag}->{'@'}->{hidden}; |
1300 |
$hidden //= 0; |
1301 |
$hidden = ($hidden<=0) ? 0 : 1; |
1302 |
if ($hidden) { |
1303 |
$record->delete_fields($fields); |
1304 |
} |
1305 |
} |
1306 |
} |
1307 |
|
1308 |
return $record; |
1309 |
} |
1310 |
|
1210 |
=head2 GetMarcFromKohaField |
1311 |
=head2 GetMarcFromKohaField |
1211 |
|
1312 |
|
1212 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |
1313 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |
Lines 1427-1433
sub GetCOinSBiblio {
Link Here
|
1427 |
$oauthors .= "&rft.au=$au"; |
1528 |
$oauthors .= "&rft.au=$au"; |
1428 |
} |
1529 |
} |
1429 |
} |
1530 |
} |
1430 |
$title = "&rft." . $titletype . "title=" . $record->subfield( '245', 'a' ); |
1531 |
$title = $record->subfield( '245', 'a' ) || ''; |
|
|
1532 |
$title = "&rft." . $titletype . "title=" . $title; |
1431 |
$subtitle = $record->subfield( '245', 'b' ) || ''; |
1533 |
$subtitle = $record->subfield( '245', 'b' ) || ''; |
1432 |
$title .= $subtitle; |
1534 |
$title .= $subtitle; |
1433 |
if ($titletype eq 'a') { |
1535 |
if ($titletype eq 'a') { |
Lines 1873-1879
sub GetMarcSubjects {
Link Here
|
1873 |
push @marcsubjects, { |
1975 |
push @marcsubjects, { |
1874 |
MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop, |
1976 |
MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop, |
1875 |
authoritylink => $authoritylink, |
1977 |
authoritylink => $authoritylink, |
1876 |
}; |
1978 |
} if $authoritylink || $#subfields_loop>=0; |
1877 |
|
1979 |
|
1878 |
} |
1980 |
} |
1879 |
return \@marcsubjects; |
1981 |
return \@marcsubjects; |