X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FBranch.pm;h=7dfd737245be623da417b25f4316f2a2728ea705;hb=32aac9e4fbc2d4e888cd9234e87c01e2ce2c43c5;hp=44da91d4932847ec20ecfc41bf13b8bf3339115d;hpb=98a1ea38ddefb8bca5525dda051c9d4eea8489c8;p=koha.git diff --git a/C4/Branch.pm b/C4/Branch.pm index 44da91d493..7dfd737245 100644 --- a/C4/Branch.pm +++ b/C4/Branch.pm @@ -25,7 +25,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); BEGIN { # set the version for version checking - $VERSION = 3.01; + $VERSION = 3.02; @ISA = qw(Exporter); @EXPORT = qw( &GetBranchCategory @@ -45,6 +45,7 @@ BEGIN { &DelBranch &DelBranchCategory ); + @EXPORT_OK = qw( &onlymine &mybranch ); } =head1 NAME @@ -64,33 +65,35 @@ The functions in this module deal with branches. =head2 GetBranches $branches = &GetBranches(); - returns informations about ALL branches. - Create a branch selector with the following code - IndependantBranches Insensitive... + + Returns informations about ALL branches, IndependantBranches Insensitive. GetBranchInfo() returns the same information without the problems of this function - (namespace collision, mainly). You should probably use that, and replace GetBranches() - with GetBranchInfo() where you see it in the code. + (namespace collision, mainly). + Create a branch selector with the following code. =head3 in PERL SCRIPT -my $branches = GetBranches; -my @branchloop; -foreach my $thisbranch (keys %$branches) { - my $selected = 1 if $thisbranch eq $branch; - my %row =(value => $thisbranch, - selected => $selected, - branchname => $branches->{$thisbranch}->{'branchname'}, - ); - push @branchloop, \%row; -} + my $branches = GetBranches; + my @branchloop; + foreach my $thisbranch (sort keys %$branches) { + my $selected = 1 if $thisbranch eq $branch; + my %row =(value => $thisbranch, + selected => $selected, + branchname => $branches->{$thisbranch}->{branchname}, + ); + push @branchloop, \%row; + } =head3 in TEMPLATE - + + + +=head4 Note that you often will want to just use GetBranchesLoop, for exactly the example above. =cut @@ -109,13 +112,14 @@ sub GetBranches { $query.=" ORDER BY branchname"; $sth = $dbh->prepare($query); $sth->execute( @bind_parameters ); + + my $nsth = $dbh->prepare( + "SELECT categorycode FROM branchrelations WHERE branchcode = ?" + ); # prepare once, outside while loop + while ( my $branch = $sth->fetchrow_hashref ) { - my $nsth = - $dbh->prepare( - "SELECT categorycode FROM branchrelations WHERE branchcode = ?"); $nsth->execute( $branch->{'branchcode'} ); while ( my ($cat) = $nsth->fetchrow_array ) { - # FIXME - This seems wrong. It ought to be # $branch->{categorycodes}{$cat} = 1; # otherwise, there's a namespace collision if there's a @@ -133,9 +137,23 @@ sub GetBranches { return ( \%branches ); } +sub onlymine { + return + C4::Context->preference('IndependantBranches') && + C4::Context->userenv && + C4::Context->userenv->{flags} %2 != 1 && + C4::Context->userenv->{branch} ; +} + +# always returns a string for OK comparison via "eq" or "ne" +sub mybranch { + C4::Context->userenv or return ''; + return C4::Context->userenv->{branch} || ''; +} + sub GetBranchesLoop (;$$) { # since this is what most pages want anyway - my $branch = @_ ? shift : ''; # optional first argument is branchcode of "my branch", if preselection is wanted. - my $onlymine = @_ ? shift : C4::Context->preference("IndependantBranches"); + 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 { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %$branches) { @@ -165,9 +183,9 @@ sub GetBranchName { =head2 ModBranch -&ModBranch($newvalue); +$error = &ModBranch($newvalue); -This function modify an existing branches. +This function modify an existing branch C<$newvalue> is a ref to an array wich is containt all the column from branches table. @@ -193,6 +211,7 @@ sub ModBranch { $data->{'branchfax'}, $data->{'branchemail'}, $data->{'branchip'}, $data->{'branchprinter'}, ); + return 1 if $dbh->err; } else { my $query = " UPDATE branches @@ -360,21 +379,18 @@ sub GetBranch ($$) { =head2 GetBranchDetail - $branchname = &GetBranchDetail($branchcode); + $branch = &GetBranchDetail($branchcode); -Given the branch code, the function returns the corresponding -branch name for a comprehensive information display +Given the branch code, the function returns a +hashref for the corresponding row in the branches table. =cut sub GetBranchDetail { - my ($branchcode) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare("SELECT * FROM branches WHERE branchcode = ?"); + my ($branchcode) = shift or return; + my $sth = C4::Context->dbh->prepare("SELECT * FROM branches WHERE branchcode = ?"); $sth->execute($branchcode); - my $branchname = $sth->fetchrow_hashref(); - $sth->finish(); - return $branchname; + return $sth->fetchrow_hashref(); } =head2 get_branchinfos_of