fix a common "developement" typo
[koha.git] / C4 / AuthoritiesMarc / MARC21.pm
1 package C4::AuthoritiesMarc::MARC21;
2
3 # Copyright (C) 2007 LibLime
4
5 # This file is part of Koha.
6 #
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
10 # version.
11 #
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.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 use strict;
21 #use warnings; FIXME - Bug 2505
22 use MARC::Record;
23 our $VERSION = 3.00;
24
25 =head1 NAME
26
27 C4::AuthoritiesMarc::MARC21
28
29 =head1 SYNOPSIS
30
31 use C4::AuthoritiesMarc::MARC21;
32
33 =head1 DESCRIPTION
34
35 This is a helper module providing functions used by
36 C<C4::AuthoritiesMarc> to deal with behavior specific
37 to MARC21 authority records (as opposed to other
38 MARC formats).
39
40 Functions from this module generally should not be used
41 directly; instead, use the appropriate function from
42 C<C4::Authorities> that will dispatch the appropriate
43 function based on the marcflavour system preference.
44
45 =head1 FUNCTIONS
46
47 =cut
48
49 =head2 get_heading_type_from_marc
50
51 =over 4
52
53 my $auth_type = get_auth_type_from_marc($marc);
54
55 =back
56
57 Given a MARC::Record object containing an authority record,
58 determine its heading type (e.g., personal name, topical term,
59 etc.).
60
61 =cut
62
63 =head2 default_auth_type_location
64
65 =over 4
66
67 my ($tag, $subfield) = default_auth_type_location();
68
69 =back
70
71 Get the tag and subfield used to store the heading type
72 if not specified in the MARC framework.  For MARC21,
73 this defaults to 942$a.
74
75 =cut
76
77 sub default_auth_type_location {
78     return ('942', 'a');
79 }
80
81 =head2 fix_marc21_auth_type_location 
82
83 =over 4
84
85 fix_marc21_auth_type_location($auth_marc, $auth_type_tag, $auth_type_subfield);
86
87 =back
88
89 If the incoming C<MARC::Record> object has a 152$b, remove it.  If no
90 field already exists that contains the specified C<$auth_type_tag>
91 and C<$auth_type_subfield>, create a new field whose contents
92 are the original contents of the 152$b.
93
94 This routine exists to deal with a historical problem: MARC21
95 authority records in previous versions of Koha kept the
96 authority type in the 152$b.  While the 152 may be OK for UNIMARC,
97 a 9XX should have been used for MARC21.
98
99 This function is meant to be called from GetAuthority, GetAuthorityXML,
100 and AddAuthority.
101
102 FIXME: This function should be removed once it's determined
103        that no MARC21 users of Koha are using the 152$b
104        to store the authority type.
105
106 =cut
107
108 sub fix_marc21_auth_type_location {
109     my ($auth_marc, $auth_type_tag, $auth_type_subfield) = @_;
110
111     my $auth_type_code;
112     return unless $auth_type_code = $auth_marc->subfield('152', 'b');
113     $auth_marc->delete_field($auth_marc->field('152'));
114     unless ($auth_marc->field($auth_type_tag) && $auth_marc->subfield($auth_type_tag, $auth_type_subfield)) {
115         $auth_marc->add_fields($auth_type_tag,'','', $auth_type_subfield=>$auth_type_code); 
116     }
117     
118 }
119
120 =head1 AUTHOR
121
122 Koha Development Team <info@koha.org>
123
124 Galen Charlton <galen.charlton@liblime.com>
125
126 =cut
127
128 1;