Filename | /usr/share/koha/lib/C4/Members/AttributeTypes.pm |
Statements | Executed 11 statements in 1.98ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 19µs | 25µs | BEGIN@20 | C4::Members::AttributeTypes::
1 | 1 | 1 | 15µs | 55µs | BEGIN@24 | C4::Members::AttributeTypes::
1 | 1 | 1 | 11µs | 12µs | BEGIN@22 | C4::Members::AttributeTypes::
1 | 1 | 1 | 6µs | 6µs | BEGIN@26 | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | AttributeTypeExists | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | GetAttributeTypes | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | GetAttributeTypes_hashref | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | authorised_value_category | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | branches | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | category_code | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | category_description | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | class | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | code | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | delete | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | description | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | display_checkout | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | fetch | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | get_patrons | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | new | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | num_patrons | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | opac_display | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | password_allowed | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | repeatable | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | staff_searchable | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | store | C4::Members::AttributeTypes::
0 | 0 | 0 | 0s | 0s | unique_id | C4::Members::AttributeTypes::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package C4::Members::AttributeTypes; | ||||
2 | |||||
3 | # Copyright (C) 2008 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 | 3 | 31µs | 2 | 30µs | # spent 25µs (19+6) within C4::Members::AttributeTypes::BEGIN@20 which was called:
# once (19µs+6µs) by C4::Members::Attributes::BEGIN@25 at line 20 # spent 25µs making 1 call to C4::Members::AttributeTypes::BEGIN@20
# spent 6µs making 1 call to strict::import |
21 | #use warnings; FIXME - Bug 2505 | ||||
22 | 3 | 40µs | 2 | 14µs | # spent 12µs (11+2) within C4::Members::AttributeTypes::BEGIN@22 which was called:
# once (11µs+2µs) by C4::Members::Attributes::BEGIN@25 at line 22 # spent 12µs making 1 call to C4::Members::AttributeTypes::BEGIN@22
# spent 2µs making 1 call to C4::Context::import |
23 | |||||
24 | 3 | 48µs | 2 | 94µs | # spent 55µs (15+40) within C4::Members::AttributeTypes::BEGIN@24 which was called:
# once (15µs+40µs) by C4::Members::Attributes::BEGIN@25 at line 24 # spent 55µs making 1 call to C4::Members::AttributeTypes::BEGIN@24
# spent 40µs making 1 call to vars::import |
25 | |||||
26 | # spent 6µs within C4::Members::AttributeTypes::BEGIN@26 which was called:
# once (6µs+0s) by C4::Members::Attributes::BEGIN@25 at line 29 | ||||
27 | # set the version for version checking | ||||
28 | 1 | 10µs | $VERSION = 3.07.00.049; | ||
29 | 1 | 1.85ms | 1 | 6µs | } # spent 6µs making 1 call to C4::Members::AttributeTypes::BEGIN@26 |
30 | |||||
31 | =head1 NAME | ||||
32 | |||||
- - | |||||
71 | sub GetAttributeTypes { | ||||
72 | my $all = @_ ? shift : 0; | ||||
73 | my $no_branch_limit = @_ ? shift : 0; | ||||
74 | my $branch_limit = $no_branch_limit | ||||
75 | ? 0 | ||||
76 | : C4::Context->userenv ? C4::Context->userenv->{"branch"} : 0; | ||||
77 | my $select = $all ? '*' : 'DISTINCT(code), description, class'; | ||||
78 | |||||
79 | my $dbh = C4::Context->dbh; | ||||
80 | my $query = "SELECT $select FROM borrower_attribute_types"; | ||||
81 | $query .= qq{ | ||||
82 | LEFT JOIN borrower_attribute_types_branches ON bat_code = code | ||||
83 | WHERE b_branchcode = ? OR b_branchcode IS NULL | ||||
84 | } if $branch_limit; | ||||
85 | $query .= " ORDER BY code"; | ||||
86 | my $sth = $dbh->prepare($query); | ||||
87 | $sth->execute( $branch_limit ? $branch_limit : () ); | ||||
88 | my $results = $sth->fetchall_arrayref({}); | ||||
89 | $sth->finish; | ||||
90 | return @$results; | ||||
91 | } | ||||
92 | |||||
93 | sub GetAttributeTypes_hashref { | ||||
94 | my %hash = map {$_->{code} => $_} GetAttributeTypes(@_); | ||||
95 | return \%hash; | ||||
96 | } | ||||
97 | |||||
98 | =head2 AttributeTypeExists | ||||
99 | |||||
- - | |||||
107 | sub AttributeTypeExists { | ||||
108 | my ($code) = @_; | ||||
109 | my $dbh = C4::Context->dbh; | ||||
110 | my $exists = $dbh->selectrow_array("SELECT code FROM borrower_attribute_types WHERE code = ?", undef, $code); | ||||
111 | return $exists; | ||||
112 | } | ||||
113 | |||||
114 | =head1 METHODS | ||||
115 | |||||
- - | |||||
122 | sub new { | ||||
123 | my $class = shift; | ||||
124 | my $self = {}; | ||||
125 | |||||
126 | $self->{'code'} = shift; | ||||
127 | $self->{'description'} = shift; | ||||
128 | $self->{'repeatable'} = 0; | ||||
129 | $self->{'unique_id'} = 0; | ||||
130 | $self->{'opac_display'} = 0; | ||||
131 | $self->{'password_allowed'} = 0; | ||||
132 | $self->{'staff_searchable'} = 0; | ||||
133 | $self->{'display_checkout'} = 0; | ||||
134 | $self->{'authorised_value_category'} = ''; | ||||
135 | $self->{'category_code'} = ''; | ||||
136 | $self->{'category_description'} = ''; | ||||
137 | $self->{'class'} = ''; | ||||
138 | |||||
139 | bless $self, $class; | ||||
140 | return $self; | ||||
141 | } | ||||
142 | |||||
143 | =head2 fetch | ||||
144 | |||||
- - | |||||
152 | sub fetch { | ||||
153 | my $class = shift; | ||||
154 | my $code = shift; | ||||
155 | my $self = {}; | ||||
156 | my $dbh = C4::Context->dbh(); | ||||
157 | |||||
158 | my $sth = $dbh->prepare_cached(" | ||||
159 | SELECT borrower_attribute_types.*, categories.description AS category_description | ||||
160 | FROM borrower_attribute_types | ||||
161 | LEFT JOIN categories ON borrower_attribute_types.category_code=categories.categorycode | ||||
162 | WHERE code =?"); | ||||
163 | $sth->execute($code); | ||||
164 | my $row = $sth->fetchrow_hashref; | ||||
165 | $sth->finish(); | ||||
166 | return unless defined $row; | ||||
167 | |||||
168 | $self->{'code'} = $row->{'code'}; | ||||
169 | $self->{'description'} = $row->{'description'}; | ||||
170 | $self->{'repeatable'} = $row->{'repeatable'}; | ||||
171 | $self->{'unique_id'} = $row->{'unique_id'}; | ||||
172 | $self->{'opac_display'} = $row->{'opac_display'}; | ||||
173 | $self->{'password_allowed'} = $row->{'password_allowed'}; | ||||
174 | $self->{'staff_searchable'} = $row->{'staff_searchable'}; | ||||
175 | $self->{'display_checkout'} = $row->{'display_checkout'}; | ||||
176 | $self->{'authorised_value_category'} = $row->{'authorised_value_category'}; | ||||
177 | $self->{'category_code'} = $row->{'category_code'}; | ||||
178 | $self->{'category_description'} = $row->{'category_description'}; | ||||
179 | $self->{'class'} = $row->{'class'}; | ||||
180 | |||||
181 | $sth = $dbh->prepare("SELECT branchcode, branchname FROM borrower_attribute_types_branches, branches WHERE b_branchcode = branchcode AND bat_code = ?;"); | ||||
182 | $sth->execute( $code ); | ||||
183 | while ( my $data = $sth->fetchrow_hashref ) { | ||||
184 | push @{ $self->{branches} }, $data; | ||||
185 | } | ||||
186 | $sth->finish(); | ||||
187 | |||||
188 | bless $self, $class; | ||||
189 | return $self; | ||||
190 | } | ||||
191 | |||||
192 | =head2 store | ||||
193 | |||||
- - | |||||
202 | sub store { | ||||
203 | my $self = shift; | ||||
204 | |||||
205 | my $dbh = C4::Context->dbh; | ||||
206 | my $sth; | ||||
207 | my $existing = __PACKAGE__->fetch($self->{'code'}); | ||||
208 | if (defined $existing) { | ||||
209 | $sth = $dbh->prepare_cached("UPDATE borrower_attribute_types | ||||
210 | SET description = ?, | ||||
211 | repeatable = ?, | ||||
212 | unique_id = ?, | ||||
213 | opac_display = ?, | ||||
214 | password_allowed = ?, | ||||
215 | staff_searchable = ?, | ||||
216 | authorised_value_category = ?, | ||||
217 | display_checkout = ?, | ||||
218 | category_code = ?, | ||||
219 | class = ? | ||||
220 | WHERE code = ?"); | ||||
221 | } else { | ||||
222 | $sth = $dbh->prepare_cached("INSERT INTO borrower_attribute_types | ||||
223 | (description, repeatable, unique_id, opac_display, password_allowed, | ||||
224 | staff_searchable, authorised_value_category, display_checkout, category_code, class, code) | ||||
225 | VALUES (?, ?, ?, ?, ?, | ||||
226 | ?, ?, ?, ?, ?, ?)"); | ||||
227 | } | ||||
228 | $sth->bind_param(1, $self->{'description'}); | ||||
229 | $sth->bind_param(2, $self->{'repeatable'}); | ||||
230 | $sth->bind_param(3, $self->{'unique_id'}); | ||||
231 | $sth->bind_param(4, $self->{'opac_display'}); | ||||
232 | $sth->bind_param(5, $self->{'password_allowed'}); | ||||
233 | $sth->bind_param(6, $self->{'staff_searchable'}); | ||||
234 | $sth->bind_param(7, $self->{'authorised_value_category'}); | ||||
235 | $sth->bind_param(8, $self->{'display_checkout'}); | ||||
236 | $sth->bind_param(9, $self->{'category_code'} || undef); | ||||
237 | $sth->bind_param(10, $self->{'class'}); | ||||
238 | $sth->bind_param(11, $self->{'code'}); | ||||
239 | $sth->execute; | ||||
240 | |||||
241 | if ( defined $$self{branches} ) { | ||||
242 | $sth = $dbh->prepare("DELETE FROM borrower_attribute_types_branches WHERE bat_code = ?"); | ||||
243 | $sth->execute( $$self{code} ); | ||||
244 | $sth = $dbh->prepare( | ||||
245 | "INSERT INTO borrower_attribute_types_branches | ||||
246 | ( bat_code, b_branchcode ) | ||||
247 | VALUES ( ?, ? )" | ||||
248 | ); | ||||
249 | for my $branchcode ( @{$$self{branches}} ) { | ||||
250 | next if not $branchcode; | ||||
251 | $sth->bind_param( 1, $$self{code} ); | ||||
252 | $sth->bind_param( 2, $branchcode ); | ||||
253 | $sth->execute; | ||||
254 | } | ||||
255 | } | ||||
256 | $sth->finish; | ||||
257 | } | ||||
258 | |||||
259 | =head2 code | ||||
260 | |||||
- - | |||||
269 | sub code { | ||||
270 | my $self = shift; | ||||
271 | return $self->{'code'}; | ||||
272 | } | ||||
273 | |||||
274 | =head2 description | ||||
275 | |||||
- - | |||||
283 | sub description { | ||||
284 | my $self = shift; | ||||
285 | @_ ? $self->{'description'} = shift : $self->{'description'}; | ||||
286 | } | ||||
287 | |||||
288 | =head2 branches | ||||
289 | |||||
- - | |||||
297 | sub branches { | ||||
298 | my $self = shift; | ||||
299 | @_ ? $self->{branches} = shift : $self->{branches}; | ||||
300 | } | ||||
301 | |||||
302 | =head2 repeatable | ||||
303 | |||||
- - | |||||
312 | sub repeatable { | ||||
313 | my $self = shift; | ||||
314 | @_ ? $self->{'repeatable'} = ((shift) ? 1 : 0) : $self->{'repeatable'}; | ||||
315 | } | ||||
316 | |||||
317 | =head2 unique_id | ||||
318 | |||||
- - | |||||
327 | sub unique_id { | ||||
328 | my $self = shift; | ||||
329 | @_ ? $self->{'unique_id'} = ((shift) ? 1 : 0) : $self->{'unique_id'}; | ||||
330 | } | ||||
331 | =head2 opac_display | ||||
332 | |||||
- - | |||||
341 | sub opac_display { | ||||
342 | my $self = shift; | ||||
343 | @_ ? $self->{'opac_display'} = ((shift) ? 1 : 0) : $self->{'opac_display'}; | ||||
344 | } | ||||
345 | =head2 password_allowed | ||||
346 | |||||
- - | |||||
355 | sub password_allowed { | ||||
356 | my $self = shift; | ||||
357 | @_ ? $self->{'password_allowed'} = ((shift) ? 1 : 0) : $self->{'password_allowed'}; | ||||
358 | } | ||||
359 | =head2 staff_searchable | ||||
360 | |||||
- - | |||||
369 | sub staff_searchable { | ||||
370 | my $self = shift; | ||||
371 | @_ ? $self->{'staff_searchable'} = ((shift) ? 1 : 0) : $self->{'staff_searchable'}; | ||||
372 | } | ||||
373 | |||||
374 | =head2 display_checkout | ||||
375 | |||||
- - | |||||
384 | sub display_checkout { | ||||
385 | my $self = shift; | ||||
386 | @_ ? $self->{'display_checkout'} = ((shift) ? 1 : 0) : $self->{'display_checkout'}; | ||||
387 | } | ||||
388 | |||||
389 | =head2 authorised_value_category | ||||
390 | |||||
- - | |||||
398 | sub authorised_value_category { | ||||
399 | my $self = shift; | ||||
400 | @_ ? $self->{'authorised_value_category'} = shift : $self->{'authorised_value_category'}; | ||||
401 | } | ||||
402 | |||||
403 | =head2 category_code | ||||
404 | |||||
- - | |||||
412 | sub category_code { | ||||
413 | my $self = shift; | ||||
414 | @_ ? $self->{'category_code'} = shift : $self->{'category_code'}; | ||||
415 | } | ||||
416 | |||||
417 | =head2 category_description | ||||
418 | |||||
- - | |||||
426 | sub category_description { | ||||
427 | my $self = shift; | ||||
428 | @_ ? $self->{'category_description'} = shift : $self->{'category_description'}; | ||||
429 | } | ||||
430 | |||||
431 | =head2 class | ||||
432 | |||||
- - | |||||
440 | sub class { | ||||
441 | my $self = shift; | ||||
442 | @_ ? $self->{'class'} = shift : $self->{'class'}; | ||||
443 | } | ||||
444 | |||||
445 | |||||
446 | =head2 delete | ||||
447 | |||||
- - | |||||
456 | sub delete { | ||||
457 | my $arg = shift; | ||||
458 | my $code; | ||||
459 | if (ref($arg) eq __PACKAGE__) { | ||||
460 | $code = $arg->{'code'}; | ||||
461 | } else { | ||||
462 | $code = shift; | ||||
463 | } | ||||
464 | |||||
465 | my $dbh = C4::Context->dbh; | ||||
466 | my $sth = $dbh->prepare_cached("DELETE FROM borrower_attribute_types WHERE code = ?"); | ||||
467 | $sth->execute($code); | ||||
468 | $sth->finish; | ||||
469 | } | ||||
470 | |||||
471 | =head2 num_patrons | ||||
472 | |||||
- - | |||||
480 | sub num_patrons { | ||||
481 | my $self = shift; | ||||
482 | |||||
483 | my $dbh = C4::Context->dbh; | ||||
484 | my $sth = $dbh->prepare_cached("SELECT COUNT(DISTINCT borrowernumber) | ||||
485 | FROM borrower_attributes | ||||
486 | WHERE code = ?"); | ||||
487 | $sth->execute($self->{code}); | ||||
488 | my ($count) = $sth->fetchrow_array; | ||||
489 | $sth->finish; | ||||
490 | return $count; | ||||
491 | } | ||||
492 | |||||
493 | =head2 get_patrons | ||||
494 | |||||
- - | |||||
502 | sub get_patrons { | ||||
503 | my $self = shift; | ||||
504 | my $value = shift; | ||||
505 | |||||
506 | my $dbh = C4::Context->dbh; | ||||
507 | my $sth = $dbh->prepare_cached("SELECT DISTINCT borrowernumber | ||||
508 | FROM borrower_attributes | ||||
509 | WHERE code = ? | ||||
510 | AND attribute = ?"); | ||||
511 | $sth->execute($self->{code}, $value); | ||||
512 | my @results; | ||||
513 | while (my ($borrowernumber) = $sth->fetchrow_array) { | ||||
514 | push @results, $borrowernumber; | ||||
515 | } | ||||
516 | return @results; | ||||
517 | } | ||||
518 | |||||
519 | =head1 AUTHOR | ||||
520 | |||||
- - | |||||
527 | 1 | 4µs | 1; |