"Fossies" - the Fresh Open Source Software Archive 
Member "koha-19.11.15/C4/Linker.pm" (23 Feb 2021, 3128 Bytes) of package /linux/misc/koha-19.11.15.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "Linker.pm" see the
Fossies "Dox" file reference documentation.
1 package C4::Linker;
2
3 # Copyright 2011 C & P Bibliography Services
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20 =head1 NAME
21
22 C4::Linker - Base class for linking authorities to bibliographic records
23
24 =head1 SYNOPSIS
25
26 use C4::Linker (%params );
27
28 =head1 DESCRIPTION
29
30 Base class for C4::Linker::X. Subclasses need to provide the following methods
31
32 B<get_link ($field)> - return the authid for the authority that should be
33 linked to the provided MARC::Field object, and a boolean to indicate whether
34 the match is "fuzzy" (the semantics of "fuzzy" are up to the individual plugin).
35 In order to handle authority limits, get_link should always end with:
36 return $self->SUPER::_handle_auth_limit($authid), $fuzzy;
37
38 B<update_cache ($heading, $authid)> - updates internal linker cache for
39 $heading with $authid of a new created authotiry record
40
41 B<flip_heading ($field)> - return a MARC::Field object with the heading flipped
42 to the preferred form.
43
44 =head1 FUNCTIONS
45
46 =cut
47
48 use strict;
49 use warnings;
50 use Carp;
51 use C4::Context;
52
53 use base qw(Class::Accessor);
54
55 __PACKAGE__->mk_accessors(qw( ));
56
57 sub new {
58 my $class = shift;
59 my $param = shift;
60
61 my $self = {};
62
63 while ( my ( $key, $value ) = each %$param ) {
64 if ( $key eq 'auth_limit' && $value ) {
65 my $dbh = C4::Context->dbh;
66 my $sql =
67 "SELECT authid FROM auth_header WHERE $value ORDER BY authid ASC";
68 my $sth = $dbh->prepare($sql);
69 $sth->execute();
70 while ( my ($authid) = $sth->fetchrow_array() ) {
71 push @{ $self->{'auths_to_link'} }, $authid;
72 }
73 }
74 elsif ( $key eq 'options' && $value ) {
75 foreach my $opt ( split( /\|/, $value ) ) {
76 $self->{$opt} = 1;
77 }
78 }
79 elsif ($value) {
80 $self->{$key} = $value;
81 }
82 }
83
84 bless $self, $class;
85 return $self;
86 }
87
88 =head2 _handle_auth_limit
89
90 return $self->SUPER::_handle_auth_limit($authid), $fuzzy;
91
92 Function to be called by subclasses to handle authority record limits.
93
94 =cut
95
96 sub _handle_auth_limit {
97 my $self = shift;
98 my $authid = shift;
99
100 if ( defined $self->{'auths_to_link'} && defined $authid && !grep { $_ == $authid }
101 @{ $self->{'auths_to_link'} } )
102 {
103 undef $authid;
104 }
105 return $authid;
106 }
107
108 =head2 EXPORT
109
110 None by default.
111
112 =head1 SEE ALSO
113
114 C4::Linker::Default
115
116 =head1 AUTHOR
117
118 Jared Camins-Esakov, C & P Bibliography Services, E<lt>jcamins@cpbibliography.comE<gt>
119
120 =cut
121
122 1;
123
124 __END__