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:
<ul>
  [% FOR m IN messages.search( message_type => 'L' ) %]
    <li>[% m.message %]</li>
  [% END %]
</ul>
[% END %]
"""

To display all the messages from staff ('L')

Adapt following your needs.

Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

Signed-off-by: Stina Hallin <stina.hallin@ub.lu.se>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Jonathan Druart 2021-10-21 09:57:38 +02:00 committed by Kyle Hall
parent 30b9270bd9
commit 7eca41c2a2
3 changed files with 48 additions and 7 deletions

View File

@ -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 });

View File

@ -51,7 +51,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;
@ -523,10 +522,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' ],
@ -579,7 +576,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,

View File

@ -19,7 +19,7 @@
use Modern::Perl;
use Test::More tests => 11;
use Test::More tests => 12;
use Test::Exception;
use Test::Warn;
@ -895,3 +895,32 @@ subtest 'safe_to_delete() 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;
};