← Index
NYTProf Performance Profile   « line view »
For svc/members/upsert
  Run on Tue Jan 13 11:50:22 2015
Reported on Tue Jan 13 12:09:50 2015

Filename/mnt/catalyst/koha/C4/Linker.pm
StatementsExecuted 12 statements in 446µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111592µs608µsC4::Linker::::BEGIN@45C4::Linker::BEGIN@45
1119µs42µsC4::Linker::::BEGIN@47C4::Linker::BEGIN@47
1119µs78µsC4::Linker::::BEGIN@50C4::Linker::BEGIN@50
1119µs11µsC4::Linker::::BEGIN@48C4::Linker::BEGIN@48
1118µs15µsC4::Linker::::BEGIN@46C4::Linker::BEGIN@46
0000s0sC4::Linker::::_handle_auth_limitC4::Linker::_handle_auth_limit
0000s0sC4::Linker::::newC4::Linker::new
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package 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 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=head1 NAME
21
22C4::Linker - Base class for linking authorities to bibliographic records
23
24=head1 SYNOPSIS
25
26 use C4::Linker (%params );
27
28=head1 DESCRIPTION
29
30Base class for C4::Linker::X. Subclasses need to provide the following methods
31
32B<get_link ($field)> - return the authid for the authority that should be
33linked to the provided MARC::Field object, and a boolean to indicate whether
34the match is "fuzzy" (the semantics of "fuzzy" are up to the individual plugin).
35In order to handle authority limits, get_link should always end with:
36 return $self->SUPER::_handle_auth_limit($authid), $fuzzy;
37
38B<flip_heading ($field)> - return a MARC::Field object with the heading flipped
39to the preferred form.
40
41=head1 FUNCTIONS
42
43=cut
44
45230µs2623µs
# spent 608µs (592+15) within C4::Linker::BEGIN@45 which was called: # once (592µs+15µs) by C4::Biblio::BEGIN@38 at line 45
use strict;
# spent 608µs making 1 call to C4::Linker::BEGIN@45 # spent 15µs making 1 call to strict::import
46221µs222µs
# spent 15µs (8+7) within C4::Linker::BEGIN@46 which was called: # once (8µs+7µs) by C4::Biblio::BEGIN@38 at line 46
use warnings;
# spent 15µs making 1 call to C4::Linker::BEGIN@46 # spent 7µs making 1 call to warnings::import
47224µs275µs
# spent 42µs (9+33) within C4::Linker::BEGIN@47 which was called: # once (9µs+33µs) by C4::Biblio::BEGIN@38 at line 47
use Carp;
# spent 42µs making 1 call to C4::Linker::BEGIN@47 # spent 33µs making 1 call to Exporter::import
48224µs214µs
# spent 11µs (9+2) within C4::Linker::BEGIN@48 which was called: # once (9µs+2µs) by C4::Biblio::BEGIN@38 at line 48
use C4::Context;
# spent 11µs making 1 call to C4::Linker::BEGIN@48 # spent 2µs making 1 call to C4::Context::import
49
502336µs2148µs
# spent 78µs (9+70) within C4::Linker::BEGIN@50 which was called: # once (9µs+70µs) by C4::Biblio::BEGIN@38 at line 50
use base qw(Class::Accessor);
# spent 78µs making 1 call to C4::Linker::BEGIN@50 # spent 70µs making 1 call to base::import
51
5217µs116µs__PACKAGE__->mk_accessors(qw( ));
# spent 16µs making 1 call to Class::Accessor::mk_accessors
53
54sub new {
55 my $class = shift;
56 my $param = shift;
57
58 my $self = {};
59
60 while ( my ( $key, $value ) = each %$param ) {
61 if ( $key eq 'auth_limit' && $value ) {
62 my $dbh = C4::Context->dbh;
63 my $sql =
64 "SELECT authid FROM auth_header WHERE $value ORDER BY authid ASC";
65 my $sth = $dbh->prepare($sql);
66 $sth->execute();
67 while ( my ($authid) = $sth->fetchrow_array() ) {
68 push @{ $self->{'auths_to_link'} }, $authid;
69 }
70 }
71 elsif ( $key eq 'options' && $value ) {
72 foreach my $opt ( split( /\|/, $value ) ) {
73 $self->{$opt} = 1;
74 }
75 }
76 elsif ($value) {
77 $self->{$key} = $value;
78 }
79 }
80
81 bless $self, $class;
82 return $self;
83}
84
85=head2 _handle_auth_limit
86
87 return $self->SUPER::_handle_auth_limit($authid), $fuzzy;
88
89Function to be called by subclasses to handle authority record limits.
90
91=cut
92
93sub _handle_auth_limit {
94 my $self = shift;
95 my $authid = shift;
96
97 if ( defined $self->{'auths_to_link'} && defined $authid && !grep { $_ == $authid }
98 @{ $self->{'auths_to_link'} } )
99 {
100 undef $authid;
101 }
102 return $authid;
103}
104
105=head2 EXPORT
106
107None by default.
108
109=head1 SEE ALSO
110
111C4::Linker::Default
112
113=head1 AUTHOR
114
115Jared Camins-Esakov, C & P Bibliography Services, E<lt>jcamins@cpbibliography.comE<gt>
116
117=cut
118
11913µs1;
120
121__END__