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