1 package C4::AuthoritiesMarc::MARC21;
3 # Copyright (C) 2007 LibLime
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along with
17 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
18 # Suite 330, Boston, MA 02111-1307 USA
26 C4::AuthoritiesMarc::MARC21
30 use C4::AuthoritiesMarc::MARC21;
34 This is a helper module providing functions used by
35 C<C4::AuthoritiesMarc> to deal with behavior specific
36 to MARC21 authority records (as opposed to other
39 Functions from this module generally should not be used
40 directly; instead, use the appropriate function from
41 C<C4::Authorities> that will dispatch the appropriate
42 function based on the marcflavour system preference.
48 =head2 get_heading_type_from_marc
52 my $auth_type = get_auth_type_from_marc($marc);
56 Given a MARC::Record object containing an authority record,
57 determine its heading type (e.g., personal name, topical term,
62 =head2 default_auth_type_location
66 my ($tag, $subfield) = default_auth_type_location();
70 Get the tag and subfield used to store the heading type
71 if not specified in the MARC framework. For MARC21,
72 this defaults to 942$a.
76 sub default_auth_type_location {
80 =head2 fix_marc21_auth_type_location
84 fix_marc21_auth_type_location($auth_marc, $auth_type_tag, $auth_type_subfield);
88 If the incoming C<MARC::Record> object has a 152$b, remove it. If no
89 field already exists that contains the specified C<$auth_type_tag>
90 and C<$auth_type_subfield>, create a new field whose contents
91 are the original contents of the 152$b.
93 This routine exists to deal with a historical problem: MARC21
94 authority records in previous versions of Koha kept the
95 authority type in the 152$b. While the 152 may be OK for UNIMARC,
96 a 9XX should have been used for MARC21.
98 This function is meant to be called from GetAuthority, GetAuthorityXML,
101 FIXME: This function should be removed once it's determined
102 that no MARC21 users of Koha are using the 152$b
103 to store the authority type.
107 sub fix_marc21_auth_type_location {
108 my ($auth_marc, $auth_type_tag, $auth_type_subfield) = @_;
111 return unless $auth_type_code = $auth_marc->subfield('152', 'b');
112 $auth_marc->delete_field($auth_marc->field('152'));
113 unless ($auth_marc->field($auth_type_tag) && $auth_marc->subfield($auth_type_tag, $auth_type_subfield)) {
114 $auth_marc->add_fields($auth_type_tag,'','', $auth_type_subfield=>$auth_type_code);
121 Koha Developement team <info@koha.org>
123 Galen Charlton <galen.charlton@liblime.com>