|
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); |