← Index
NYTProf Performance Profile   « block view • line view • sub view »
For /usr/share/koha/opac/cgi-bin/opac/opac-search.pl
  Run on Tue Oct 15 17:10:45 2013
Reported on Tue Oct 15 17:11:26 2013

Filename/usr/share/koha/lib/C4/Members/AttributeTypes.pm
StatementsExecuted 11 statements in 2.06ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11117µs22µsC4::Members::AttributeTypes::::BEGIN@20C4::Members::AttributeTypes::BEGIN@20
11110µs11µsC4::Members::AttributeTypes::::BEGIN@22C4::Members::AttributeTypes::BEGIN@22
1119µs41µsC4::Members::AttributeTypes::::BEGIN@24C4::Members::AttributeTypes::BEGIN@24
1118µs8µsC4::Members::AttributeTypes::::BEGIN@26C4::Members::AttributeTypes::BEGIN@26
0000s0sC4::Members::AttributeTypes::::AttributeTypeExistsC4::Members::AttributeTypes::AttributeTypeExists
0000s0sC4::Members::AttributeTypes::::GetAttributeTypesC4::Members::AttributeTypes::GetAttributeTypes
0000s0sC4::Members::AttributeTypes::::GetAttributeTypes_hashrefC4::Members::AttributeTypes::GetAttributeTypes_hashref
0000s0sC4::Members::AttributeTypes::::authorised_value_categoryC4::Members::AttributeTypes::authorised_value_category
0000s0sC4::Members::AttributeTypes::::branchesC4::Members::AttributeTypes::branches
0000s0sC4::Members::AttributeTypes::::category_codeC4::Members::AttributeTypes::category_code
0000s0sC4::Members::AttributeTypes::::category_descriptionC4::Members::AttributeTypes::category_description
0000s0sC4::Members::AttributeTypes::::classC4::Members::AttributeTypes::class
0000s0sC4::Members::AttributeTypes::::codeC4::Members::AttributeTypes::code
0000s0sC4::Members::AttributeTypes::::deleteC4::Members::AttributeTypes::delete
0000s0sC4::Members::AttributeTypes::::descriptionC4::Members::AttributeTypes::description
0000s0sC4::Members::AttributeTypes::::display_checkoutC4::Members::AttributeTypes::display_checkout
0000s0sC4::Members::AttributeTypes::::fetchC4::Members::AttributeTypes::fetch
0000s0sC4::Members::AttributeTypes::::get_patronsC4::Members::AttributeTypes::get_patrons
0000s0sC4::Members::AttributeTypes::::newC4::Members::AttributeTypes::new
0000s0sC4::Members::AttributeTypes::::num_patronsC4::Members::AttributeTypes::num_patrons
0000s0sC4::Members::AttributeTypes::::opac_displayC4::Members::AttributeTypes::opac_display
0000s0sC4::Members::AttributeTypes::::password_allowedC4::Members::AttributeTypes::password_allowed
0000s0sC4::Members::AttributeTypes::::repeatableC4::Members::AttributeTypes::repeatable
0000s0sC4::Members::AttributeTypes::::staff_searchableC4::Members::AttributeTypes::staff_searchable
0000s0sC4::Members::AttributeTypes::::storeC4::Members::AttributeTypes::store
0000s0sC4::Members::AttributeTypes::::unique_idC4::Members::AttributeTypes::unique_id
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package 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
20329µs226µs
# spent 22µs (17+4) within C4::Members::AttributeTypes::BEGIN@20 which was called: # once (17µs+4µs) by C4::Members::Attributes::BEGIN@25 at line 20
use strict;
# spent 22µs making 1 call to C4::Members::AttributeTypes::BEGIN@20 # spent 4µs making 1 call to strict::import
21#use warnings; FIXME - Bug 2505
22329µs213µs
# spent 11µs (10+2) within C4::Members::AttributeTypes::BEGIN@22 which was called: # once (10µs+2µs) by C4::Members::Attributes::BEGIN@25 at line 22
use C4::Context;
# spent 11µs making 1 call to C4::Members::AttributeTypes::BEGIN@22 # spent 2µs making 1 call to C4::Context::import
23
24341µs272µs
# spent 41µs (9+32) within C4::Members::AttributeTypes::BEGIN@24 which was called: # once (9µs+32µs) by C4::Members::Attributes::BEGIN@25 at line 24
use vars qw($VERSION);
# spent 41µs making 1 call to C4::Members::AttributeTypes::BEGIN@24 # spent 32µs making 1 call to vars::import
25
26
# spent 8µs within C4::Members::AttributeTypes::BEGIN@26 which was called: # once (8µs+0s) by C4::Members::Attributes::BEGIN@25 at line 29
BEGIN {
27 # set the version for version checking
2818µs $VERSION = 3.07.00.049;
2911.94ms18µs}
# spent 8µs making 1 call to C4::Members::AttributeTypes::BEGIN@26
30
31=head1 NAME
32
- -
71sub 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
93sub GetAttributeTypes_hashref {
94 my %hash = map {$_->{code} => $_} GetAttributeTypes(@_);
95 return \%hash;
96}
97
98=head2 AttributeTypeExists
99
- -
107sub 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
- -
122sub 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
- -
152sub 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
- -
202sub 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
- -
269sub code {
270 my $self = shift;
271 return $self->{'code'};
272}
273
274=head2 description
275
- -
283sub description {
284 my $self = shift;
285 @_ ? $self->{'description'} = shift : $self->{'description'};
286}
287
288=head2 branches
289
- -
297sub branches {
298 my $self = shift;
299 @_ ? $self->{branches} = shift : $self->{branches};
300}
301
302=head2 repeatable
303
- -
312sub repeatable {
313 my $self = shift;
314 @_ ? $self->{'repeatable'} = ((shift) ? 1 : 0) : $self->{'repeatable'};
315}
316
317=head2 unique_id
318
- -
327sub unique_id {
328 my $self = shift;
329 @_ ? $self->{'unique_id'} = ((shift) ? 1 : 0) : $self->{'unique_id'};
330}
331=head2 opac_display
332
- -
341sub opac_display {
342 my $self = shift;
343 @_ ? $self->{'opac_display'} = ((shift) ? 1 : 0) : $self->{'opac_display'};
344}
345=head2 password_allowed
346
- -
355sub password_allowed {
356 my $self = shift;
357 @_ ? $self->{'password_allowed'} = ((shift) ? 1 : 0) : $self->{'password_allowed'};
358}
359=head2 staff_searchable
360
- -
369sub staff_searchable {
370 my $self = shift;
371 @_ ? $self->{'staff_searchable'} = ((shift) ? 1 : 0) : $self->{'staff_searchable'};
372}
373
374=head2 display_checkout
375
- -
384sub display_checkout {
385 my $self = shift;
386 @_ ? $self->{'display_checkout'} = ((shift) ? 1 : 0) : $self->{'display_checkout'};
387}
388
389=head2 authorised_value_category
390
- -
398sub authorised_value_category {
399 my $self = shift;
400 @_ ? $self->{'authorised_value_category'} = shift : $self->{'authorised_value_category'};
401}
402
403=head2 category_code
404
- -
412sub category_code {
413 my $self = shift;
414 @_ ? $self->{'category_code'} = shift : $self->{'category_code'};
415}
416
417=head2 category_description
418
- -
426sub category_description {
427 my $self = shift;
428 @_ ? $self->{'category_description'} = shift : $self->{'category_description'};
429}
430
431=head2 class
432
- -
440sub class {
441 my $self = shift;
442 @_ ? $self->{'class'} = shift : $self->{'class'};
443}
444
445
446=head2 delete
447
- -
456sub 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
- -
480sub 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
- -
502sub 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
- -
52715µs1;