Lines 80-85
BEGIN {
Link Here
|
80 |
&GetMarcHosts |
80 |
&GetMarcHosts |
81 |
GetMarcUrls |
81 |
GetMarcUrls |
82 |
&GetOpacHideMARC |
82 |
&GetOpacHideMARC |
|
|
83 |
&GetFilteredOpacBiblio |
83 |
&GetUsedMarcStructure |
84 |
&GetUsedMarcStructure |
84 |
&GetXmlBiblio |
85 |
&GetXmlBiblio |
85 |
&GetCOinSBiblio |
86 |
&GetCOinSBiblio |
Lines 1230-1236
C<$frameworkcode> is the framework code.
Link Here
|
1230 |
sub GetOpacHideMARC { |
1231 |
sub GetOpacHideMARC { |
1231 |
my ( $frameworkcode ) = shift || ''; |
1232 |
my ( $frameworkcode ) = shift || ''; |
1232 |
my $dbh = C4::Context->dbh; |
1233 |
my $dbh = C4::Context->dbh; |
1233 |
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;"); |
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;"); |
1234 |
my $rv = $sth->execute($frameworkcode); |
1235 |
my $rv = $sth->execute($frameworkcode); |
1235 |
my %opachidemarc; |
1236 |
my %opachidemarc; |
1236 |
my $data = $sth->fetchall_hashref( [ qw(field tag) ] ); |
1237 |
my $data = $sth->fetchall_hashref( [ qw(field tag) ] ); |
Lines 1247-1252
sub GetOpacHideMARC {
Link Here
|
1247 |
return \%opachidemarc; |
1248 |
return \%opachidemarc; |
1248 |
} |
1249 |
} |
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 |
|
1250 |
=head2 GetMarcFromKohaField |
1311 |
=head2 GetMarcFromKohaField |
1251 |
|
1312 |
|
1252 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |
1313 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |