X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FMembers%2FAttributeTypes.pm;h=17540997f4f96ce4294ec09e3574968747eb7f40;hb=2614e07e1e2e6386b5f91e65f127940072e54d4d;hp=d8d5508f484a8d631c7e6cdd2a047436b1450686;hpb=6e60986819e9c37e3d41584b89fbddbf68e7484d;p=koha.git diff --git a/C4/Members/AttributeTypes.pm b/C4/Members/AttributeTypes.pm index d8d5508f48..17540997f4 100644 --- a/C4/Members/AttributeTypes.pm +++ b/C4/Members/AttributeTypes.pm @@ -25,7 +25,7 @@ use vars qw($VERSION); BEGIN { # set the version for version checking - $VERSION = 3.00; + $VERSION = 3.07.00.049; } =head1 NAME @@ -69,12 +69,24 @@ If $all_fields is true, then each hashref also contains the other fields from bo =cut sub GetAttributeTypes { - my ($all) = @_; - my $select = $all ? '*' : 'code, description, class'; + my $all = @_ ? shift : 0; + my $no_branch_limit = @_ ? shift : 0; + my $branch_limit = $no_branch_limit + ? 0 + : C4::Context->userenv ? C4::Context->userenv->{"branch"} : 0; + my $select = $all ? '*' : 'DISTINCT(code), description, class'; + my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare("SELECT $select FROM borrower_attribute_types ORDER by code"); - $sth->execute(); + my $query = "SELECT $select FROM borrower_attribute_types"; + $query .= qq{ + LEFT JOIN borrower_attribute_types_branches ON bat_code = code + WHERE b_branchcode = ? OR b_branchcode IS NULL + } if $branch_limit; + $query .= " ORDER BY code"; + my $sth = $dbh->prepare($query); + $sth->execute( $branch_limit ? $branch_limit : () ); my $results = $sth->fetchall_arrayref({}); + $sth->finish; return @$results; } @@ -166,6 +178,13 @@ sub fetch { $self->{'category_description'} = $row->{'category_description'}; $self->{'class'} = $row->{'class'}; + $sth = $dbh->prepare("SELECT branchcode, branchname FROM borrower_attribute_types_branches, branches WHERE b_branchcode = branchcode AND bat_code = ?;"); + $sth->execute( $code ); + while ( my $data = $sth->fetchrow_hashref ) { + push @{ $self->{branches} }, $data; + } + $sth->finish(); + bless $self, $class; return $self; } @@ -219,6 +238,22 @@ sub store { $sth->bind_param(11, $self->{'code'}); $sth->execute; + if ( defined $$self{branches} ) { + $sth = $dbh->prepare("DELETE FROM borrower_attribute_types_branches WHERE bat_code = ?"); + $sth->execute( $$self{code} ); + $sth = $dbh->prepare( + "INSERT INTO borrower_attribute_types_branches + ( bat_code, b_branchcode ) + VALUES ( ?, ? )" + ); + for my $branchcode ( @{$$self{branches}} ) { + next if not $branchcode; + $sth->bind_param( 1, $$self{code} ); + $sth->bind_param( 2, $branchcode ); + $sth->execute; + } + } + $sth->finish; } =head2 code @@ -250,6 +285,20 @@ sub description { @_ ? $self->{'description'} = shift : $self->{'description'}; } +=head2 branches + +my $branches = $attr_type->branches(); +$attr_type->branches($branches); + +Accessor. + +=cut + +sub branches { + my $self = shift; + @_ ? $self->{branches} = shift : $self->{branches}; +} + =head2 repeatable my $repeatable = $attr_type->repeatable(); @@ -324,13 +373,9 @@ sub staff_searchable { =head2 display_checkout -=over 4 - my $display_checkout = $attr_type->display_checkout(); $attr_type->display_checkout($display_checkout); -=back - Accessor. The C<$display_checkout> argument is interpreted as a Perl boolean. @@ -357,13 +402,9 @@ sub authorised_value_category { =head2 category_code -=over 4 - my $category_code = $attr_type->category_code(); $attr_type->category_code($category_code); -=back - Accessor. =cut @@ -375,13 +416,9 @@ sub category_code { =head2 category_description -=over 4 - my $category_description = $attr_type->category_description(); $attr_type->category_description($category_description); -=back - Accessor. =cut @@ -393,13 +430,9 @@ sub category_description { =head2 class -=over 4 - my $class = $attr_type->class(); $attr_type->class($class); -=back - Accessor. =cut @@ -432,6 +465,7 @@ sub delete { my $dbh = C4::Context->dbh; my $sth = $dbh->prepare_cached("DELETE FROM borrower_attribute_types WHERE code = ?"); $sth->execute($code); + $sth->finish; } =head2 num_patrons