"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__