← 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:49 2015

Filename/mnt/catalyst/koha/C4/ClassSource.pm
StatementsExecuted 15 statements in 3.06ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11110.9ms50.0msC4::ClassSource::::BEGIN@25C4::ClassSource::BEGIN@25
111421µs435µsC4::ClassSource::::BEGIN@20C4::ClassSource::BEGIN@20
11110µs12µsC4::ClassSource::::BEGIN@24C4::ClassSource::BEGIN@24
1117µs55µsC4::ClassSource::::BEGIN@27C4::ClassSource::BEGIN@27
1117µs13µsC4::ClassSource::::BEGIN@21C4::ClassSource::BEGIN@21
0000s0sC4::ClassSource::::AddClassSortRuleC4::ClassSource::AddClassSortRule
0000s0sC4::ClassSource::::AddClassSourceC4::ClassSource::AddClassSource
0000s0sC4::ClassSource::::DelClassSortRuleC4::ClassSource::DelClassSortRule
0000s0sC4::ClassSource::::DelClassSourceC4::ClassSource::DelClassSource
0000s0sC4::ClassSource::::GetClassSortC4::ClassSource::GetClassSort
0000s0sC4::ClassSource::::GetClassSortRuleC4::ClassSource::GetClassSortRule
0000s0sC4::ClassSource::::GetClassSortRulesC4::ClassSource::GetClassSortRules
0000s0sC4::ClassSource::::GetClassSourceC4::ClassSource::GetClassSource
0000s0sC4::ClassSource::::GetClassSourcesC4::ClassSource::GetClassSources
0000s0sC4::ClassSource::::GetSourcesForSortRuleC4::ClassSource::GetSourcesForSortRule
0000s0sC4::ClassSource::::ModClassSortRuleC4::ClassSource::ModClassSortRule
0000s0sC4::ClassSource::::ModClassSourceC4::ClassSource::ModClassSource
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package C4::ClassSource;
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
20228µs2448µs
# spent 435µs (421+14) within C4::ClassSource::BEGIN@20 which was called: # once (421µs+14µs) by C4::Biblio::BEGIN@36 at line 20
use strict;
# spent 435µs making 1 call to C4::ClassSource::BEGIN@20 # spent 14µs making 1 call to strict::import
21224µs219µs
# spent 13µs (7+6) within C4::ClassSource::BEGIN@21 which was called: # once (7µs+6µs) by C4::Biblio::BEGIN@36 at line 21
use warnings;
# spent 13µs making 1 call to C4::ClassSource::BEGIN@21 # spent 6µs making 1 call to warnings::import
22
2311µsrequire Exporter;
24222µs214µs
# spent 12µs (10+2) within C4::ClassSource::BEGIN@24 which was called: # once (10µs+2µs) by C4::Biblio::BEGIN@36 at line 24
use C4::Context;
# spent 12µs making 1 call to C4::ClassSource::BEGIN@24 # spent 2µs making 1 call to C4::Context::import
2522.13ms250.1ms
# spent 50.0ms (10.9+39.1) within C4::ClassSource::BEGIN@25 which was called: # once (10.9ms+39.1ms) by C4::Biblio::BEGIN@36 at line 25
use C4::ClassSortRoutine;
# spent 50.0ms making 1 call to C4::ClassSource::BEGIN@25 # spent 89µs making 1 call to Exporter::import
26
272841µs2102µs
# spent 55µs (7+48) within C4::ClassSource::BEGIN@27 which was called: # once (7µs+48µs) by C4::Biblio::BEGIN@36 at line 27
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
# spent 55µs making 1 call to C4::ClassSource::BEGIN@27 # spent 48µs making 1 call to vars::import
28
29# set the version for version checking
3013µs$VERSION = 3.07.00.049;
31
32=head1 NAME
33
34C4::ClassSources - handle classification sources in Koha
35
36=head1 SYNOPSIS
37
38use C4::ClassSource;
39
40=head1 DESCRIPTION
41
42This module deals with manipulating classification
43sources and sorting rules.
44
45=head1 FUNCTIONS
46
47=cut
48
49
5017µs@ISA = qw(Exporter);
5111µs@EXPORT = qw(
52 &GetClassSources
53 &AddClassSource
54 &GetClassSource
55 &ModClassSource
56 &DelClassSource
57 &GetClassSortRules
58 &AddClassSortRule
59 &GetClassSortRule
60 &ModClassSortRule
61 &DelClassSortRule
62
63 &GetSourcesForSortRule
64 &GetClassSort
65
66);
67
68=head2 GetClassSources
69
70 my $sources = GetClassSources();
71
72 Returns reference to hash of references to
73 the class sources, keyed on cn_source.
74
75=head3 Example
76
77my $sources = GetClassSources();
78my @sources = ();
79foreach my $cn_source (sort keys %$sources) {
80 my $source = $sources->{$cn_source};
81 push @sources,
82 {
83 code => $source->{'cn_source'},
84 description => $source->{'description'},
85 used => $source->{'used'},
86 sortrule => $source->{'class_sort_rule'}
87 }
88}
89
90=cut
91
92sub GetClassSources {
93
94 my %class_sources = ();
95 my $dbh = C4::Context->dbh;
96 my $sth = $dbh->prepare("SELECT * FROM `class_sources`");
97 $sth->execute();
98 while (my $source = $sth->fetchrow_hashref) {
99 $class_sources{ $source->{'cn_source'} } = $source;
100 }
101
102 return \%class_sources;
103
104}
105
106=head2 AddClassSource
107
108 AddClassSource($cn_source, $description, $used, $class_sort_rule);
109
110 Adds a class_sources row.
111
112=cut
113
114sub AddClassSource {
115
116 my ($cn_source, $description, $used, $class_sort_rule) = @_;
117 my $dbh = C4::Context->dbh;
118 my $sth = $dbh->prepare("INSERT INTO `class_sources`
119 (`cn_source`, `description`, `used`, `class_sort_rule`)
120 VALUES (?, ?, ?, ?)");
121 $sth->execute($cn_source, $description, $used, $class_sort_rule);
122
123}
124
125=head2 GetClassSource
126
127 my $hashref = GetClassSource($cn_source);
128
129 Retrieves a class_sources row by cn_source.
130
131=cut
132
133sub GetClassSource {
134
135 my ($cn_source) = (@_);
136 my $dbh = C4::Context->dbh;
137 my $sth = $dbh->prepare("SELECT * FROM `class_sources` WHERE cn_source = ?");
138 $sth->execute($cn_source);
139 my $row = $sth->fetchrow_hashref();
140 return $row;
141}
142
143=head2 ModClassSource
144
145 ModClassSource($cn_source, $description, $used, $class_sort_rule);
146
147 Updates a class_sources row.
148
149=cut
150
151sub ModClassSource {
152
153 my ($cn_source, $description, $used, $class_sort_rule) = @_;
154 my $dbh = C4::Context->dbh;
155 my $sth = $dbh->prepare("UPDATE `class_sources`
156 SET `description` = ?,
157 `used` = ?,
158 `class_sort_rule` = ?
159 WHERE `cn_source` = ?");
160 $sth->execute($description, $used, $class_sort_rule, $cn_source);
161
162}
163
164=head2 DelClassSource
165
166 DelClassSource($cn_source);
167
168 Deletes class_sources row.
169
170=cut
171
172sub DelClassSource {
173
174 my ($cn_source) = @_;
175 my $dbh = C4::Context->dbh;
176 my $sth = $dbh->prepare("DELETE FROM `class_sources` WHERE `cn_source` = ?");
177 $sth->execute($cn_source);
178
179}
180
181=head2 GetClassSortRules
182
183 my $sort_rules = GetClassSortRules();
184
185Returns reference to hash of references to
186the class sorting rules, keyed on class_sort_rule
187
188=head3 Example
189
190 my $sort_rules = GetClassSortRules();
191 my @sort_rules = ();
192 foreach my $sort_rule (sort keys %$sort_rules) {
193 my $sort_rule = $sort_rules->{$sort_rule};
194 push @sort_rules,
195 {
196 rule => $sort_rule->{'class_sort_rule'},
197 description => $sort_rule->{'description'},
198 sort_routine => $sort_rule->{'sort_routine'}
199 }
200 }
201
202=cut
203
204sub GetClassSortRules {
205
206 my %class_sort_rules = ();
207 my $dbh = C4::Context->dbh;
208 my $sth = $dbh->prepare("SELECT * FROM `class_sort_rules`");
209 $sth->execute();
210 while (my $sort_rule = $sth->fetchrow_hashref) {
211 $class_sort_rules{ $sort_rule->{'class_sort_rule'} } = $sort_rule;
212 }
213
214 return \%class_sort_rules;
215
216}
217
218=head2 AddClassSortRule
219
220 AddClassSortRule($class_sort_rule, $description, $sort_routine);
221
222 Adds a class_sort_rules row.
223
224=cut
225
226sub AddClassSortRule {
227
228 my ($class_sort_rule, $description, $sort_routine) = @_;
229 my $dbh = C4::Context->dbh;
230 my $sth = $dbh->prepare("INSERT INTO `class_sort_rules`
231 (`class_sort_rule`, `description`, `sort_routine`)
232 VALUES (?, ?, ?)");
233 $sth->execute($class_sort_rule, $description, $sort_routine);
234
235}
236
237=head2 GetClassSortRule
238
239 my $hashref = GetClassSortRule($class_sort_rule);
240
241 Retrieves a class_sort_rules row by class_sort_rule.
242
243=cut
244
245sub GetClassSortRule {
246
247 my ($class_sort_rule) = (@_);
248 my $dbh = C4::Context->dbh;
249 my $sth = $dbh->prepare("SELECT * FROM `class_sort_rules` WHERE `class_sort_rule` = ?");
250 $sth->execute($class_sort_rule);
251 my $row = $sth->fetchrow_hashref();
252 return $row;
253}
254
255=head2 ModClassSortRule
256
257 ModClassSortRule($class_sort_rule, $description, $sort_routine);
258
259 Updates a class_sort_rules row.
260
261=cut
262
263sub ModClassSortRule {
264
265 my ($class_sort_rule, $description, $sort_routine) = @_;
266 my $dbh = C4::Context->dbh;
267 my $sth = $dbh->prepare("UPDATE `class_sort_rules`
268 SET `description` = ?,
269 `sort_routine` = ?
270 WHERE `class_sort_rule` = ?");
271 $sth->execute($description, $sort_routine, $class_sort_rule);
272
273}
274
275=head2 DelClassSortRule
276
277 DelClassSortRule($class_sort_rule);
278
279 Deletes class_sort_rules row.
280
281=cut
282
283sub DelClassSortRule {
284
285 my ($class_sort_rule) = @_;
286 my $dbh = C4::Context->dbh;
287 my $sth = $dbh->prepare("DELETE FROM `class_sort_rules` WHERE `class_sort_rule` = ?");
288 $sth->execute($class_sort_rule);
289
290}
291
292=head2 GetSourcesForSortRule
293
294 my @source = GetSourcesForSortRule($class_sort_rule);
295
296 Retrieves an array class_source.cn_rule for each source
297 that uses the supplied $class_sort_rule.
298
299=cut
300
301sub GetSourcesForSortRule {
302
303 my ($class_sort_rule) = @_;
304
305 my $dbh = C4::Context->dbh;
306 my $sth = $dbh->prepare("SELECT cn_source FROM class_sources WHERE class_sort_rule = ?");
307 $sth->execute($class_sort_rule);
308 my @sources = ();
309 while (my ($source) = $sth->fetchrow_array()) {
310 push @sources, $source;
311 }
312 return @sources;
313
314}
315
316=head2 GetClassSort
317
318 my $cn_sort = GetClassSort($cn_source, $cn_class, $cn_item);
319
320Get the sort key corresponding to the classification part and item part
321and the defined call number source.
322
323=cut
324
325sub GetClassSort {
326
327 my ($cn_source, $cn_class, $cn_item) = @_;
328
329 my $source_ref = GetClassSource($cn_source);
330 unless (defined $source_ref) {
331 $source_ref = GetClassSource(C4::Context->preference("DefaultClassificationSource"));
332 }
333 my $routine = "";
334 if (defined $source_ref) {
335 my $rule_ref = GetClassSortRule($source_ref->{'class_sort_rule'});
336 if (defined $rule_ref) {
337 $routine = $rule_ref->{'sort_routine'};
338 }
339 }
340
341 return GetClassSortKey($routine, $cn_class, $cn_item);
342
343}
344
34514µs1;
346
347=head1 AUTHOR
348
349Koha Development Team <http://koha-community.org/>
350
351=cut