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

(-)a/C4/Biblio.pm (-19 / +104 lines)
Lines 76-81 BEGIN { Link Here
76
      &GetMarcISSN
76
      &GetMarcISSN
77
      &GetMarcSubjects
77
      &GetMarcSubjects
78
      &GetMarcBiblio
78
      &GetMarcBiblio
79
      &GetMarcBiblioForOpac
79
      &GetMarcAuthors
80
      &GetMarcAuthors
80
      &GetMarcSeries
81
      &GetMarcSeries
81
      &GetMarcHosts
82
      &GetMarcHosts
Lines 137-142 BEGIN { Link Here
137
      &TransformHtmlToXml
138
      &TransformHtmlToXml
138
      &GetNoZebraIndexes
139
      &GetNoZebraIndexes
139
      prepare_host_field
140
      prepare_host_field
141
      &RemoveHiddenSubfields
140
    );
142
    );
141
}
143
}
142
144
Lines 916-931 sub GetBiblioFromItemNumber { Link Here
916
918
917
=head2 GetISBDView 
919
=head2 GetISBDView 
918
920
919
  $isbd = &GetISBDView($biblionumber);
921
  $isbd = &GetISBDView($biblionumber, [$template]);
920
922
921
Return the ISBD view which can be included in opac and intranet
923
Returns the ISBD view which can be included in opac and intranet.
924
925
C<$template> - 'opac' or 'intranet', default 'intranet'
922
926
923
=cut
927
=cut
924
928
925
sub GetISBDView {
929
sub GetISBDView {
926
    my ( $biblionumber, $template ) = @_;
930
    my $biblionumber = shift;
927
    my $record   = GetMarcBiblio($biblionumber, 1);
931
    my $template = shift || 'intranet';
932
933
    my $record = ($template eq 'opac') ? GetMarcBiblioForOpac($biblionumber, 1) : GetMarcBiblio($biblionumber, 1);
928
    return unless defined $record;
934
    return unless defined $record;
935
929
    my $itemtype = &GetFrameworkCode($biblionumber);
936
    my $itemtype = &GetFrameworkCode($biblionumber);
930
    my ( $holdingbrtagf, $holdingbrtagsubf ) = &GetMarcFromKohaField( "items.holdingbranch", $itemtype );
937
    my ( $holdingbrtagf, $holdingbrtagsubf ) = &GetMarcFromKohaField( "items.holdingbranch", $itemtype );
931
    my $tagslib = &GetMarcStructure( 1, $itemtype );
938
    my $tagslib = &GetMarcStructure( 1, $itemtype );
Lines 1216-1253 sub GetMarcFromKohaField { Link Here
1216
1223
1217
=head2 GetMarcBiblio
1224
=head2 GetMarcBiblio
1218
1225
1219
  my $record = GetMarcBiblio($biblionumber, [$embeditems]);
1226
  my $record = GetMarcBiblio($biblionumber, [$embeditems], [$template], [$withouthidden]);
1227
1228
Returns MARC::Record representing bib. If no bib exists, returns undef.
1229
1230
C<$biblionumber> - the biblionumber of the biblio
1220
1231
1221
Returns MARC::Record representing bib identified by
1232
C<$embeditems> - if set to true items data are included, default false
1222
C<$biblionumber>.  If no bib exists, returns undef.
1233
1223
C<$embeditems>.  If set to true, items data are included.
1234
C<$template> - 'opac' or 'intranet', default 'intranet'
1224
The MARC record contains biblio data, and items data if $embeditems is set to true.
1235
1236
C<$withouthidden> - if set to true hidden subfields are not included, default false
1225
1237
1226
=cut
1238
=cut
1227
1239
1228
sub GetMarcBiblio {
1240
sub GetMarcBiblio {
1229
    my $biblionumber = shift;
1241
    my $biblionumber = shift;
1230
    my $embeditems   = shift || 0;
1242
    my $embeditems   = shift || 0;
1243
    my $template      = shift || 'intranet';
1244
    my $withouthidden = shift || 0;
1245
1231
    my $dbh          = C4::Context->dbh;
1246
    my $dbh          = C4::Context->dbh;
1232
    my $sth          = $dbh->prepare("SELECT marcxml FROM biblioitems WHERE biblionumber=? ");
1247
    my $sth          = $dbh->prepare("SELECT marcxml FROM biblioitems WHERE biblionumber=? ");
1233
    $sth->execute($biblionumber);
1248
    $sth->execute($biblionumber);
1234
    my $row     = $sth->fetchrow_hashref;
1249
    my $row     = $sth->fetchrow_hashref;
1235
    my $marcxml = StripNonXmlChars( $row->{'marcxml'} );
1250
    my $marcxml = StripNonXmlChars( $row->{'marcxml'} );
1251
    return unless $marcxml;
1252
1236
    MARC::File::XML->default_record_format( C4::Context->preference('marcflavour') );
1253
    MARC::File::XML->default_record_format( C4::Context->preference('marcflavour') );
1237
    my $record = MARC::Record->new();
1254
    my $record = MARC::Record->new();
1255
    $record = eval { MARC::Record::new_from_xml( $marcxml, "utf8", C4::Context->preference('marcflavour') ) };
1256
    if ($@) { warn " problem with :$biblionumber : $@ \n$marcxml"; }
1257
    return unless $record;
1238
1258
1239
    if ($marcxml) {
1259
    C4::Biblio::_koha_marc_update_bib_ids($record, '', $biblionumber, $biblionumber);
1240
        $record = eval { MARC::Record::new_from_xml( $marcxml, "utf8", C4::Context->preference('marcflavour') ) };
1260
    C4::Biblio::EmbedItemsInMarcBiblio($record, $biblionumber) if ($embeditems);
1241
        if ($@) { warn " problem with :$biblionumber : $@ \n$marcxml"; }
1242
        return unless $record;
1243
1244
        C4::Biblio::_koha_marc_update_bib_ids($record, '', $biblionumber, $biblionumber);
1245
	C4::Biblio::EmbedItemsInMarcBiblio($record, $biblionumber) if ($embeditems);
1246
1261
1247
        return $record;
1262
    if ($withouthidden) {
1248
    } else {
1263
        my $frameworkcode = GetFrameworkCode( $biblionumber );
1249
        return;
1264
        RemoveHiddenSubfields($record, $frameworkcode, $template);
1250
    }
1265
    }
1266
1267
    return $record;
1268
}
1269
1270
=head2 GetMarcBiblioForOpac
1271
1272
  my $record = GetMarcBiblioForOpac($biblionumber, [$embeditems]);
1273
1274
Returns MARC::Record representing bib. If no bib exists, returns undef.
1275
The record does not contain subfields hidden at OPAC.
1276
1277
C<$biblionumber> - the biblionumber of the biblio
1278
1279
C<$embeditems> - if set to true items data are included, default false
1280
1281
=cut
1282
sub GetMarcBiblioForOpac {
1283
    my $biblionumber = shift;
1284
    my $embeditems   = shift || 0;
1285
    return GetMarcBiblio($biblionumber, $embeditems, 'opac', 1);
1251
}
1286
}
1252
1287
1253
=head2 GetXmlBiblio
1288
=head2 GetXmlBiblio
Lines 3963-3968 sub RemoveAllNsb { Link Here
3963
    return $record;
3998
    return $record;
3964
}
3999
}
3965
4000
4001
=head2 RemoveHiddenSubfields
4002
4003
  RemoveHiddenSubfields( $biblionumber, [$frameworkcode], [$template] );
4004
4005
  Removes from record all subfields marked as hidden.
4006
  
4007
=cut
4008
4009
sub RemoveHiddenSubfields {
4010
    my $record        = shift;
4011
    my $frameworkcode = shift || '';
4012
    my $template      = shift || 'intranet';
4013
4014
    my $tagslib = GetMarcStructure( 0, $frameworkcode );
4015
4016
    foreach my $tag ( keys %$tagslib ) {
4017
        my @fields = $record->field($tag);
4018
        next unless @fields;
4019
        
4020
        my @subfields_to_remove;
4021
        foreach my $subfield ( keys %{ $tagslib->{$tag} } ) {
4022
            # skip tag infos
4023
            next unless ( ref( $tagslib->{$tag}->{$subfield} ) eq "HASH" );
4024
            if ( $template eq 'opac' ) {
4025
                push @subfields_to_remove, $subfield
4026
                  if $tagslib->{$tag}->{$subfield}->{'hidden'} > 0;
4027
            }
4028
            else {
4029
                push @subfields_to_remove, $subfield
4030
                  if $tagslib->{$tag}->{$subfield}->{'hidden'} =~
4031
                      /-7|-4|-3|-2|2|3|5|8/;
4032
            }
4033
        }
4034
        if ( @subfields_to_remove ) {
4035
            foreach my $field (@fields) {
4036
                if ( $tag < 10 ) {
4037
                    # control field so delete entire field
4038
                    $record->delete_field($field);
4039
                }
4040
                else {
4041
                    $field->delete_subfield( code => \@subfields_to_remove );
4042
                    # delete field if no subfield anymore
4043
                    $record->delete_field($field)
4044
                      unless ( $field->subfields() );
4045
                }
4046
            }
4047
        }
4048
    }
4049
}
4050
3966
1;
4051
1;
3967
4052
3968
4053
(-)a/C4/Record.pm (-21 / +35 lines)
Lines 358-364 sub marc2endnote { Link Here
358
358
359
=head2 marc2csv - Convert several records from UNIMARC to CSV
359
=head2 marc2csv - Convert several records from UNIMARC to CSV
360
360
361
  my ($csv) = marc2csv($biblios, $csvprofileid, $itemnumbers);
361
  my ($csv) = marc2csv($biblios, $csvprofileid, [$itemnumbers], [$template]);
362
362
363
Pre and postprocessing can be done through a YAML file
363
Pre and postprocessing can be done through a YAML file
364
364
Lines 370-382 C<$csvprofileid> - the id of the CSV profile to use for the export (see export_f Link Here
370
370
371
C<$itemnumbers> - a list of itemnumbers to export
371
C<$itemnumbers> - a list of itemnumbers to export
372
372
373
C<$template> - 'opac' or 'intranet', default 'intranet'
374
373
=cut
375
=cut
374
376
375
sub marc2csv {
377
sub marc2csv {
376
    my ($biblios, $id, $itemnumbers) = @_;
378
    my ($biblios, $id, $itemnumbers, $template) = @_;
379
    $template ||= 'intranet';
377
    my $output;
380
    my $output;
378
    my $csv = Text::CSV::Encoded->new();
381
    my $csv = Text::CSV::Encoded->new();
379
382
383
    # Getting information about the csv profile
384
    my $profile = GetCsvProfile($id);
385
    return unless $profile;
386
380
    # Getting yaml file
387
    # Getting yaml file
381
    my $configfile = "../tools/csv-profiles/$id.yaml";
388
    my $configfile = "../tools/csv-profiles/$id.yaml";
382
    my ($preprocess, $postprocess, $fieldprocessing);
389
    my ($preprocess, $postprocess, $fieldprocessing);
Lines 390-402 sub marc2csv { Link Here
390
    my $firstpass = 1;
397
    my $firstpass = 1;
391
    if ( $itemnumbers ) {
398
    if ( $itemnumbers ) {
392
        for my $itemnumber ( @$itemnumbers) {
399
        for my $itemnumber ( @$itemnumbers) {
400
393
            my $biblionumber = GetBiblionumberFromItemnumber $itemnumber;
401
            my $biblionumber = GetBiblionumberFromItemnumber $itemnumber;
394
            $output .= marcrecord2csv( $biblionumber, $id, $firstpass, $csv, $fieldprocessing, [$itemnumber] );
402
            next unless $biblionumber;
403
404
            my $record = ($template eq 'opac') ? GetMarcBiblioForOpac($biblionumber) : GetMarcBiblio($biblionumber);
405
            next unless $record;
406
            C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, $itemnumbers );
407
408
            my $frameworkcode = GetFrameworkCode($biblionumber);
409
410
            $output .= _marcrecord2csv( $record, $frameworkcode, $profile, $firstpass, $csv, $fieldprocessing, [$itemnumber] );
395
            $firstpass = 0;
411
            $firstpass = 0;
396
        }
412
        }
397
    } else {
413
    } else {
398
        foreach my $biblio (@$biblios) {
414
        foreach my $biblio (@$biblios) {
399
            $output .= marcrecord2csv( $biblio, $id, $firstpass, $csv, $fieldprocessing );
415
416
            my $record = ($template eq 'opac') ? GetMarcBiblioForOpac($biblio) : GetMarcBiblio($biblio);
417
            next unless $record;
418
419
            my $frameworkcode = GetFrameworkCode($biblio);
420
421
            $output .= _marcrecord2csv( $record, $frameworkcode, $profile, $firstpass, $csv, $fieldprocessing );
400
            $firstpass = 0;
422
            $firstpass = 0;
401
        }
423
        }
402
    }
424
    }
Lines 407-421 sub marc2csv { Link Here
407
    return $output;
429
    return $output;
408
}
430
}
409
431
410
=head2 marcrecord2csv - Convert a single record from UNIMARC to CSV
432
=head2 _marcrecord2csv - Convert a single record from UNIMARC to CSV
411
433
412
  my ($csv) = marcrecord2csv($biblio, $csvprofileid, $header);
434
  my ($csv) = _marcrecord2csv($biblio, $csvprofileid, $header);
413
435
414
Returns a CSV scalar
436
Returns a CSV scalar
415
437
416
C<$biblio> - a biblionumber
438
C<$record> - a bib MARC::Record
417
439
418
C<$csvprofileid> - the id of the CSV profile to use for the export (see export_format.export_format_id and the GetCsvProfiles function in C4::Csv)
440
C<$frameworkcode> - framework code of record
441
442
C<$csvprofile> - the CSV profile to use for the export
419
443
420
C<$header> - true if the headers are to be printed (typically at first pass)
444
C<$header> - true if the headers are to be printed (typically at first pass)
421
445
Lines 423-447 C<$csv> - an already initialised Text::CSV object Link Here
423
447
424
C<$fieldprocessing>
448
C<$fieldprocessing>
425
449
426
C<$itemnumbers> a list of itemnumbers to export
450
C<$itemnumbers> a list of item numbers to export
427
451
428
=cut
452
=cut
429
453
430
454
431
sub marcrecord2csv {
455
sub _marcrecord2csv {
432
    my ($biblio, $id, $header, $csv, $fieldprocessing, $itemnumbers) = @_;
456
    my ($record, $frameworkcode, $profile, $header, $csv, $fieldprocessing, $itemnumbers) = @_;
433
    my $output;
457
    my $output;
434
458
435
    # Getting the record
436
    my $record = GetMarcBiblio($biblio);
437
    next unless $record;
438
    C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblio, $itemnumbers );
439
    # Getting the framework
440
    my $frameworkcode = GetFrameworkCode($biblio);
441
442
    # Getting information about the csv profile
443
    my $profile = GetCsvProfile($id);
444
445
    # Getting output encoding
459
    # Getting output encoding
446
    my $encoding          = $profile->{encoding} || 'utf8';
460
    my $encoding          = $profile->{encoding} || 'utf8';
447
    # Getting separators
461
    # Getting separators
(-)a/C4/Search.pm (+1 lines)
Lines 1612-1617 sub searchResults { Link Here
1612
             : $bibliotag < 10
1612
             : $bibliotag < 10
1613
               ? GetFrameworkCode($marcrecord->field($bibliotag)->data)
1613
               ? GetFrameworkCode($marcrecord->field($bibliotag)->data)
1614
               : GetFrameworkCode($marcrecord->subfield($bibliotag,$bibliosubf));
1614
               : GetFrameworkCode($marcrecord->subfield($bibliotag,$bibliosubf));
1615
        RemoveHiddenSubfields($marcrecord, $fw, $search_context) if ($search_context eq 'opac');
1615
        my $oldbiblio = TransformMarcToKoha( $dbh, $marcrecord, $fw );
1616
        my $oldbiblio = TransformMarcToKoha( $dbh, $marcrecord, $fw );
1616
        $oldbiblio->{subtitle} = GetRecordValue('subtitle', $marcrecord, $fw);
1617
        $oldbiblio->{subtitle} = GetRecordValue('subtitle', $marcrecord, $fw);
1617
        $oldbiblio->{result_number} = $i + 1;
1618
        $oldbiblio->{result_number} = $i + 1;
(-)a/opac/opac-ISBDdetail.pl (-1 / +1 lines)
Lines 84-90 $template->param( 'AllowOnShelfHolds' => C4::Context->preference('AllowOnShelfHo Link Here
84
$template->param( 'ItemsIssued' => CountItemsIssued( $biblionumber ) );
84
$template->param( 'ItemsIssued' => CountItemsIssued( $biblionumber ) );
85
85
86
my $marcflavour      = C4::Context->preference("marcflavour");
86
my $marcflavour      = C4::Context->preference("marcflavour");
87
my $record = GetMarcBiblio($biblionumber);
87
my $record = GetMarcBiblioForOpac($biblionumber);
88
if ( ! $record ) {
88
if ( ! $record ) {
89
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
89
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
90
    exit;
90
    exit;
(-)a/opac/opac-MARCdetail.pl (-6 / +2 lines)
Lines 62-68 my $itemtype = &GetFrameworkCode($biblionumber); Link Here
62
my $tagslib      = &GetMarcStructure( 0, $itemtype );
62
my $tagslib      = &GetMarcStructure( 0, $itemtype );
63
my $biblio = GetBiblioData($biblionumber);
63
my $biblio = GetBiblioData($biblionumber);
64
$biblionumber = $biblio->{biblionumber};
64
$biblionumber = $biblio->{biblionumber};
65
my $record = GetMarcBiblio($biblionumber, 1);
65
my $record = GetMarcBiblioForOpac($biblionumber, 1);
66
if ( ! $record ) {
66
if ( ! $record ) {
67
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
67
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
68
    exit;
68
    exit;
Lines 114-121 for ( my $tabloop = 0 ; $tabloop <= 9 ; $tabloop++ ) { Link Here
114
    my @subfields_data;
114
    my @subfields_data;
115
115
116
    # deal with leader
116
    # deal with leader
117
    unless ( $tagslib->{'000'}->{'@'}->{tab} ne $tabloop
117
    unless ( $tagslib->{'000'}->{'@'}->{tab} ne $tabloop )
118
        or $tagslib->{'000'}->{'@'}->{hidden} > 0 )
119
    {
118
    {
120
        my %subfield_data;
119
        my %subfield_data;
121
        $subfield_data{marc_lib}      = $tagslib->{'000'}->{'@'}->{lib};
120
        $subfield_data{marc_lib}      = $tagslib->{'000'}->{'@'}->{lib};
Lines 138-144 for ( my $tabloop = 0 ; $tabloop <= 9 ; $tabloop++ ) { Link Here
138
            next
137
            next
139
              if (
138
              if (
140
                $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{tab} ne $tabloop );
139
                $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{tab} ne $tabloop );
141
            next if ( $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{hidden} > 0 );
142
            my %subfield_data;
140
            my %subfield_data;
143
            $subfield_data{marc_lib} =
141
            $subfield_data{marc_lib} =
144
              $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{lib};
142
              $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{lib};
Lines 155-161 for ( my $tabloop = 0 ; $tabloop <= 9 ; $tabloop++ ) { Link Here
155
                $subf[$i][0] = "@" unless defined($subf[$i][0]);
153
                $subf[$i][0] = "@" unless defined($subf[$i][0]);
156
                my $sf_def = $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] };
154
                my $sf_def = $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] };
157
                next if ( ($sf_def->{tab}||0) != $tabloop );
155
                next if ( ($sf_def->{tab}||0) != $tabloop );
158
                next if ( ($sf_def->{hidden}||0) > 0 );
159
                my %subfield_data;
156
                my %subfield_data;
160
                $subfield_data{marc_lib} = ($sf_def->{lib} eq $previous) ?  '--' : $sf_def->{lib};
157
                $subfield_data{marc_lib} = ($sf_def->{lib} eq $previous) ?  '--' : $sf_def->{lib};
161
                $previous = $sf_def->{lib};
158
                $previous = $sf_def->{lib};
Lines 228-234 foreach my $field (@fields) { Link Here
228
    for my $i ( 0 .. $#subf ) {
225
    for my $i ( 0 .. $#subf ) {
229
        my $sf_def = $tagslib->{ $field->tag() }->{ $subf[$i][0] };
226
        my $sf_def = $tagslib->{ $field->tag() }->{ $subf[$i][0] };
230
        next if ( ($sf_def->{tab}||0) != 10 );
227
        next if ( ($sf_def->{tab}||0) != 10 );
231
        next if ( ($sf_def->{hidden}||0) > 0 );
232
        $witness{ $subf[$i][0] } = $sf_def->{lib};
228
        $witness{ $subf[$i][0] } = $sf_def->{lib};
233
229
234
        if ( $sf_def->{isurl} ) {
230
        if ( $sf_def->{isurl} ) {
(-)a/opac/opac-basket.pl (-1 / +1 lines)
Lines 63-69 foreach my $biblionumber ( @bibs ) { Link Here
63
    $template->param( biblionumber => $biblionumber );
63
    $template->param( biblionumber => $biblionumber );
64
64
65
    my $dat              = &GetBiblioData($biblionumber);
65
    my $dat              = &GetBiblioData($biblionumber);
66
    my $record           = &GetMarcBiblio($biblionumber);
66
    my $record           = &GetMarcBiblioForOpac($biblionumber);
67
    next unless $record;
67
    next unless $record;
68
    my $marcnotesarray   = GetMarcNotes( $record, $marcflavour );
68
    my $marcnotesarray   = GetMarcNotes( $record, $marcflavour );
69
    my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
69
    my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
(-)a/opac/opac-detail.pl (-1 / +1 lines)
Lines 71-77 my ( $template, $borrowernumber, $cookie ) = get_template_and_user( Link Here
71
my $biblionumber = $query->param('biblionumber') || $query->param('bib');
71
my $biblionumber = $query->param('biblionumber') || $query->param('bib');
72
$biblionumber = int($biblionumber);
72
$biblionumber = int($biblionumber);
73
73
74
my $record       = GetMarcBiblio($biblionumber);
74
my $record       = GetMarcBiblioForOpac($biblionumber);
75
if ( ! $record ) {
75
if ( ! $record ) {
76
    print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early
76
    print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early
77
    exit;
77
    exit;
(-)a/opac/opac-downloadcart.pl (-2 / +2 lines)
Lines 58-70 if ($bib_list && $format) { Link Here
58
    # CSV   
58
    # CSV   
59
    if ($format =~ /^\d+$/) {
59
    if ($format =~ /^\d+$/) {
60
60
61
        $output = marc2csv(\@bibs, $format);
61
        $output = marc2csv(\@bibs, $format, undef, 'opac');
62
62
63
        # Other formats
63
        # Other formats
64
    } else {
64
    } else {
65
        foreach my $biblio (@bibs) {
65
        foreach my $biblio (@bibs) {
66
66
67
            my $record = GetMarcBiblio($biblio, 1);
67
            my $record = GetMarcBiblioForOpac($biblio, 1);
68
            next unless $record;
68
            next unless $record;
69
69
70
            if ($format eq 'iso2709') {
70
            if ($format eq 'iso2709') {
(-)a/opac/opac-downloadshelf.pl (-2 / +2 lines)
Lines 62-75 if ( ShelfPossibleAction( (defined($borrowernumber) ? $borrowernumber : -1), $sh Link Here
62
            foreach (@$items) {
62
            foreach (@$items) {
63
                push @biblios, $_->{biblionumber};
63
                push @biblios, $_->{biblionumber};
64
            }
64
            }
65
            $output = marc2csv(\@biblios, $format);
65
            $output = marc2csv(\@biblios, $format, undef, 'opac');
66
                
66
                
67
        # Other formats
67
        # Other formats
68
        } else {
68
        } else {
69
            foreach my $biblio (@$items) {
69
            foreach my $biblio (@$items) {
70
                my $biblionumber = $biblio->{biblionumber};
70
                my $biblionumber = $biblio->{biblionumber};
71
71
72
                my $record = GetMarcBiblio($biblionumber, 1);
72
                my $record = GetMarcBiblioForOpac($biblionumber, 1);
73
                next unless $record;
73
                next unless $record;
74
74
75
                if ($format eq 'iso2709') {
75
                if ($format eq 'iso2709') {
(-)a/opac/opac-export.pl (-2 / +2 lines)
Lines 35-41 my $biblionumber = $query->param("bib")||0; Link Here
35
$biblionumber = int($biblionumber);
35
$biblionumber = int($biblionumber);
36
my ($marc, $error)= ('','');
36
my ($marc, $error)= ('','');
37
37
38
$marc = GetMarcBiblio($biblionumber, 1) if $biblionumber;
38
$marc = GetMarcBiblioForOpac($biblionumber, 1) if $biblionumber;
39
if(!$marc) {
39
if(!$marc) {
40
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
40
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
41
    exit;
41
    exit;
Lines 57-63 elsif ($format =~ /ris/) { Link Here
57
    $format = 'ris';
57
    $format = 'ris';
58
}
58
}
59
elsif ($format =~ /bibtex/) {
59
elsif ($format =~ /bibtex/) {
60
    $marc = marc2bibtex(C4::Biblio::GetMarcBiblio($biblionumber),$biblionumber);
60
    $marc = marc2bibtex(C4::Biblio::GetMarcBiblioForOpac($biblionumber),$biblionumber);
61
    $format = 'bibtex';
61
    $format = 'bibtex';
62
}
62
}
63
elsif ($format =~ /dc/) {
63
elsif ($format =~ /dc/) {
(-)a/opac/opac-reserve.pl (-3 / +5 lines)
Lines 131-137 foreach my $biblioNumber (@biblionumbers) { Link Here
131
131
132
    my @itemInfos = GetItemsInfo($biblioNumber);
132
    my @itemInfos = GetItemsInfo($biblioNumber);
133
133
134
    my $marcrecord= GetMarcBiblio($biblioNumber);
134
    my $marcrecord= GetMarcBiblioForOpac($biblioNumber);
135
136
    # subtitle
137
    $biblioData->{subtitle} = GetRecordValue('subtitle', $marcrecord, GetFrameworkCode($biblioNumber));
135
138
136
    # flag indicating existence of at least one item linked via a host record
139
    # flag indicating existence of at least one item linked via a host record
137
    my $hostitemsflag;
140
    my $hostitemsflag;
Lines 356-362 $template->param('item_level_itypes' => $itemLevelTypes); Link Here
356
359
357
foreach my $biblioNum (@biblionumbers) {
360
foreach my $biblioNum (@biblionumbers) {
358
361
359
    my $record = GetMarcBiblio($biblioNum);
360
    # Init the bib item with the choices for branch pickup
362
    # Init the bib item with the choices for branch pickup
361
    my %biblioLoopIter = ( branchChoicesLoop => $CGIbranchloop );
363
    my %biblioLoopIter = ( branchChoicesLoop => $CGIbranchloop );
362
364
Lines 369-375 foreach my $biblioNum (@biblionumbers) { Link Here
369
371
370
    $biblioLoopIter{biblionumber} = $biblioData->{biblionumber};
372
    $biblioLoopIter{biblionumber} = $biblioData->{biblionumber};
371
    $biblioLoopIter{title} = $biblioData->{title};
373
    $biblioLoopIter{title} = $biblioData->{title};
372
    $biblioLoopIter{subtitle} = GetRecordValue('subtitle', $record, GetFrameworkCode($biblioData->{biblionumber}));
374
    $biblioLoopIter{subtitle} = $biblioData->{subtitle};
373
    $biblioLoopIter{author} = $biblioData->{author};
375
    $biblioLoopIter{author} = $biblioData->{author};
374
    $biblioLoopIter{rank} = $biblioData->{rank};
376
    $biblioLoopIter{rank} = $biblioData->{rank};
375
    $biblioLoopIter{reservecount} = $biblioData->{reservecount};
377
    $biblioLoopIter{reservecount} = $biblioData->{reservecount};
(-)a/opac/opac-search.pl (-1 / +1 lines)
Lines 558-564 for (my $i=0;$i<@servers;$i++) { Link Here
558
558
559
        if (C4::Context->preference('COinSinOPACResults')) {
559
        if (C4::Context->preference('COinSinOPACResults')) {
560
            foreach (@newresults) {
560
            foreach (@newresults) {
561
                my $record = GetMarcBiblio($_->{'biblionumber'});
561
                my $record = GetMarcBiblioForOpac($_->{'biblionumber'});
562
                $_->{coins} = GetCOinSBiblio($record);
562
                $_->{coins} = GetCOinSBiblio($record);
563
                if ( C4::Context->preference( "Babeltheque" ) and $_->{normalized_isbn} ) {
563
                if ( C4::Context->preference( "Babeltheque" ) and $_->{normalized_isbn} ) {
564
                    my $isbn = Business::ISBN->new( $_->{normalized_isbn} );
564
                    my $isbn = Business::ISBN->new( $_->{normalized_isbn} );
(-)a/opac/opac-sendbasket.pl (-1 / +1 lines)
Lines 87-93 if ( $email_add ) { Link Here
87
        $template2->param( biblionumber => $biblionumber );
87
        $template2->param( biblionumber => $biblionumber );
88
88
89
        my $dat              = GetBiblioData($biblionumber);
89
        my $dat              = GetBiblioData($biblionumber);
90
        my $record           = GetMarcBiblio($biblionumber);
90
        my $record           = GetMarcBiblioForOpac($biblionumber);
91
        my $marcnotesarray   = GetMarcNotes( $record, $marcflavour );
91
        my $marcnotesarray   = GetMarcNotes( $record, $marcflavour );
92
        my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
92
        my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
93
        my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
93
        my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
(-)a/opac/opac-sendshelf.pl (-1 / +1 lines)
Lines 83-89 if ( $email ) { Link Here
83
        my $biblionumber = $biblio->{biblionumber};
83
        my $biblionumber = $biblio->{biblionumber};
84
        my $fw               = GetFrameworkCode($biblionumber);
84
        my $fw               = GetFrameworkCode($biblionumber);
85
        my $dat              = GetBiblioData($biblionumber);
85
        my $dat              = GetBiblioData($biblionumber);
86
        my $record           = GetMarcBiblio($biblionumber);
86
        my $record           = GetMarcBiblioForOpac($biblionumber);
87
        my $marcnotesarray   = GetMarcNotes( $record, $marcflavour );
87
        my $marcnotesarray   = GetMarcNotes( $record, $marcflavour );
88
        my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
88
        my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
89
        my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
89
        my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
(-)a/opac/opac-showmarc.pl (-2 / +3 lines)
Lines 52-62 if ($importid) { Link Here
52
    $record = MARC::Record->new_from_usmarc($marc);
52
    $record = MARC::Record->new_from_usmarc($marc);
53
}
53
}
54
else {
54
else {
55
    $record =GetMarcBiblio($biblionumber);
55
    $record = GetMarcBiblioForOpac($biblionumber);
56
}
56
}
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= $record->as_xml();
60
    
60
    my $xslfile;
61
    my $xslfile;
61
    my $themelang = '/' . C4::Context->preference("opacthemes") .  '/' . C4::Templates::_current_language();
62
    my $themelang = '/' . C4::Context->preference("opacthemes") .  '/' . C4::Templates::_current_language();
62
63
(-)a/opac/opac-showreviews.pl (-2 / +1 lines)
Lines 84-90 my $latest_comment_date; Link Here
84
for my $result (@$reviews){
84
for my $result (@$reviews){
85
    my $biblionumber = $result->{biblionumber};
85
    my $biblionumber = $result->{biblionumber};
86
	my $bib = &GetBiblioData($biblionumber);
86
	my $bib = &GetBiblioData($biblionumber);
87
    my $record = GetMarcBiblio($biblionumber);
87
    my $record = GetMarcBiblioForOpac($biblionumber);
88
    my $frameworkcode = GetFrameworkCode($biblionumber);
88
    my $frameworkcode = GetFrameworkCode($biblionumber);
89
	my ( $borr ) = GetMemberDetails( $result->{borrowernumber} );
89
	my ( $borr ) = GetMemberDetails( $result->{borrowernumber} );
90
	$result->{normalized_upc} = GetNormalizedUPC($record,$marcflavour);
90
	$result->{normalized_upc} = GetNormalizedUPC($record,$marcflavour);
91
- 

Return to bug 7933