X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FBranch.pm;h=bdc01dc5e7ae187c6ec9e6cd84e029e2361a8cba;hb=3086788b26ef8b04e4abbf2cdf94c60ef120cf02;hp=1f26e352402f2ddbaeea0aa137284a1d2eed5bbb;hpb=93ffca4eef68f9ce6f28660c0b6ab759330f4a72;p=koha.git diff --git a/C4/Branch.pm b/C4/Branch.pm index 1f26e35240..bdc01dc5e7 100644 --- a/C4/Branch.pm +++ b/C4/Branch.pm @@ -20,13 +20,12 @@ use strict; #use warnings; FIXME - Bug 2505 require Exporter; use C4::Context; -use C4::Koha; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); BEGIN { # set the version for version checking - $VERSION = 3.02; + $VERSION = 3.07.00.049; @ISA = qw(Exporter); @EXPORT = qw( &GetBranchCategory @@ -47,8 +46,9 @@ BEGIN { &DelBranchCategory &CheckCategoryUnique &mybranch + &GetBranchesCount ); - @EXPORT_OK = qw( &onlymine &mybranch get_branch_code_from_name ); + @EXPORT_OK = qw( &onlymine &mybranch ); } =head1 NAME @@ -69,7 +69,7 @@ The functions in this module deal with branches. $branches = &GetBranches(); -Returns informations about ALL branches, IndependantBranches Insensitive. +Returns informations about ALL branches, IndependentBranches Insensitive. GetBranchInfo() returns the same information without the problems of this function (namespace collision, mainly). @@ -90,11 +90,15 @@ Create a branch selector with the following code. =head3 in TEMPLATE - + + [% FOREACH branchloo IN branchloop %] + [% IF ( branchloo.selected ) %] + + [% ELSE %] + + [% END %] + [% END %] =head4 Note that you often will want to just use GetBranchesLoop, for exactly the example above. @@ -143,7 +147,7 @@ sub GetBranches { sub onlymine { return - C4::Context->preference('IndependantBranches') && + C4::Context->preference('IndependentBranches') && C4::Context->userenv && C4::Context->userenv->{flags} %2 != 1 && C4::Context->userenv->{branch} ; @@ -155,16 +159,17 @@ sub mybranch { return C4::Context->userenv->{branch} || ''; } -sub GetBranchesLoop (;$$) { # since this is what most pages want anyway +sub GetBranchesLoop { # since this is what most pages want anyway my $branch = @_ ? shift : mybranch(); # optional first argument is branchcode of "my branch", if preselection is wanted. my $onlymine = @_ ? shift : onlymine(); my $branches = GetBranches($onlymine); my @loop; - foreach ( sort { uc($branches->{$a}->{branchname}) cmp uc($branches->{$b}->{branchname}) } keys %$branches ) { + foreach my $branchcode ( sort { uc($branches->{$a}->{branchname}) cmp uc($branches->{$b}->{branchname}) } keys %$branches ) { push @loop, { - value => $_, - selected => ($_ eq $branch) ? 1 : 0, - branchname => $branches->{$_}->{branchname}, + value => $branchcode, + branchcode => $branchcode, + selected => ($branchcode eq $branch) ? 1 : 0, + branchname => $branches->{$branchcode}->{branchname}, }; } return \@loop; @@ -181,7 +186,6 @@ sub GetBranchName { $sth = $dbh->prepare("Select branchname from branches where branchcode=?"); $sth->execute($branchcode); my $branchname = $sth->fetchrow_array; - $sth->finish; return ($branchname); } @@ -203,21 +207,22 @@ sub ModBranch { my $query = " INSERT INTO branches (branchcode,branchname,branchaddress1, - branchaddress2,branchaddress3,branchzip,branchcity, + branchaddress2,branchaddress3,branchzip,branchcity,branchstate, branchcountry,branchphone,branchfax,branchemail, - branchurl,branchip,branchprinter,branchnotes) - VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) + branchurl,branchip,branchprinter,branchnotes,opac_info) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; my $sth = $dbh->prepare($query); $sth->execute( $data->{'branchcode'}, $data->{'branchname'}, $data->{'branchaddress1'}, $data->{'branchaddress2'}, $data->{'branchaddress3'}, $data->{'branchzip'}, - $data->{'branchcity'}, $data->{'branchcountry'}, + $data->{'branchcity'}, $data->{'branchstate'}, + $data->{'branchcountry'}, $data->{'branchphone'}, $data->{'branchfax'}, $data->{'branchemail'}, $data->{'branchurl'}, $data->{'branchip'}, $data->{'branchprinter'}, - $data->{'branchnotes'}, + $data->{'branchnotes'}, $data->{opac_info}, ); return 1 if $dbh->err; } else { @@ -225,9 +230,9 @@ sub ModBranch { UPDATE branches SET branchname=?,branchaddress1=?, branchaddress2=?,branchaddress3=?,branchzip=?, - branchcity=?,branchcountry=?,branchphone=?, + branchcity=?,branchstate=?,branchcountry=?,branchphone=?, branchfax=?,branchemail=?,branchurl=?,branchip=?, - branchprinter=?,branchnotes=? + branchprinter=?,branchnotes=?,opac_info=? WHERE branchcode=? "; my $sth = $dbh->prepare($query); @@ -235,17 +240,18 @@ sub ModBranch { $data->{'branchname'}, $data->{'branchaddress1'}, $data->{'branchaddress2'}, $data->{'branchaddress3'}, $data->{'branchzip'}, - $data->{'branchcity'}, $data->{'branchcountry'}, + $data->{'branchcity'}, $data->{'branchstate'}, + $data->{'branchcountry'}, $data->{'branchphone'}, $data->{'branchfax'}, $data->{'branchemail'}, $data->{'branchurl'}, $data->{'branchip'}, $data->{'branchprinter'}, - $data->{'branchnotes'}, + $data->{'branchnotes'}, $data->{opac_info}, $data->{'branchcode'}, ); } # sort out the categories.... my @checkedcats; - my $cats = GetBranchCategory(); + my $cats = GetBranchCategories(); foreach my $cat (@$cats) { my $code = $cat->{'categorycode'}; if ( $data->{$code} ) { @@ -275,7 +281,6 @@ sub ModBranch { "insert into branchrelations (branchcode, categorycode) values(?, ?)" ); $sth->execute( $branchcode, $cat ); - $sth->finish; } foreach my $cat (@removecats) { my $sth = @@ -283,7 +288,6 @@ sub ModBranch { "delete from branchrelations where branchcode=? and categorycode=?" ); $sth->execute( $branchcode, $cat ); - $sth->finish; } } @@ -291,71 +295,66 @@ sub ModBranch { $results = GetBranchCategory($categorycode); -C<$results> is an ref to an array. +C<$results> is an hashref =cut sub GetBranchCategory { - - # returns a reference to an array of hashes containing branches, my ($catcode) = @_; + return unless $catcode; + my $dbh = C4::Context->dbh; my $sth; - # print DEBUG "GetBranchCategory: entry: catcode=".cvs($catcode)."\n"; - if ($catcode) { - $sth = - $dbh->prepare( - "select * from branchcategories where categorycode = ?"); - $sth->execute($catcode); - } - else { - $sth = $dbh->prepare("Select * from branchcategories"); - $sth->execute(); - } - my @results; - while ( my $data = $sth->fetchrow_hashref ) { - push( @results, $data ); - } - $sth->finish; - - # print DEBUG "GetBranchCategory: exit: returning ".cvs(\@results)."\n"; - return \@results; + $sth = $dbh->prepare(q{ + SELECT * + FROM branchcategories + WHERE categorycode = ? + }); + $sth->execute( $catcode ); + return $sth->fetchrow_hashref; } =head2 GetBranchCategories - my $categories = GetBranchCategories($branchcode,$categorytype); + my $categories = GetBranchCategories($categorytype,$show_in_pulldown,$selected_in_pulldown); Returns a list ref of anon hashrefs with keys eq columns of branchcategories table, -i.e. categorycode, categorydescription, categorytype, categoryname. -if $branchcode and/or $categorytype are passed, limit set to categories that -$branchcode is a member of , and to $categorytype. +i.e. categorydescription, categorytype, categoryname. =cut sub GetBranchCategories { - my ($branchcode,$categorytype) = @_; - my $dbh = C4::Context->dbh(); - my $query = "SELECT c.* FROM branchcategories c"; - my (@where, @bind); - if($branchcode) { - $query .= ",branchrelations r, branches b "; - push @where, "c.categorycode=r.categorycode and r.branchcode=? "; - push @bind , $branchcode; - } - if ($categorytype) { - push @where, " c.categorytype=? "; - push @bind, $categorytype; - } - $query .= " where " . join(" and ", @where) if(@where); - $query .= " order by categorytype,c.categorycode"; - my $sth=$dbh->prepare( $query); - $sth->execute(@bind); - - my $branchcats = $sth->fetchall_arrayref({}); - $sth->finish(); - return( $branchcats ); + my ( $categorytype, $show_in_pulldown, $selected_in_pulldown ) = @_; + my $dbh = C4::Context->dbh(); + + my $query = "SELECT * FROM branchcategories "; + + my ( @where, @bind ); + if ( $categorytype ) { + push @where, " categorytype = ? "; + push @bind, $categorytype; + } + + if ( defined( $show_in_pulldown ) ) { + push( @where, " show_in_pulldown = ? " ); + push( @bind, $show_in_pulldown ); + } + + $query .= " WHERE " . join(" AND ", @where) if(@where); + $query .= " ORDER BY categorytype, categorycode"; + my $sth=$dbh->prepare( $query); + $sth->execute(@bind); + + my $branchcats = $sth->fetchall_arrayref({}); + + if ( $selected_in_pulldown ) { + foreach my $bc ( @$branchcats ) { + $bc->{selected} = 1 if $bc->{categorycode} eq $selected_in_pulldown; + } + } + + return $branchcats; } =head2 GetCategoryTypes @@ -371,7 +370,7 @@ the categories were already here, and minimally used. =cut #TODO manage category types. rename possibly to 'agency domains' ? as borrowergroups are called categories. -sub GetCategoryTypes() { +sub GetCategoryTypes { return ( 'searchdomain','properties'); } @@ -381,7 +380,7 @@ $branch = GetBranch( $query, $branches ); =cut -sub GetBranch ($$) { +sub GetBranch { my ( $query, $branches ) = @_; # get branch for this query from branches my $branch = $query->param('branch'); my %cookie = $query->cookie('userenv'); @@ -406,34 +405,6 @@ sub GetBranchDetail { return $sth->fetchrow_hashref(); } -=head2 get_branchinfos_of - - my $branchinfos_of = get_branchinfos_of(@branchcodes); - -Associates a list of branchcodes to the information of the branch, taken in -branches table. - -Returns a href where keys are branchcodes and values are href where keys are -branch information key. - - print 'branchname is ', $branchinfos_of->{$code}->{branchname}; - -=cut - -sub get_branchinfos_of { - my @branchcodes = @_; - - my $query = ' - SELECT branchcode, - branchname - FROM branches - WHERE branchcode IN (' - . join( ',', map( { "'" . $_ . "'" } @branchcodes ) ) . ') -'; - return C4::Koha::get_infos_of( $query, 'branchcode' ); -} - - =head2 GetBranchesInCategory my $branches = GetBranchesInCategory($categorycode); @@ -442,7 +413,7 @@ Returns a href: keys %$branches eq (branchcode,branchname) . =cut -sub GetBranchesInCategory($) { +sub GetBranchesInCategory { my ($categorycode) = @_; my @branches; my $dbh = C4::Context->dbh(); @@ -452,7 +423,6 @@ sub GetBranchesInCategory($) { while (my $branch = $sth->fetchrow) { push @branches, $branch; } - $sth->finish(); return( \@branches ); } @@ -497,11 +467,9 @@ sub GetBranchInfo { while ( my ($cat) = $nsth->fetchrow_array ) { push( @cats, $cat ); } - $nsth->finish; $data->{'categories'} = \@cats; push( @results, $data ); } - $sth->finish; return \@results; } @@ -516,7 +484,6 @@ sub DelBranch { my $dbh = C4::Context->dbh; my $sth = $dbh->prepare("delete from branches where branchcode = ?"); $sth->execute($branchcode); - $sth->finish; } =head2 ModBranchCategoryInfo @@ -531,15 +498,13 @@ sub ModBranchCategoryInfo { my $dbh = C4::Context->dbh; if ($data->{'add'}){ # we are doing an insert - my $sth = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype) VALUES (?,?,?,?)"); - $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'} ); - $sth->finish(); + my $sth = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype,show_in_pulldown) VALUES (?,?,?,?,?)"); + $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},$data->{'show_in_pulldown'} ); } else { # modifying - my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=? WHERE categorycode=?"); - $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},uc( $data->{'categorycode'} ) ); - $sth->finish(); + my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=?,show_in_pulldown=? WHERE categorycode=?"); + $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},$data->{'show_in_pulldown'},uc( $data->{'categorycode'} ) ); } } @@ -576,7 +541,6 @@ sub DelBranchCategory { my $dbh = C4::Context->dbh; my $sth = $dbh->prepare("delete from branchcategories where categorycode = ?"); $sth->execute($categorycode); - $sth->finish; } =head2 CheckBranchCategorycode @@ -598,13 +562,13 @@ sub CheckBranchCategorycode { return $total; } -sub get_branch_code_from_name { - my @branch_name = @_; - my $query = "SELECT branchcode FROM branches WHERE branchname=?;"; - my $dbh = C4::Context->dbh(); - my $sth = $dbh->prepare($query); - $sth->execute(@branch_name); - return $sth->fetchrow_array; +sub GetBranchesCount { + my $dbh = C4::Context->dbh(); + my $query = "SELECT COUNT(*) AS branches_count FROM branches"; + my $sth = $dbh->prepare( $query ); + $sth->execute(); + my $row = $sth->fetchrow_hashref(); + return $row->{'branches_count'}; } 1;