View | Details | Raw Unified | Return to bug 11592
Collapse All | Expand All

(-)a/C4/Biblio.pm (-1 / +62 lines)
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);
(-)a/C4/XSLT.pm (-1 lines)
Lines 84-90 sub transformMARCXML4XSLT { Link Here
84
    if ($@) { warn "PROBLEM WITH RECORD"; next; }
84
    if ($@) { warn "PROBLEM WITH RECORD"; next; }
85
    my $av = getAuthorisedValues4MARCSubfields($frameworkcode);
85
    my $av = getAuthorisedValues4MARCSubfields($frameworkcode);
86
    foreach my $tag ( keys %$av ) {
86
    foreach my $tag ( keys %$av ) {
87
        print STDERR "TAG: $tag\n";
88
        foreach my $field ( $record->field( $tag ) ) {
87
        foreach my $field ( $record->field( $tag ) ) {
89
            if ( $av->{ $tag } ) {
88
            if ( $av->{ $tag } ) {
90
                my @new_subfields = ();
89
                my @new_subfields = ();
(-)a/opac/opac-detail.pl (-20 / +5 lines)
Lines 51-57 use C4::Images; Link Here
51
use Koha::DateUtils;
51
use Koha::DateUtils;
52
use C4::HTML5Media;
52
use C4::HTML5Media;
53
use C4::CourseReserves qw(GetItemCourseReservesInfo);
53
use C4::CourseReserves qw(GetItemCourseReservesInfo);
54
use Data::Dumper;
55
54
56
BEGIN {
55
BEGIN {
57
	if (C4::Context->preference('BakerTaylorEnabled')) {
56
	if (C4::Context->preference('BakerTaylorEnabled')) {
Lines 94-117 $template->param( biblionumber => $biblionumber ); Link Here
94
93
95
# Filter out the things to hide in OPAC.
94
# Filter out the things to hide in OPAC.
96
my $frameworkcode = GetFrameworkCode($biblionumber);
95
my $frameworkcode = GetFrameworkCode($biblionumber);
97
my $marcsubfieldstructure = GetMarcStructure(0,$frameworkcode);
96
#$record = GetFilteredOpacBiblio($record,$frameworkcode);
98
foreach my $fields ($record->fields()) {
99
    my $tag = $fields->tag();
100
    foreach my $subpairs ($fields->subfields()) {
101
        my ($subtag,$value) = @$subpairs;
102
        my $hidden = $marcsubfieldstructure->{$tag}->{$subtag}->{hidden};
103
        $hidden //= 0;
104
        $hidden = ($hidden<=0) ? 0 : 1;
105
        if ($hidden) {
106
            if (scalar $fields->subfields() == 1) {
107
                $record->delete_fields($fields);
108
            }
109
            else {
110
                $fields->delete_subfield( code => $subtag );
111
            }
112
        }
113
    }
114
}
115
97
116
# get biblionumbers stored in the cart
98
# get biblionumbers stored in the cart
117
my @cart_list;
99
my @cart_list;
Lines 675-681 if ($st_tag && $st_subtag) { Link Here
675
    my @subtitles = $record->subfield($st_tag,$st_subtag);
657
    my @subtitles = $record->subfield($st_tag,$st_subtag);
676
    $subtitle = \@subtitles if scalar @subtitles;
658
    $subtitle = \@subtitles if scalar @subtitles;
677
}
659
}
678
print STDERR Dumper($subtitle);
660
if (scalar @$subtitle) {
661
    my @subtitles = map { { subfield => $_ } } @$subtitle;
662
    $subtitle = \@subtitles;
663
}
679
664
680
    $template->param(
665
    $template->param(
681
                     MARCNOTES               => $marcnotesarray,
666
                     MARCNOTES               => $marcnotesarray,
(-)a/opac/opac-showmarc.pl (-1 / +6 lines)
Lines 57-62 else { Link Here
57
57
58
if ($view eq 'card' || $view eq 'html') {
58
if ($view eq 'card' || $view eq 'html') {
59
    my $xmlrecord= $importid? $record->as_xml(): GetXmlBiblio($biblionumber);
59
    my $xmlrecord= $importid? $record->as_xml(): GetXmlBiblio($biblionumber);
60
    if (!$importid && $view eq 'html') {
61
        my $filtered_record = MARC::Record->new_from_xml($xmlrecord);
62
        my $frameworkcode = GetFrameworkCode($biblionumber);
63
        $filtered_record = GetFilteredOpacBiblio($filtered_record,$frameworkcode);
64
        $xmlrecord = $filtered_record->as_xml();
65
    }
60
    my $xslfile;
66
    my $xslfile;
61
    my $xslfilename;
67
    my $xslfilename;
62
    my $htdocs  = C4::Context->config('opachtdocs');
68
    my $htdocs  = C4::Context->config('opachtdocs');
63
- 

Return to bug 11592