From 0558f8f8bf3b222f227804d01f27b72566b68416 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 21 Oct 2021 09:57:38 +0200 Subject: [PATCH] Bug 29230: Add Koha::Patron->messages Add methods to return the messages attached to a patron. It will add the capability to access them from notice templates. Test plan: Define some messages for a given patron Go to the circulation page of the patron and confirm that they are still displayed Test the notice templates: Add to HOLD_SLIP the following content """ [% SET messages = borrower.messages %] [% IF messages.count %] Messages: [% END %] """ To display all the messages from staff ('L') Adapt following your needs. --- Koha/Patron.pm | 15 +++++++++++++++ circ/circulation.pl | 9 +++------ t/db_dependent/Koha/Patron.t | 31 ++++++++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 6160c440b79..67c2c0724b4 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -44,6 +44,7 @@ use Koha::Patron::Debarments; use Koha::Patron::HouseboundProfile; use Koha::Patron::HouseboundRole; use Koha::Patron::Images; +use Koha::Patron::Messages; use Koha::Patron::Modifications; use Koha::Patron::Relationships; use Koha::Patrons; @@ -1625,6 +1626,20 @@ sub extended_attributes { return Koha::Patron::Attributes->_new_from_dbic($rs)->search; } +=head3 messages + + my $messages = $patron->messages; + +Return the message attached to the patron. + +=cut + +sub messages { + my ( $self ) = @_; + my $messages_rs = $self->_result->messages_borrowernumbers->search; + return Koha::Patron::Messages->_new_from_dbic($messages_rs); +} + =head3 lock Koha::Patrons->find($id)->lock({ expire => 1, remove => 1 }); diff --git a/circ/circulation.pl b/circ/circulation.pl index 261f26dd576..702201a6c61 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -50,7 +50,6 @@ use Koha::Plugins; use Koha::Database; use Koha::BiblioFrameworks; use Koha::Items; -use Koha::Patron::Messages; use Koha::SearchEngine; use Koha::SearchEngine::Search; use Koha::Patron::Modifications; @@ -522,10 +521,8 @@ if ( $patron ) { } } -my $patron_messages = Koha::Patron::Messages->search( - { - 'me.borrowernumber' => $borrowernumber, - }, +my $patron_messages = $patron->messages->search( + {}, { join => 'manager', '+select' => ['manager.surname', 'manager.firstname' ], @@ -578,7 +575,7 @@ if ($restoreduedatespec || $stickyduedate) { } $template->param( - patron_messages => $patron_messages, + patron_messages => $patron_messages, borrowernumber => $borrowernumber, branch => $branch, was_renewed => scalar $query->param('was_renewed') ? 1 : 0, diff --git a/t/db_dependent/Koha/Patron.t b/t/db_dependent/Koha/Patron.t index 2929349661e..1e6d6945a18 100755 --- a/t/db_dependent/Koha/Patron.t +++ b/t/db_dependent/Koha/Patron.t @@ -19,7 +19,7 @@ use Modern::Perl; -use Test::More tests => 10; +use Test::More tests => 11; use Test::Exception; use Test::Warn; @@ -846,3 +846,32 @@ subtest 'article_requests() tests' => sub { $schema->storage->txn_rollback; }; + +subtest 'messages' => sub { + plan tests => 4; + + $schema->storage->txn_begin; + + my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + my $messages = $patron->messages; + is( $messages->count, 0, "No message yet" ); + my $message_1 = $builder->build_object( + { + class => 'Koha::Patron::Messages', + value => { borrowernumber => $patron->borrowernumber } + } + ); + my $message_2 = $builder->build_object( + { + class => 'Koha::Patron::Messages', + value => { borrowernumber => $patron->borrowernumber } + } + ); + + $messages = $patron->messages; + is( $messages->count, 2, "There are two messages for this patron" ); + is( $messages->next->message, $message_1->message ); + is( $messages->next->message, $message_2->message ); + + $schema->storage->txn_rollback; +}; -- 2.25.1