@@ -, +, @@ circ-menu - Replace getting preference ExtendedPatronAttributes by Koha.Preference - Add Koha::Patron->attributes for getting patrons extended attributes - Use this method in circ-menu.inc - Remove getting attributes from members perl scripts limited by libraries... --- Koha/Patron.pm | 17 +++++++ Koha/Patron/Attribute.pm | 52 ++++++++++++++++++++++ Koha/Patron/Attributes.pm | 32 +++++++++++++ Koha/Schema/Result/BorrowerAttribute.pm | 16 +++++++ circ/circulation.pl | 8 ---- .../intranet-tmpl/prog/en/includes/circ-menu.inc | 10 ++--- .../prog/en/modules/members/memberentrygen.tt | 2 +- .../prog/en/modules/members/moremember.tt | 2 +- .../prog/en/modules/reports/borrowers_stats.tt | 3 +- .../prog/en/modules/tools/import_borrowers.tt | 2 +- members/boraccount.pl | 9 ---- members/files.pl | 9 ---- members/housebound.pl | 10 ----- members/mancredit.pl | 10 +---- members/maninvoice.pl | 9 ---- members/member-flags.pl | 9 ---- members/member-password.pl | 9 ---- members/memberentry.pl | 1 - members/moremember.pl | 1 - members/notices.pl | 9 ---- members/pay.pl | 31 +++---------- members/paycollect.pl | 28 +++--------- members/purchase-suggestions.pl | 9 ---- members/readingrec.pl | 9 ---- members/routing-lists.pl | 9 ---- members/statistics.pl | 9 ---- reports/borrowers_stats.pl | 1 - tools/viewlog.pl | 9 ---- 28 files changed, 139 insertions(+), 186 deletions(-) --- a/Koha/Patron.pm +++ a/Koha/Patron.pm @@ -31,6 +31,7 @@ use Koha::Database; use Koha::DateUtils; use Koha::Holds; use Koha::Old::Checkouts; +use Koha::Patron::Attributes; use Koha::Patron::Categories; use Koha::Patron::HouseboundProfile; use Koha::Patron::HouseboundRole; @@ -1032,6 +1033,22 @@ sub generate_userid { } +=head3 attributes + +my $attributes = $patron->attributes + +Return object of Koha::Patron::Attributes type with all attributes set for this patron + +=cut + +sub attributes { + my ( $self ) = @_; + return Koha::Patron::Attributes->search({ + borrowernumber => $self->borrowernumber, + branchcode => $self->branchcode, + }); +} + =head2 Internal methods =head3 _type --- a/Koha/Patron/Attribute.pm +++ a/Koha/Patron/Attribute.pm @@ -20,6 +20,7 @@ use Modern::Perl; use Koha::Database; use Koha::Exceptions::Patron::Attribute; use Koha::Patron::Attribute::Types; +use Koha::AuthorisedValues; use base qw(Koha::Object); @@ -79,6 +80,57 @@ sub opac_editable { return Koha::Patron::Attribute::Types->find( $self->code )->opac_editable; } +=head3 display_checkout + + my $attribute = Koha::Patron::Attribute->new({ code => 'a_code', ... }); + if ( $attribute->display_checkout ) { ... } + +=cut + +sub display_checkout { + + my $self = shift; + + return $self->type->display_checkout; +} + +=head3 value_description + + my $description = $attribute->value_description + + Return authorised value description or free text based on attribute type settings + +=cut + +sub value_description { + + my $self = shift; + + if ( $self->type->authorised_value_category ) { + my $av = Koha::AuthorisedValues->search({ + category => $self->type->authorised_value_category, + authorised_value => $self->attribute, + }); + return $av->next->lib if $av->count + } + return $self->attribute; +} + +=head3 type_description + + my $description = $attribute->type_description + + Return description of attribute type + +=cut + +sub type_description { + + my $self = shift; + + return $self->type->description; +} + =head3 type my $attribute_type = $attribute->type; --- a/Koha/Patron/Attributes.pm +++ a/Koha/Patron/Attributes.pm @@ -31,6 +31,38 @@ Koha::Patron::Attributes - Koha Patron Attributes Object set class =cut +=head3 search + +my $attributes-> Koha::Patron::Attributes->search( $params ); + +=cut + +sub search { + my ( $self, $params, $attributes ) = @_; + + my $branchcode = $params->{branchcode}; + delete( $params->{branchcode} ); + + my $or = + $branchcode + ? { + '-or' => [ + 'borrower_attribute_types_branches.b_branchcode' => undef, + 'borrower_attribute_types_branches.b_branchcode' => $branchcode, + ] + } : {}; + + my $join = + $branchcode + ? { + join => { + 'borrower_attribute_types' => 'borrower_attribute_types_branches' + }, + } : {}; + $attributes //= {}; + return $self->SUPER::search( { %$params, %$or }, { %$attributes, %$join } ); +} + =head3 _type =cut --- a/Koha/Schema/Result/BorrowerAttribute.pm +++ a/Koha/Schema/Result/BorrowerAttribute.pm @@ -109,6 +109,22 @@ __PACKAGE__->belongs_to( # Created by DBIx::Class::Schema::Loader v0.07042 @ 2016-12-08 04:41:27 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:EarETnedFsmRmAAJAUrKGg +=head2 borrower_attribute_types + +Type: belongs_to + +Related object: L + +=cut + +__PACKAGE__->belongs_to( + "borrower_attribute_types", + "Koha::Schema::Result::BorrowerAttributeType", + { "foreign.code" => "self.code" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },); + + + # You can replace this text with custom content, and it will be preserved on regeneration 1; --- a/circ/circulation.pl +++ a/circ/circulation.pl @@ -43,7 +43,6 @@ use C4::Reserves; use Koha::Holds; use C4::Context; use CGI::Session; -use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::AuthorisedValues; use Koha::CsvProfiles; use Koha::Patrons; @@ -559,13 +558,6 @@ if ( Koha::BiblioFrameworks->find('FA') ) { $fast_cataloging = 1 } -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} my $view = $batch ?'batch_checkout_view' : 'circview'; --- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc @@ -56,13 +56,13 @@
  • No email stored.
  • [% END %] - [% IF ( ExtendedPatronAttributes ) %][% FOREACH extendedattribute IN extendedattributes %] - [% IF ( extendedattribute.display_checkout ) %] - [% IF ( extendedattribute.value ) %] -
  • [% extendedattribute.description %] : [% IF ( extendedattribute.value_description ) %][% extendedattribute.value_description %][% ELSE %][% extendedattribute.value %][% END %]
  • + [% IF Koha.Preference('ExtendedPatronAttributes') %] + [% FOREACH extendedattribute IN patron.attributes %] + [% IF ( extendedattribute.display_checkout ) %] +
  • [% extendedattribute.type_description %] : [% IF ( extendedattribute.value_description ) %][% extendedattribute.value_description %][% ELSE %][% extendedattribute.attribute %][% END %]
  • [% END %] [% END %] - [% END %][% END %] + [% END %]
  • Category: [% patron.category.description %] ([% patron.categorycode %])
  • Home library: [% Branches.GetName( patron.branchcode ) %]
  • Borrowernumber: [% patron.borrowernumber %]
  • --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -1026,7 +1026,7 @@ [% END # hide fieldset %] -[% IF ( ExtendedPatronAttributes ) %][% UNLESS ( no_patron_attribute_types ) %] +[% IF Koha.Preference('ExtendedPatronAttributes') %][% UNLESS ( no_patron_attribute_types ) %]
    Additional attributes and identifiers --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -306,7 +306,7 @@ [% END %] - [% IF ( ExtendedPatronAttributes ) %] + [% IF Koha.Preference('ExtendedPatronAttributes') %] [% UNLESS ( no_patron_attribute_types ) %]

    Additional attributes and identifiers

    --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tt @@ -1,4 +1,5 @@ [% USE Branches %] +[% USE Koha %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] Koha › Reports [% IF ( do_it ) %]› Patrons statistics › Results[% ELSE %]› Patrons statistics[% END %] @@ -203,7 +204,7 @@ [% ELSE %] [% END %] - [% IF ( ExtendedPatronAttributes ) %] + [% IF Koha.Preference('ExtendedPatronAttributes') %] Patron attributes --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt @@ -259,7 +259,7 @@ - [% IF ( ExtendedPatronAttributes ) %] + [% IF Koha.Preference('ExtendedPatronAttributes') %]
  • If loading patron attributes, the 'patron_attributes' field should contain a comma-separated list of attribute types and values. The attribute type code and a colon should precede each value. For example: INSTID:12345,LANG:fr or STARTDATE:January 1 2010,TRACK:Day. If an input record has more than one attribute, the fields should either be entered as an unquoted string (previous examples), or with each field wrapped in separate double quotes and delimited by a comma: "STARTDATE:January 1, 2010","TRACK:Day". The second syntax would be required if the data might have a comma in it, like a date string.
  • --- a/members/boraccount.pl +++ a/members/boraccount.pl @@ -29,7 +29,6 @@ use C4::Output; use CGI qw ( -utf8 ); use C4::Members; use C4::Accounts; -use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Patrons; use Koha::Patron::Categories; @@ -118,14 +117,6 @@ while ( my $line = $accts->next ) { push @accountlines, $accountline; } -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - $template->param( patron => $patron, finesview => 1, --- a/members/files.pl +++ a/members/files.pl @@ -24,7 +24,6 @@ use CGI qw ( -utf8 ); use C4::Auth; use C4::Output; use C4::Members; -use C4::Members::Attributes qw(GetBorrowerAttributes); use C4::Debug; use Koha::DateUtils; @@ -107,14 +106,6 @@ else { $bf->DelFile( id => scalar $cgi->param('file_id') ); } - if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); - } - if ( $patron->is_child ) { my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']}); $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; --- a/members/housebound.pl +++ a/members/housebound.pl @@ -28,7 +28,6 @@ use Modern::Perl; use CGI; use C4::Auth; use C4::Context; -use C4::Members::Attributes qw(GetBorrowerAttributes); use C4::Output; use DateTime; use Koha::DateUtils; @@ -157,15 +156,6 @@ $method = 'update_or_create' if ( !$houseboundprofile ); # Ensure template has all patron details. $template->param( patron => $patron ); -# Load extended patron attributes if necessary (taken from members/files.pl). -if ( C4::Context->preference('ExtendedPatronAttributes') and $patron ) { - my $attributes = GetBorrowerAttributes($patron->borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - if ( $patron->is_child ) { my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']}); $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; --- a/members/mancredit.pl +++ a/members/mancredit.pl @@ -31,7 +31,7 @@ use CGI qw ( -utf8 ); use C4::Members; use C4::Accounts; use C4::Items; -use C4::Members::Attributes qw(GetBorrowerAttributes); +use Koha::Patrons; use Koha::Account; use Koha::Patrons; @@ -105,14 +105,6 @@ if ($add){ $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; } - if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); - } - $template->param( patron => $patron, finesview => 1, --- a/members/maninvoice.pl +++ a/members/maninvoice.pl @@ -30,7 +30,6 @@ use CGI qw ( -utf8 ); use C4::Members; use C4::Accounts; use C4::Items; -use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Token; use Koha::Patrons; @@ -120,14 +119,6 @@ if ($add){ $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; } - if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); - } - $template->param( csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID') }), patron => $patron, --- a/members/member-flags.pl +++ a/members/member-flags.pl @@ -11,7 +11,6 @@ use C4::Output; use C4::Auth qw(:DEFAULT :EditPermissions); use C4::Context; use C4::Members; -use C4::Members::Attributes qw(GetBorrowerAttributes); #use C4::Acquisitions; use Koha::Patron::Categories; @@ -188,14 +187,6 @@ if ($input->param('newflags')) { $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; } -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($bor->{'borrowernumber'}); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - $template->param( patron => $patron, loop => \@loop, --- a/members/member-password.pl +++ a/members/member-password.pl @@ -13,7 +13,6 @@ use C4::Context; use C4::Members; use C4::Circulation; use CGI qw ( -utf8 ); -use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::AuthUtils; use Koha::Token; @@ -101,14 +100,6 @@ if ( $patron->is_child ) { $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; } -if ( C4::Context->preference('ExtendedPatronAttributes') ) { - my $attributes = GetBorrowerAttributes( $bor->{'borrowernumber'} ); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - $template->param( patron => $patron, destination => $destination, --- a/members/memberentry.pl +++ a/members/memberentry.pl @@ -734,7 +734,6 @@ foreach (qw(dateenrolled dateexpiry dateofbirth)) { } if (C4::Context->preference('ExtendedPatronAttributes')) { - $template->param(ExtendedPatronAttributes => 1); patron_attributes_form($template, $borrowernumber); } --- a/members/moremember.pl +++ a/members/moremember.pl @@ -287,7 +287,6 @@ if (C4::Context->preference('ExtendedPatronAttributes')) { } $template->param( - ExtendedPatronAttributes => 1, attributes_loop => \@attributes_loop ); --- a/members/notices.pl +++ a/members/notices.pl @@ -25,7 +25,6 @@ use C4::Output; use CGI qw ( -utf8 ); use C4::Members; use C4::Letters; -use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Patrons; use Koha::Patron::Categories; @@ -72,14 +71,6 @@ if ( $op eq 'resend_notice' ) { # Getting the messages my $queued_messages = C4::Letters::GetQueuedMessages({borrowernumber => $borrowernumber}); -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - $template->param( patron => $patron, QUEUED_MESSAGES => $queued_messages, --- a/members/pay.pl +++ a/members/pay.pl @@ -38,7 +38,6 @@ use C4::Accounts; use C4::Stats; use C4::Koha; use C4::Overdues; -use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Patrons; use Koha::Patron::Categories; @@ -151,7 +150,12 @@ sub add_accounts_to_template { } push @accounts, $account_line; } - borrower_add_additional_fields($patron); + + if ( $patron->is_child ) { + my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']} ); + $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; + $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; + } $template->param( patron => $patron, @@ -228,29 +232,6 @@ sub writeoff_all { return; } -sub borrower_add_additional_fields { - my $patron = shift; - -# some borrower info is not returned in the standard call despite being assumed -# in a number of templates. It should not be the business of this script but in lieu of -# a revised api here it is ... - if ( $patron->is_child ) { - my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']}); - $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; - $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; - } - - if (C4::Context->preference('ExtendedPatronAttributes')) { - my $extendedattributes = GetBorrowerAttributes($patron->borrowernumber); - $template->param( - extendedattributes => $extendedattributes, - ExtendedPatronAttributes => 1, - ); - } - - return; -} - sub payselected { my $parameters = shift; --- a/members/paycollect.pl +++ a/members/paycollect.pl @@ -25,7 +25,6 @@ use C4::Context; use C4::Auth; use C4::Output; use C4::Members; -use C4::Members::Attributes qw(GetBorrowerAttributes); use C4::Accounts; use C4::Koha; @@ -180,7 +179,11 @@ if ( $total_paid and $total_paid ne '0.00' ) { $total_paid = '0.00'; #TODO not right with pay_individual } -borrower_add_additional_fields($patron, $template); +if ( $patron->is_child ) { + my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']} ); + $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; + $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; +} $template->param(%$borrower); @@ -193,29 +196,8 @@ $template->param( borrowernumber => $borrowernumber, # some templates require global patron => $patron, total => $total_due, - ExtendedPatronAttributes => C4::Context->preference('ExtendedPatronAttributes'), csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID') }), ); output_html_with_http_headers $input, $cookie, $template->output; - -sub borrower_add_additional_fields { - my ( $patron, $template ) = @_; - -# some borrower info is not returned in the standard call despite being assumed -# in a number of templates. It should not be the business of this script but in lieu of -# a revised api here it is ... - if ( $patron->is_child ) { - my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']}); - $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; - $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; - } - - if (C4::Context->preference('ExtendedPatronAttributes')) { - my $extendedattributes = GetBorrowerAttributes($patron->borrowernumber); - $template->param( extendedattributes => $extendedattributes ); - } - - return; -} --- a/members/purchase-suggestions.pl +++ a/members/purchase-suggestions.pl @@ -24,7 +24,6 @@ use C4::Auth; use C4::Context; use C4::Output; use C4::Members; -use C4::Members::Attributes qw(GetBorrowerAttributes); use C4::Suggestions; use Koha::Patrons; @@ -52,14 +51,6 @@ $template->param( suggestionsview => 1, ); -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - my $suggestions = SearchSuggestion( { suggestedby => $borrowernumber } ); $template->param( suggestions => $suggestions ); --- a/members/readingrec.pl +++ a/members/readingrec.pl @@ -29,7 +29,6 @@ use C4::Output; use C4::Members; use List::MoreUtils qw/any uniq/; use Koha::DateUtils; -use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Patrons; use Koha::Patron::Categories; @@ -102,14 +101,6 @@ if (! $limit){ $limit = 'full'; } -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($patron->borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - $template->param( patron => $patron, readingrecordview => 1, --- a/members/routing-lists.pl +++ a/members/routing-lists.pl @@ -22,7 +22,6 @@ use CGI qw ( -utf8 ); use C4::Output; use C4::Auth qw/:DEFAULT/; use C4::Members; -use C4::Members::Attributes qw(GetBorrowerAttributes); use C4::Context; use C4::Serials; use Koha::Patrons; @@ -57,12 +56,4 @@ $template->param( branch => $branch, # FIXME This is confusing ); -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - output_html_with_http_headers $query, $cookie, $template->output; --- a/members/statistics.pl +++ a/members/statistics.pl @@ -29,7 +29,6 @@ use C4::Auth; use C4::Context; use C4::Members; use C4::Members::Statistics; -use C4::Members::Attributes qw(GetBorrowerAttributes); use C4::Output; use Koha::Patrons; use Koha::Patron::Categories; @@ -77,14 +76,6 @@ my $count_total_issues = $total->{count_total_issues_today} || 0; my $count_total_issues_returned = $total->{count_total_issues_returned_today} || 0; my $count_total_actual_state = ($count_total_precedent_state - $count_total_issues_returned + $count_total_issues); -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - if ( $patron->is_child ) { my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']}); $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; --- a/reports/borrowers_stats.pl +++ a/reports/borrowers_stats.pl @@ -137,7 +137,6 @@ if ($do_it) { CGIsepChoice => $CGIsepChoice, ); if (C4::Context->preference('ExtendedPatronAttributes')) { - $template->param(ExtendedPatronAttributes => 1); patron_attributes_form($template); } } --- a/tools/viewlog.pl +++ a/tools/viewlog.pl @@ -69,21 +69,12 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( if ( $src eq 'circ' ) { - # if we were called from circulation, use the circulation menu and get data to populate it -fbcit - use C4::Members::Attributes qw(GetBorrowerAttributes); my $borrowernumber = $object; my $patron = Koha::Patrons->find( $borrowernumber ); unless ( $patron ) { print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber"); exit; } - if ( C4::Context->preference('ExtendedPatronAttributes') ) { - my $attributes = GetBorrowerAttributes( $borrowernumber ); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); - } $template->param( patron => $patron, --