| Filename | /usr/share/koha/lib/C4/Branch.pm |
| Statements | Executed 1745 statements in 419ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 27 | 3 | 3 | 13.5ms | 372ms | C4::Branch::GetBranches |
| 64 | 1 | 1 | 4.99ms | 141ms | C4::Branch::GetBranchName |
| 2 | 2 | 2 | 217µs | 4.22ms | C4::Branch::GetBranchCategories |
| 1 | 1 | 1 | 149µs | 22.3ms | C4::Branch::GetBranchesLoop |
| 1 | 1 | 1 | 65µs | 2.05ms | C4::Branch::GetBranchesCount |
| 1 | 1 | 1 | 46µs | 46µs | C4::Branch::CORE:sort (opcode) |
| 1 | 1 | 1 | 34µs | 45µs | C4::Branch::BEGIN@19 |
| 1 | 1 | 1 | 20µs | 20µs | C4::Branch::BEGIN@26 |
| 1 | 1 | 1 | 18µs | 2.34ms | C4::Branch::onlymine |
| 1 | 1 | 1 | 12µs | 107µs | C4::Branch::BEGIN@24 |
| 1 | 1 | 1 | 12µs | 14µs | C4::Branch::BEGIN@22 |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::CheckBranchCategorycode |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::CheckCategoryUnique |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::DelBranch |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::DelBranchCategory |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::GetBranch |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::GetBranchCategory |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::GetBranchDetail |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::GetBranchInfo |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::GetBranchesInCategory |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::GetCategoryTypes |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::ModBranch |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::ModBranchCategoryInfo |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::get_branch_code_from_name |
| 0 | 0 | 0 | 0s | 0s | C4::Branch::mybranch |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package C4::Branch; | ||||
| 2 | |||||
| 3 | # This file is part of Koha. | ||||
| 4 | # | ||||
| 5 | # Koha is free software; you can redistribute it and/or modify it under the | ||||
| 6 | # terms of the GNU General Public License as published by the Free Software | ||||
| 7 | # Foundation; either version 2 of the License, or (at your option) any later | ||||
| 8 | # version. | ||||
| 9 | # | ||||
| 10 | # Koha is distributed in the hope that it will be useful, but WITHOUT ANY | ||||
| 11 | # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | ||||
| 12 | # A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||||
| 13 | # | ||||
| 14 | # You should have received a copy of the GNU General Public License along with | ||||
| 15 | # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, | ||||
| 16 | # Suite 330, Boston, MA 02111-1307 USA | ||||
| 17 | |||||
| 18 | |||||
| 19 | 3 | 47µs | 2 | 57µs | # spent 45µs (34+12) within C4::Branch::BEGIN@19 which was called:
# once (34µs+12µs) by C4::Auth::BEGIN@30 at line 19 # spent 45µs making 1 call to C4::Branch::BEGIN@19
# spent 12µs making 1 call to strict::import |
| 20 | #use warnings; FIXME - Bug 2505 | ||||
| 21 | 1 | 2µs | require Exporter; | ||
| 22 | 3 | 33µs | 2 | 16µs | # spent 14µs (12+2) within C4::Branch::BEGIN@22 which was called:
# once (12µs+2µs) by C4::Auth::BEGIN@30 at line 22 # spent 14µs making 1 call to C4::Branch::BEGIN@22
# spent 2µs making 1 call to C4::Context::import |
| 23 | |||||
| 24 | 3 | 92µs | 2 | 201µs | # spent 107µs (12+94) within C4::Branch::BEGIN@24 which was called:
# once (12µs+94µs) by C4::Auth::BEGIN@30 at line 24 # spent 107µs making 1 call to C4::Branch::BEGIN@24
# spent 94µs making 1 call to vars::import |
| 25 | |||||
| 26 | # spent 20µs within C4::Branch::BEGIN@26 which was called:
# once (20µs+0s) by C4::Auth::BEGIN@30 at line 52 | ||||
| 27 | # set the version for version checking | ||||
| 28 | 1 | 1µs | $VERSION = 3.07.00.049; | ||
| 29 | 1 | 10µs | @ISA = qw(Exporter); | ||
| 30 | 1 | 3µs | @EXPORT = qw( | ||
| 31 | &GetBranchCategory | ||||
| 32 | &GetBranchName | ||||
| 33 | &GetBranch | ||||
| 34 | &GetBranches | ||||
| 35 | &GetBranchesLoop | ||||
| 36 | &GetBranchDetail | ||||
| 37 | &get_branchinfos_of | ||||
| 38 | &ModBranch | ||||
| 39 | &CheckBranchCategorycode | ||||
| 40 | &GetBranchInfo | ||||
| 41 | &GetCategoryTypes | ||||
| 42 | &GetBranchCategories | ||||
| 43 | &GetBranchesInCategory | ||||
| 44 | &ModBranchCategoryInfo | ||||
| 45 | &DelBranch | ||||
| 46 | &DelBranchCategory | ||||
| 47 | &CheckCategoryUnique | ||||
| 48 | &mybranch | ||||
| 49 | &GetBranchesCount | ||||
| 50 | ); | ||||
| 51 | 1 | 129µs | @EXPORT_OK = qw( &onlymine &mybranch get_branch_code_from_name ); | ||
| 52 | 1 | 2.10ms | 1 | 20µs | } # spent 20µs making 1 call to C4::Branch::BEGIN@26 |
| 53 | |||||
| 54 | =head1 NAME | ||||
| 55 | |||||
| - - | |||||
| 104 | # spent 372ms (13.5+358) within C4::Branch::GetBranches which was called 27 times, avg 13.8ms/call:
# 25 times (12.2ms+328ms) by C4::XSLT::buildKohaItemsNamespace at line 257 of /usr/share/koha/lib/C4/XSLT.pm, avg 13.6ms/call
# once (735µs+19.0ms) by C4::Branch::GetBranchesLoop at line 161
# once (515µs+11.6ms) by main::RUNTIME at line 195 of /usr/share/koha/opac/cgi-bin/opac/opac-search.pl | ||||
| 105 | 27 | 92µs | my ($onlymine)=@_; | ||
| 106 | # returns a reference to a hash of references to ALL branches... | ||||
| 107 | 27 | 21µs | my %branches; | ||
| 108 | 27 | 202µs | 27 | 25.9ms | my $dbh = C4::Context->dbh; # spent 25.9ms making 27 calls to C4::Context::dbh, avg 958µs/call |
| 109 | 27 | 13µs | my $sth; | ||
| 110 | 27 | 41µs | my $query="SELECT * FROM branches"; | ||
| 111 | 27 | 25µs | my @bind_parameters; | ||
| 112 | 27 | 27µs | if ($onlymine && C4::Context->userenv && C4::Context->userenv->{branch}){ | ||
| 113 | $query .= ' WHERE branchcode = ? '; | ||||
| 114 | push @bind_parameters, C4::Context->userenv->{branch}; | ||||
| 115 | } | ||||
| 116 | 27 | 46µs | $query.=" ORDER BY branchname"; | ||
| 117 | 27 | 550µs | 54 | 4.76ms | $sth = $dbh->prepare($query); # spent 2.60ms making 27 calls to DBI::db::prepare, avg 96µs/call
# spent 2.16ms making 27 calls to DBD::mysql::db::prepare, avg 80µs/call |
| 118 | 27 | 29.8ms | 27 | 29.5ms | $sth->execute( @bind_parameters ); # spent 29.5ms making 27 calls to DBI::st::execute, avg 1.09ms/call |
| 119 | |||||
| 120 | 27 | 683µs | 54 | 4.80ms | my $nsth = $dbh->prepare( # spent 2.59ms making 27 calls to DBI::db::prepare, avg 96µs/call
# spent 2.21ms making 27 calls to DBD::mysql::db::prepare, avg 82µs/call |
| 121 | "SELECT categorycode FROM branchrelations WHERE branchcode = ?" | ||||
| 122 | ); # prepare once, outside while loop | ||||
| 123 | |||||
| 124 | 27 | 20.6ms | 891 | 24.4ms | while ( my $branch = $sth->fetchrow_hashref ) { # spent 18.0ms making 297 calls to DBI::st::fetchrow_hashref, avg 61µs/call
# spent 3.76ms making 297 calls to DBI::st::fetch, avg 13µs/call
# spent 2.65ms making 297 calls to DBI::common::FETCH, avg 9µs/call |
| 125 | 270 | 278ms | 270 | 275ms | $nsth->execute( $branch->{'branchcode'} ); # spent 275ms making 270 calls to DBI::st::execute, avg 1.02ms/call |
| 126 | 270 | 6.75ms | 270 | 3.84ms | while ( my ($cat) = $nsth->fetchrow_array ) { # spent 3.84ms making 270 calls to DBI::st::fetchrow_array, avg 14µs/call |
| 127 | # FIXME - This seems wrong. It ought to be | ||||
| 128 | # $branch->{categorycodes}{$cat} = 1; | ||||
| 129 | # otherwise, there's a namespace collision if there's a | ||||
| 130 | # category with the same name as a field in the 'branches' | ||||
| 131 | # table (i.e., don't create a category called "issuing"). | ||||
| 132 | # In addition, the current structure doesn't really allow | ||||
| 133 | # you to list the categories that a branch belongs to: | ||||
| 134 | # you'd have to list keys %$branch, and remove those keys | ||||
| 135 | # that aren't fields in the "branches" table. | ||||
| 136 | # $branch->{$cat} = 1; | ||||
| 137 | $branch->{category}{$cat} = 1; | ||||
| 138 | } | ||||
| 139 | 270 | 1.45ms | $branches{ $branch->{'branchcode'} } = $branch; | ||
| 140 | } | ||||
| 141 | 27 | 2.36ms | return ( \%branches ); | ||
| 142 | } | ||||
| 143 | |||||
| 144 | # spent 2.34ms (18µs+2.32) within C4::Branch::onlymine which was called:
# once (18µs+2.32ms) by C4::Branch::GetBranchesLoop at line 160 | ||||
| 145 | return | ||||
| 146 | 1 | 15µs | 1 | 2.32ms | C4::Context->preference('IndependantBranches') && # spent 2.32ms making 1 call to C4::Context::preference |
| 147 | C4::Context->userenv && | ||||
| 148 | C4::Context->userenv->{flags} %2 != 1 && | ||||
| 149 | C4::Context->userenv->{branch} ; | ||||
| 150 | } | ||||
| 151 | |||||
| 152 | # always returns a string for OK comparison via "eq" or "ne" | ||||
| 153 | sub mybranch { | ||||
| 154 | C4::Context->userenv or return ''; | ||||
| 155 | return C4::Context->userenv->{branch} || ''; | ||||
| 156 | } | ||||
| 157 | |||||
| 158 | # spent 22.3ms (149µs+22.1) within C4::Branch::GetBranchesLoop which was called:
# once (149µs+22.1ms) by C4::Auth::get_template_and_user at line 381 of /usr/share/koha/lib/C4/Auth.pm | ||||
| 159 | 1 | 3µs | my $branch = @_ ? shift : mybranch(); # optional first argument is branchcode of "my branch", if preselection is wanted. | ||
| 160 | 1 | 6µs | 1 | 2.34ms | my $onlymine = @_ ? shift : onlymine(); # spent 2.34ms making 1 call to C4::Branch::onlymine |
| 161 | 1 | 53µs | 7 | 19.8ms | my $branches = GetBranches($onlymine); # spent 19.7ms making 1 call to C4::Branch::GetBranches
# spent 20µs making 4 calls to DBI::common::DESTROY, avg 5µs/call
# spent 18µs making 2 calls to DBD::_mem::common::DESTROY, avg 9µs/call |
| 162 | 1 | 1µs | my @loop; | ||
| 163 | 1 | 85µs | 1 | 46µs | foreach my $branchcode ( sort { uc($branches->{$a}->{branchname}) cmp uc($branches->{$b}->{branchname}) } keys %$branches ) { # spent 46µs making 1 call to C4::Branch::CORE:sort |
| 164 | 10 | 38µs | push @loop, { | ||
| 165 | value => $branchcode, | ||||
| 166 | branchcode => $branchcode, | ||||
| 167 | selected => ($branchcode eq $branch) ? 1 : 0, | ||||
| 168 | branchname => $branches->{$branchcode}->{branchname}, | ||||
| 169 | }; | ||||
| 170 | } | ||||
| 171 | 1 | 42µs | return \@loop; | ||
| 172 | } | ||||
| 173 | |||||
| 174 | =head2 GetBranchName | ||||
| 175 | |||||
| - - | |||||
| 178 | # spent 141ms (4.99+136) within C4::Branch::GetBranchName which was called 64 times, avg 2.20ms/call:
# 64 times (4.99ms+136ms) by C4::Biblio::GetAuthorisedValueDesc at line 1580 of /usr/share/koha/lib/C4/Biblio.pm, avg 2.20ms/call | ||||
| 179 | 64 | 112µs | my ($branchcode) = @_; | ||
| 180 | 64 | 353µs | 64 | 63.5ms | my $dbh = C4::Context->dbh; # spent 63.5ms making 64 calls to C4::Context::dbh, avg 993µs/call |
| 181 | 64 | 25µs | my $sth; | ||
| 182 | 64 | 1.33ms | 128 | 11.7ms | $sth = $dbh->prepare("Select branchname from branches where branchcode=?"); # spent 6.32ms making 64 calls to DBI::db::prepare, avg 99µs/call
# spent 5.41ms making 64 calls to DBD::mysql::db::prepare, avg 85µs/call |
| 183 | 64 | 63.9ms | 64 | 63.1ms | $sth->execute($branchcode); # spent 63.1ms making 64 calls to DBI::st::execute, avg 986µs/call |
| 184 | 64 | 1.66ms | 64 | 1.11ms | my $branchname = $sth->fetchrow_array; # spent 1.11ms making 64 calls to DBI::st::fetchrow_array, avg 17µs/call |
| 185 | 64 | 959µs | 64 | 535µs | $sth->finish; # spent 535µs making 64 calls to DBI::st::finish, avg 8µs/call |
| 186 | 64 | 2.85ms | return ($branchname); | ||
| 187 | } | ||||
| 188 | |||||
| 189 | =head2 ModBranch | ||||
| 190 | |||||
| - - | |||||
| 199 | sub ModBranch { | ||||
| 200 | my ($data) = @_; | ||||
| 201 | |||||
| 202 | my $dbh = C4::Context->dbh; | ||||
| 203 | if ($data->{add}) { | ||||
| 204 | my $query = " | ||||
| 205 | INSERT INTO branches | ||||
| 206 | (branchcode,branchname,branchaddress1, | ||||
| 207 | branchaddress2,branchaddress3,branchzip,branchcity,branchstate, | ||||
| 208 | branchcountry,branchphone,branchfax,branchemail, | ||||
| 209 | branchurl,branchip,branchprinter,branchnotes,opac_info) | ||||
| 210 | VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) | ||||
| 211 | "; | ||||
| 212 | my $sth = $dbh->prepare($query); | ||||
| 213 | $sth->execute( | ||||
| 214 | $data->{'branchcode'}, $data->{'branchname'}, | ||||
| 215 | $data->{'branchaddress1'}, $data->{'branchaddress2'}, | ||||
| 216 | $data->{'branchaddress3'}, $data->{'branchzip'}, | ||||
| 217 | $data->{'branchcity'}, $data->{'branchstate'}, | ||||
| 218 | $data->{'branchcountry'}, | ||||
| 219 | $data->{'branchphone'}, $data->{'branchfax'}, | ||||
| 220 | $data->{'branchemail'}, $data->{'branchurl'}, | ||||
| 221 | $data->{'branchip'}, $data->{'branchprinter'}, | ||||
| 222 | $data->{'branchnotes'}, $data->{opac_info}, | ||||
| 223 | ); | ||||
| 224 | return 1 if $dbh->err; | ||||
| 225 | } else { | ||||
| 226 | my $query = " | ||||
| 227 | UPDATE branches | ||||
| 228 | SET branchname=?,branchaddress1=?, | ||||
| 229 | branchaddress2=?,branchaddress3=?,branchzip=?, | ||||
| 230 | branchcity=?,branchstate=?,branchcountry=?,branchphone=?, | ||||
| 231 | branchfax=?,branchemail=?,branchurl=?,branchip=?, | ||||
| 232 | branchprinter=?,branchnotes=?,opac_info=? | ||||
| 233 | WHERE branchcode=? | ||||
| 234 | "; | ||||
| 235 | my $sth = $dbh->prepare($query); | ||||
| 236 | $sth->execute( | ||||
| 237 | $data->{'branchname'}, | ||||
| 238 | $data->{'branchaddress1'}, $data->{'branchaddress2'}, | ||||
| 239 | $data->{'branchaddress3'}, $data->{'branchzip'}, | ||||
| 240 | $data->{'branchcity'}, $data->{'branchstate'}, | ||||
| 241 | $data->{'branchcountry'}, | ||||
| 242 | $data->{'branchphone'}, $data->{'branchfax'}, | ||||
| 243 | $data->{'branchemail'}, $data->{'branchurl'}, | ||||
| 244 | $data->{'branchip'}, $data->{'branchprinter'}, | ||||
| 245 | $data->{'branchnotes'}, $data->{opac_info}, | ||||
| 246 | $data->{'branchcode'}, | ||||
| 247 | ); | ||||
| 248 | } | ||||
| 249 | # sort out the categories.... | ||||
| 250 | my @checkedcats; | ||||
| 251 | my $cats = GetBranchCategory(); | ||||
| 252 | foreach my $cat (@$cats) { | ||||
| 253 | my $code = $cat->{'categorycode'}; | ||||
| 254 | if ( $data->{$code} ) { | ||||
| 255 | push( @checkedcats, $code ); | ||||
| 256 | } | ||||
| 257 | } | ||||
| 258 | my $branchcode = uc( $data->{'branchcode'} ); | ||||
| 259 | my $branch = GetBranchInfo($branchcode); | ||||
| 260 | $branch = $branch->[0]; | ||||
| 261 | my $branchcats = $branch->{'categories'}; | ||||
| 262 | my @addcats; | ||||
| 263 | my @removecats; | ||||
| 264 | foreach my $bcat (@$branchcats) { | ||||
| 265 | |||||
| 266 | unless ( grep { /^$bcat$/ } @checkedcats ) { | ||||
| 267 | push( @removecats, $bcat ); | ||||
| 268 | } | ||||
| 269 | } | ||||
| 270 | foreach my $ccat (@checkedcats) { | ||||
| 271 | unless ( grep { /^$ccat$/ } @$branchcats ) { | ||||
| 272 | push( @addcats, $ccat ); | ||||
| 273 | } | ||||
| 274 | } | ||||
| 275 | foreach my $cat (@addcats) { | ||||
| 276 | my $sth = | ||||
| 277 | $dbh->prepare( | ||||
| 278 | "insert into branchrelations (branchcode, categorycode) values(?, ?)" | ||||
| 279 | ); | ||||
| 280 | $sth->execute( $branchcode, $cat ); | ||||
| 281 | $sth->finish; | ||||
| 282 | } | ||||
| 283 | foreach my $cat (@removecats) { | ||||
| 284 | my $sth = | ||||
| 285 | $dbh->prepare( | ||||
| 286 | "delete from branchrelations where branchcode=? and categorycode=?" | ||||
| 287 | ); | ||||
| 288 | $sth->execute( $branchcode, $cat ); | ||||
| 289 | $sth->finish; | ||||
| 290 | } | ||||
| 291 | } | ||||
| 292 | |||||
| 293 | =head2 GetBranchCategory | ||||
| 294 | |||||
| - - | |||||
| 301 | sub GetBranchCategory { | ||||
| 302 | |||||
| 303 | # returns a reference to an array of hashes containing branches, | ||||
| 304 | my ($catcode) = @_; | ||||
| 305 | my $dbh = C4::Context->dbh; | ||||
| 306 | my $sth; | ||||
| 307 | |||||
| 308 | # print DEBUG "GetBranchCategory: entry: catcode=".cvs($catcode)."\n"; | ||||
| 309 | if ($catcode) { | ||||
| 310 | $sth = | ||||
| 311 | $dbh->prepare( | ||||
| 312 | "select * from branchcategories where categorycode = ?"); | ||||
| 313 | $sth->execute($catcode); | ||||
| 314 | } | ||||
| 315 | else { | ||||
| 316 | $sth = $dbh->prepare("Select * from branchcategories"); | ||||
| 317 | $sth->execute(); | ||||
| 318 | } | ||||
| 319 | my @results; | ||||
| 320 | while ( my $data = $sth->fetchrow_hashref ) { | ||||
| 321 | push( @results, $data ); | ||||
| 322 | } | ||||
| 323 | $sth->finish; | ||||
| 324 | |||||
| 325 | # print DEBUG "GetBranchCategory: exit: returning ".cvs(\@results)."\n"; | ||||
| 326 | return \@results; | ||||
| 327 | } | ||||
| 328 | |||||
| 329 | =head2 GetBranchCategories | ||||
| 330 | |||||
| - - | |||||
| 340 | # spent 4.22ms (217µs+4.00) within C4::Branch::GetBranchCategories which was called 2 times, avg 2.11ms/call:
# once (127µs+2.12ms) by C4::Auth::get_template_and_user at line 381 of /usr/share/koha/lib/C4/Auth.pm
# once (91µs+1.88ms) by main::RUNTIME at line 196 of /usr/share/koha/opac/cgi-bin/opac/opac-search.pl | ||||
| 341 | 2 | 5µs | my ( $branchcode, $categorytype, $show_in_pulldown, $selected_in_pulldown ) = @_; | ||
| 342 | 2 | 92µs | 2 | 1.44ms | my $dbh = C4::Context->dbh(); # spent 1.44ms making 2 calls to C4::Context::dbh, avg 722µs/call |
| 343 | |||||
| 344 | 2 | 3µs | my $query = "SELECT c.* FROM branchcategories c"; | ||
| 345 | 2 | 3µs | my ( @where, @bind ); | ||
| 346 | |||||
| 347 | 2 | 2µs | if( $branchcode ) { | ||
| 348 | $query .= ",branchrelations r, branches b "; | ||||
| 349 | push @where, "c.categorycode = r.categorycode AND r.branchcode = ? "; | ||||
| 350 | push @bind , $branchcode; | ||||
| 351 | } | ||||
| 352 | |||||
| 353 | 2 | 2µs | if ( $categorytype ) { | ||
| 354 | 1 | 3µs | push @where, " c.categorytype = ? "; | ||
| 355 | 1 | 1µs | push @bind, $categorytype; | ||
| 356 | } | ||||
| 357 | |||||
| 358 | 2 | 2µs | if ( defined( $show_in_pulldown ) ) { | ||
| 359 | 1 | 2µs | push( @where, " c.show_in_pulldown = ? " ); | ||
| 360 | 1 | 900ns | push( @bind, $show_in_pulldown ); | ||
| 361 | } | ||||
| 362 | |||||
| 363 | 2 | 9µs | $query .= " WHERE " . join(" AND ", @where) if(@where); | ||
| 364 | 2 | 2µs | $query .= " ORDER BY categorytype,c.categorycode"; | ||
| 365 | 2 | 35µs | 4 | 358µs | my $sth=$dbh->prepare( $query); # spent 192µs making 2 calls to DBI::db::prepare, avg 96µs/call
# spent 166µs making 2 calls to DBD::mysql::db::prepare, avg 83µs/call |
| 366 | 2 | 2.10ms | 2 | 2.07ms | $sth->execute(@bind); # spent 2.07ms making 2 calls to DBI::st::execute, avg 1.04ms/call |
| 367 | |||||
| 368 | 2 | 88µs | 4 | 456µs | my $branchcats = $sth->fetchall_arrayref({}); # spent 255µs making 2 calls to DBI::st::fetchall_arrayref, avg 127µs/call
# spent 202µs making 2 calls to DBD::_::st::fetchall_arrayref, avg 101µs/call |
| 369 | 2 | 31µs | 2 | 14µs | $sth->finish(); # spent 14µs making 2 calls to DBI::st::finish, avg 7µs/call |
| 370 | |||||
| 371 | 2 | 2µs | if ( $selected_in_pulldown ) { | ||
| 372 | foreach my $bc ( @$branchcats ) { | ||||
| 373 | $bc->{'selected'} = 1 if ( $bc->{'categorycode'} eq $selected_in_pulldown ); | ||||
| 374 | } | ||||
| 375 | } | ||||
| 376 | |||||
| 377 | 2 | 78µs | return( $branchcats ); | ||
| 378 | } | ||||
| 379 | |||||
| 380 | =head2 GetCategoryTypes | ||||
| 381 | |||||
| - - | |||||
| 392 | #TODO manage category types. rename possibly to 'agency domains' ? as borrowergroups are called categories. | ||||
| 393 | sub GetCategoryTypes { | ||||
| 394 | return ( 'searchdomain','properties'); | ||||
| 395 | } | ||||
| 396 | |||||
| 397 | =head2 GetBranch | ||||
| 398 | |||||
| - - | |||||
| 403 | sub GetBranch { | ||||
| 404 | my ( $query, $branches ) = @_; # get branch for this query from branches | ||||
| 405 | my $branch = $query->param('branch'); | ||||
| 406 | my %cookie = $query->cookie('userenv'); | ||||
| 407 | ($branch) || ($branch = $cookie{'branchname'}); | ||||
| 408 | ( $branches->{$branch} ) || ( $branch = ( keys %$branches )[0] ); | ||||
| 409 | return $branch; | ||||
| 410 | } | ||||
| 411 | |||||
| 412 | =head2 GetBranchDetail | ||||
| 413 | |||||
| - - | |||||
| 421 | sub GetBranchDetail { | ||||
| 422 | my ($branchcode) = shift or return; | ||||
| 423 | my $sth = C4::Context->dbh->prepare("SELECT * FROM branches WHERE branchcode = ?"); | ||||
| 424 | $sth->execute($branchcode); | ||||
| 425 | return $sth->fetchrow_hashref(); | ||||
| 426 | } | ||||
| 427 | |||||
| 428 | =head2 GetBranchesInCategory | ||||
| 429 | |||||
| - - | |||||
| 436 | sub GetBranchesInCategory { | ||||
| 437 | my ($categorycode) = @_; | ||||
| 438 | my @branches; | ||||
| 439 | my $dbh = C4::Context->dbh(); | ||||
| 440 | my $sth=$dbh->prepare( "SELECT b.branchcode FROM branchrelations r, branches b | ||||
| 441 | where r.branchcode=b.branchcode and r.categorycode=?"); | ||||
| 442 | $sth->execute($categorycode); | ||||
| 443 | while (my $branch = $sth->fetchrow) { | ||||
| 444 | push @branches, $branch; | ||||
| 445 | } | ||||
| 446 | $sth->finish(); | ||||
| 447 | return( \@branches ); | ||||
| 448 | } | ||||
| 449 | |||||
| 450 | =head2 GetBranchInfo | ||||
| 451 | |||||
| - - | |||||
| 459 | sub GetBranchInfo { | ||||
| 460 | my ($branchcode,$categorytype) = @_; | ||||
| 461 | my $dbh = C4::Context->dbh; | ||||
| 462 | my $sth; | ||||
| 463 | |||||
| 464 | |||||
| 465 | if ($branchcode) { | ||||
| 466 | $sth = | ||||
| 467 | $dbh->prepare( | ||||
| 468 | "Select * from branches where branchcode = ? order by branchcode"); | ||||
| 469 | $sth->execute($branchcode); | ||||
| 470 | } | ||||
| 471 | else { | ||||
| 472 | $sth = $dbh->prepare("Select * from branches order by branchcode"); | ||||
| 473 | $sth->execute(); | ||||
| 474 | } | ||||
| 475 | my @results; | ||||
| 476 | while ( my $data = $sth->fetchrow_hashref ) { | ||||
| 477 | my @bind = ($data->{'branchcode'}); | ||||
| 478 | my $query= "select r.categorycode from branchrelations r"; | ||||
| 479 | $query .= ", branchcategories c " if($categorytype); | ||||
| 480 | $query .= " where branchcode=? "; | ||||
| 481 | if($categorytype) { | ||||
| 482 | $query .= " and c.categorytype=? and r.categorycode=c.categorycode"; | ||||
| 483 | push @bind, $categorytype; | ||||
| 484 | } | ||||
| 485 | my $nsth=$dbh->prepare($query); | ||||
| 486 | $nsth->execute( @bind ); | ||||
| 487 | my @cats = (); | ||||
| 488 | while ( my ($cat) = $nsth->fetchrow_array ) { | ||||
| 489 | push( @cats, $cat ); | ||||
| 490 | } | ||||
| 491 | $nsth->finish; | ||||
| 492 | $data->{'categories'} = \@cats; | ||||
| 493 | push( @results, $data ); | ||||
| 494 | } | ||||
| 495 | $sth->finish; | ||||
| 496 | return \@results; | ||||
| 497 | } | ||||
| 498 | |||||
| 499 | =head2 DelBranch | ||||
| 500 | |||||
| - - | |||||
| 505 | sub DelBranch { | ||||
| 506 | my ($branchcode) = @_; | ||||
| 507 | my $dbh = C4::Context->dbh; | ||||
| 508 | my $sth = $dbh->prepare("delete from branches where branchcode = ?"); | ||||
| 509 | $sth->execute($branchcode); | ||||
| 510 | $sth->finish; | ||||
| 511 | } | ||||
| 512 | |||||
| 513 | =head2 ModBranchCategoryInfo | ||||
| 514 | |||||
| - - | |||||
| 520 | sub ModBranchCategoryInfo { | ||||
| 521 | my ($data) = @_; | ||||
| 522 | my $dbh = C4::Context->dbh; | ||||
| 523 | if ($data->{'add'}){ | ||||
| 524 | # we are doing an insert | ||||
| 525 | my $sth = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype,show_in_pulldown) VALUES (?,?,?,?,?)"); | ||||
| 526 | $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},$data->{'show_in_pulldown'} ); | ||||
| 527 | $sth->finish(); | ||||
| 528 | } | ||||
| 529 | else { | ||||
| 530 | # modifying | ||||
| 531 | my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=?,show_in_pulldown=? WHERE categorycode=?"); | ||||
| 532 | $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},$data->{'show_in_pulldown'},uc( $data->{'categorycode'} ) ); | ||||
| 533 | $sth->finish(); | ||||
| 534 | } | ||||
| 535 | } | ||||
| 536 | |||||
| 537 | =head2 CheckCategoryUnique | ||||
| 538 | |||||
| - - | |||||
| 545 | sub CheckCategoryUnique { | ||||
| 546 | my $categorycode = shift; | ||||
| 547 | my $dbh = C4::Context->dbh; | ||||
| 548 | my $sth = $dbh->prepare("SELECT categorycode FROM branchcategories WHERE categorycode = ?"); | ||||
| 549 | $sth->execute(uc( $categorycode) ); | ||||
| 550 | if (my $data = $sth->fetchrow_hashref){ | ||||
| 551 | return 0; | ||||
| 552 | } | ||||
| 553 | else { | ||||
| 554 | return 1; | ||||
| 555 | } | ||||
| 556 | } | ||||
| 557 | |||||
| 558 | |||||
| 559 | =head2 DeleteBranchCategory | ||||
| 560 | |||||
| - - | |||||
| 565 | sub DelBranchCategory { | ||||
| 566 | my ($categorycode) = @_; | ||||
| 567 | my $dbh = C4::Context->dbh; | ||||
| 568 | my $sth = $dbh->prepare("delete from branchcategories where categorycode = ?"); | ||||
| 569 | $sth->execute($categorycode); | ||||
| 570 | $sth->finish; | ||||
| 571 | } | ||||
| 572 | |||||
| 573 | =head2 CheckBranchCategorycode | ||||
| 574 | |||||
| - - | |||||
| 579 | sub CheckBranchCategorycode { | ||||
| 580 | |||||
| 581 | # check to see if the branchcode is being used in the database somewhere.... | ||||
| 582 | my ($categorycode) = @_; | ||||
| 583 | my $dbh = C4::Context->dbh; | ||||
| 584 | my $sth = | ||||
| 585 | $dbh->prepare( | ||||
| 586 | "select count(*) from branchrelations where categorycode=?"); | ||||
| 587 | $sth->execute($categorycode); | ||||
| 588 | my ($total) = $sth->fetchrow_array; | ||||
| 589 | return $total; | ||||
| 590 | } | ||||
| 591 | |||||
| 592 | sub get_branch_code_from_name { | ||||
| 593 | my @branch_name = @_; | ||||
| 594 | my $query = "SELECT branchcode FROM branches WHERE branchname=?;"; | ||||
| 595 | my $dbh = C4::Context->dbh(); | ||||
| 596 | my $sth = $dbh->prepare($query); | ||||
| 597 | $sth->execute(@branch_name); | ||||
| 598 | return $sth->fetchrow_array; | ||||
| 599 | } | ||||
| 600 | |||||
| 601 | # spent 2.05ms (65µs+1.99) within C4::Branch::GetBranchesCount which was called:
# once (65µs+1.99ms) by C4::Koha::getFacets at line 786 of /usr/share/koha/lib/C4/Koha.pm | ||||
| 602 | 1 | 6µs | 1 | 973µs | my $dbh = C4::Context->dbh(); # spent 973µs making 1 call to C4::Context::dbh |
| 603 | 1 | 2µs | my $query = "SELECT COUNT(*) AS branches_count FROM branches"; | ||
| 604 | 1 | 15µs | 2 | 134µs | my $sth = $dbh->prepare( $query ); # spent 73µs making 1 call to DBI::db::prepare
# spent 61µs making 1 call to DBD::mysql::db::prepare |
| 605 | 1 | 906µs | 1 | 892µs | $sth->execute(); # spent 892µs making 1 call to DBI::st::execute |
| 606 | 1 | 46µs | 3 | 54µs | my $row = $sth->fetchrow_hashref(); # spent 40µs making 1 call to DBI::st::fetchrow_hashref
# spent 9µs making 1 call to DBI::common::FETCH
# spent 6µs making 1 call to DBI::st::fetch |
| 607 | 1 | 37µs | return $row->{'branches_count'}; | ||
| 608 | } | ||||
| 609 | |||||
| 610 | 1 | 5µs | 1; | ||
| 611 | __END__ | ||||
# spent 46µs within C4::Branch::CORE:sort which was called:
# once (46µs+0s) by C4::Branch::GetBranchesLoop at line 163 |