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

(-)a/Koha/Filter/MARC/ViewPolicy.pm (-1 / +57 lines)
Lines 215-220 sub _should_hide_on_interface { Link Here
215
    return $hide;
215
    return $hide;
216
}
216
}
217
217
218
219
=head2 ShouldHideMARC
220
221
Return a hash reference of whether a field, built from
222
kohafield and tag, is hidden (1) or not (0) for a given
223
interface
224
225
  my $OpacHideMARC =
226
    GetOpacHideMARC( {
227
                       frameworkcode => $frameworkcode,
228
                       interface     => 'opac',
229
                     } );
230
231
  if ($OpacHideMARC->{'stocknumber'}==1) {
232
       print "Hidden!\n";
233
  }
234
235
C<$OpacHideMARC> is a ref to a hash which contains a series
236
of key value pairs indicating if that field (key) is
237
hidden (value == 1) or not (value == 0).
238
239
C<$frameworkcode> is the framework code.
240
241
C<$interface> is the interface. It defaults to 'opac' if
242
nothing is passed. Valid values include 'opac' or 'intranet'.
243
244
=cut
245
246
sub ShouldHideMARC {
247
    my ($self,$parms)       = @_;
248
    my $frameworkcode = $parms->{frameworkcode} // '';
249
    my $interface     = $parms->{interface}     // 'opac';
250
    my $hide          = _should_hide_on_interface();
251
252
    my $dbh = C4::Context->dbh;
253
    my $sth = $dbh->prepare("SELECT kohafield AS field, tagfield AS tag, hidden FROM marc_subfield_structure WHERE kohafield>'' AND frameworkcode=? ORDER BY field, tagfield;");
254
    $sth->execute($frameworkcode);
255
256
    my %shouldhidemarc;
257
    my $data = $sth->fetchall_hashref( [ qw(field tag) ] );
258
    foreach my $fullfield (keys %{$data}) {
259
        my @tmpsplit = split(/\./,$fullfield);
260
        my $field = $tmpsplit[-1];
261
        foreach my $tag (keys %{$data->{$fullfield}}) {
262
            my $shouldhide = $hide->{$interface}->{ $data->{$fullfield}->{$tag}->{'hidden'} };
263
            if ($shouldhide) {
264
                $shouldhidemarc{ $field } = 1;
265
            }
266
            elsif ( !exists($shouldhidemarc{ $field }) ) {
267
                $shouldhidemarc{ $field } = 0;
268
            }
269
        }
270
    }
271
    return \%shouldhidemarc;
272
}
273
274
218
=head1 DIAGNOSTICS
275
=head1 DIAGNOSTICS
219
276
220
 $ prove -v t/RecordProcessor.t
277
 $ prove -v t/RecordProcessor.t
221
- 

Return to bug 11592