Filename | /mnt/catalyst/koha/C4/ClassSource.pm |
Statements | Executed 15 statements in 3.06ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 10.9ms | 50.0ms | BEGIN@25 | C4::ClassSource::
1 | 1 | 1 | 421µs | 435µs | BEGIN@20 | C4::ClassSource::
1 | 1 | 1 | 10µs | 12µs | BEGIN@24 | C4::ClassSource::
1 | 1 | 1 | 7µs | 55µs | BEGIN@27 | C4::ClassSource::
1 | 1 | 1 | 7µs | 13µs | BEGIN@21 | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | AddClassSortRule | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | AddClassSource | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | DelClassSortRule | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | DelClassSource | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | GetClassSort | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | GetClassSortRule | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | GetClassSortRules | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | GetClassSource | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | GetClassSources | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | GetSourcesForSortRule | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | ModClassSortRule | C4::ClassSource::
0 | 0 | 0 | 0s | 0s | ModClassSource | C4::ClassSource::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package 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 | |||||
20 | 2 | 28µs | 2 | 448µ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 # spent 435µs making 1 call to C4::ClassSource::BEGIN@20
# spent 14µs making 1 call to strict::import |
21 | 2 | 24µs | 2 | 19µ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 # spent 13µs making 1 call to C4::ClassSource::BEGIN@21
# spent 6µs making 1 call to warnings::import |
22 | |||||
23 | 1 | 1µs | require Exporter; | ||
24 | 2 | 22µs | 2 | 14µ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 # spent 12µs making 1 call to C4::ClassSource::BEGIN@24
# spent 2µs making 1 call to C4::Context::import |
25 | 2 | 2.13ms | 2 | 50.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 # spent 50.0ms making 1 call to C4::ClassSource::BEGIN@25
# spent 89µs making 1 call to Exporter::import |
26 | |||||
27 | 2 | 841µs | 2 | 102µ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 # 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 | ||||
30 | 1 | 3µs | $VERSION = 3.07.00.049; | ||
31 | |||||
32 | =head1 NAME | ||||
33 | |||||
34 | C4::ClassSources - handle classification sources in Koha | ||||
35 | |||||
36 | =head1 SYNOPSIS | ||||
37 | |||||
38 | use C4::ClassSource; | ||||
39 | |||||
40 | =head1 DESCRIPTION | ||||
41 | |||||
42 | This module deals with manipulating classification | ||||
43 | sources and sorting rules. | ||||
44 | |||||
45 | =head1 FUNCTIONS | ||||
46 | |||||
47 | =cut | ||||
48 | |||||
49 | |||||
50 | 1 | 7µs | @ISA = qw(Exporter); | ||
51 | 1 | 1µ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 | |||||
77 | my $sources = GetClassSources(); | ||||
78 | my @sources = (); | ||||
79 | foreach 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 | |||||
92 | sub 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 | |||||
114 | sub 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 | |||||
133 | sub 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 | |||||
151 | sub 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 | |||||
172 | sub 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 | |||||
185 | Returns reference to hash of references to | ||||
186 | the 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 | |||||
204 | sub 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 | |||||
226 | sub 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 | |||||
245 | sub 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 | |||||
263 | sub 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 | |||||
283 | sub 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 | |||||
301 | sub 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 | |||||
320 | Get the sort key corresponding to the classification part and item part | ||||
321 | and the defined call number source. | ||||
322 | |||||
323 | =cut | ||||
324 | |||||
325 | sub 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 | |||||
345 | 1 | 4µs | 1; | ||
346 | |||||
347 | =head1 AUTHOR | ||||
348 | |||||
349 | Koha Development Team <http://koha-community.org/> | ||||
350 | |||||
351 | =cut |