@@ -, +, @@ catalogue/moredetails --- Koha/List/Patron.pm | 19 ++++++++++ Koha/Patron.pm | 38 ++++++++++++++++++- catalogue/moredetail.pl | 3 ++ .../prog/en/modules/members/moremember.tt | 21 ++++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) --- a/Koha/List/Patron.pm +++ a/Koha/List/Patron.pm @@ -42,6 +42,7 @@ BEGIN { AddPatronList ModPatronList + GetListsWithPatron AddPatronsToList DelPatronsFromList ); @@ -156,6 +157,24 @@ sub ModPatronList { return $list->update($params); } +=head2 GetListsWithPatron + + GetListsWithPatron({ borrowernumber => $borrowernumber }); + +=cut + +sub GetListsWithPatron { + my ($params) = @_; + + my $borrowernumber = $params->{'borrowernumber'}; + + return unless ( $borrowernumber ); + + my @list_ids = map { $_->patron_list_id } Koha::Database->new()->schema()->resultset('PatronListPatron')->search( { borrowernumber => $borrowernumber } ); + + return Koha::List::Patron->search( { patron_list_id => { 'IN' => \@list_ids } }, {order_by => 'name'} ); +} + =head2 AddPatronsToList AddPatronsToList({ list => $list, cardnumbers => \@cardnumbers }); --- a/Koha/Patron.pm +++ a/Koha/Patron.pm @@ -52,6 +52,7 @@ use Koha::Patron::Messages; use Koha::Patron::Modifications; use Koha::Patron::Relationships; use Koha::Patrons; +use Koha::List::Patron qw( GetListsWithPatron GetPatronLists ); use Koha::Plugins; use Koha::Recalls; use Koha::Result::Boolean; @@ -1049,7 +1050,7 @@ sub can_request_article { my $count = Koha::ArticleRequests->search( [ { borrowernumber => $self->borrowernumber, status => [ 'REQUESTED', 'PENDING', 'PROCESSING' ] }, - { borrowernumber => $self->borrowernumber, status => 'COMPLETED', updated_on => { '>=' => \'CAST(NOW() AS DATE)' } }, + { borrowernumber => $self->borrowernumber, status => 'COMPLETED', updated_on => { '>=' => 'CAST(NOW() AS DATE)' } }, ] )->count; return $count < $limit ? 1 : 0; @@ -1436,6 +1437,41 @@ sub get_enrollable_clubs { return Koha::Clubs->get_enrollable($params); } +=head3 get_patron_lists + +=cut + +sub get_patron_lists { + my ( $self ) = @_; + + return GetListsWithPatron({borrowernumber => $self->borrowernumber()}); +} + +=head3 get_joinable_patron_lists + +=cut + +sub get_joinable_patron_lists { + my ( $self ) = @_; + + my @lists = GetPatronLists(); + my %joined_lists = map { $_->patron_list_id => 1 } GetListsWithPatron({borrowernumber => $self->borrowernumber()})->as_list; + my @offsets; + + for ( my $i = 0; $i < $#lists; $i++ ) { + my $list = $lists[$i]; + my $id = $list->patron_list_id(); + if ( $joined_lists{$id} ) { + unshift @offsets, $i; + } + } + for my $i (@offsets) { + splice @lists, $i, 1; + } + + return @lists; +} + =head3 account_locked my $is_locked = $patron->account_locked --- a/catalogue/moredetail.pl +++ a/catalogue/moredetail.pl @@ -146,6 +146,9 @@ foreach ( keys %{$data} ) { $template->param( "$_" => defined $data->{$_} ? $data->{$_} : '' ); } +if ($itemnumber) { + @items = (grep {$_->itemnumber == $itemnumber} @items); +} my @item_data; foreach my $item (@items){ --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -725,6 +725,15 @@ [% END %] + + [% SET patron_lists = patron.get_patron_lists %] + [% IF CAN_user_tools_manage_patron_lists || patron_lists.count %] +
  • + + Patron Lists ([% pat_lists_in.count | html %]) + +
  • + [% END %]
    @@ -748,6 +757,18 @@
    [% END %] + [% IF CAN_user_tools_manage_patron_lists || patron_lists.count %] +
    + Loading... +
    + [% END %] + + [% IF CAN_user_clubs && ( enrollments.count || enrollable.count ) %] +
    + Loading... +
    + [% END %] + [% INCLUDE borrower_debarments.inc %] [% IF ( CAN_user_circulate_circulate_remaining_permissions ) %] --