@@ -, +, @@ 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 +++++++++++++ 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 +- members/boraccount.pl | 9 ---- members/files.pl | 9 ---- members/housebound.pl | 10 ----- members/mancredit.pl | 11 +---- 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 | 19 -------- members/paycollect.pl | 19 -------- 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 ---- 26 files changed, 111 insertions(+), 176 deletions(-) --- a/Koha/Patron.pm +++ a/Koha/Patron.pm @@ -34,6 +34,7 @@ use Koha::DateUtils; use Koha::Exceptions::Password; use Koha::Holds; use Koha::Old::Checkouts; +use Koha::Patron::Attributes; use Koha::Patron::Categories; use Koha::Patron::HouseboundProfile; use Koha::Patron::HouseboundRole; @@ -1290,6 +1291,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/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; @@ -552,13 +551,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 @@ -68,13 +68,13 @@ [% END %] [% END %] - [% IF ( ExtendedPatronAttributes ) %][% FOREACH extendedattribute IN extendedattributes %] - [% IF ( extendedattribute.display_checkout ) %] - [% IF ( extendedattribute.value ) %] -
  • [% extendedattribute.description | html %] : [% IF ( extendedattribute.value_description ) %][% extendedattribute.value_description | html %][% ELSE %][% extendedattribute.value | html %][% END %]
  • + [% IF Koha.Preference('ExtendedPatronAttributes') %] + [% FOREACH extendedattribute IN patron.attributes %] + [% IF ( extendedattribute.display_checkout ) %] +
  • [% extendedattribute.type_description | html %] : [% IF ( extendedattribute.value_description ) %][% extendedattribute.value_description | html %][% ELSE %][% extendedattribute.attribute | html %][% END %]
  • [% END %] [% END %] - [% END %][% END %] + [% END %]
  • Category: [% patron.category.description | html %] ([% patron.categorycode | html %])
  • Home library: [% Branches.GetName( patron.branchcode ) | html %]
  • Borrowernumber: [% patron.borrowernumber | html %]
  • --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -1041,7 +1041,7 @@ [% END # IF step_7 %] [% IF ( step_4 ) %] -[% 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 @@ -345,7 +345,7 @@ [% #/ div#houseboundroles %] [% END %] - [% IF ( ExtendedPatronAttributes ) %] + [% IF Koha.Preference('ExtendedPatronAttributes') %] [% UNLESS ( no_patron_attribute_types ) %]
    [% IF ( attributes_loop ) %] --- 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 %] @@ -202,7 +203,7 @@ [% ELSE %] [% END %] - [% IF ( ExtendedPatronAttributes ) %] + [% IF Koha.Preference('ExtendedPatronAttributes') %] Patron attributes --- 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; @@ -79,14 +78,6 @@ if($total <= 0){ $totalcredit = 1; } -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 - ); - } - $template->param( files => Koha::Patron::Files->new( borrowernumber => $borrowernumber ) ->GetFilesInfo(), --- 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 - ); -} - $template->param( housebound_profile => $houseboundprofile, visit => $houseboundvisit, --- 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::Items; use Koha::Patrons; @@ -100,15 +100,6 @@ if ($add){ print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"); } else { - - 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::Items; @@ -121,14 +120,6 @@ if ($add){ } $template->param( invoice_types_loop => \@invoice_types ); - 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; @@ -182,14 +181,6 @@ if ($input->param('newflags')) { push @loop, \%row; } -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; @@ -98,14 +97,6 @@ if ( $newpassword and not @errors) { }; } -if ( C4::Context->preference('ExtendedPatronAttributes') ) { - my $attributes = GetBorrowerAttributes( $patron_id ); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} - $template->param( patron => $patron, destination => $destination, --- a/members/memberentry.pl +++ a/members/memberentry.pl @@ -746,7 +746,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 @@ -267,7 +267,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; @@ -66,14 +65,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; @@ -149,7 +148,6 @@ sub add_accounts_to_template { while ( my $account_line = $account_lines->next ) { push @accounts, $account_line; } - borrower_add_additional_fields($patron); $template->param( patron => $patron, @@ -228,23 +226,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 (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,8 +179,6 @@ 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); - $template->param(%$borrower); if ( $input->param('error_over') ) { @@ -193,24 +190,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 (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; @@ -96,14 +95,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; @@ -58,12 +57,4 @@ $template->param( routinglistview => 1, ); -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 - ); -} - $template->param( patron => $patron, statisticsview => 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 @@ -74,21 +74,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 ); my $circ_info = 1; unless ( $patron ) { $circ_info = 0; } - if ( C4::Context->preference('ExtendedPatronAttributes') ) { - my $attributes = GetBorrowerAttributes( $borrowernumber ); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); - } $template->param( patron => $patron, --