Bug 41818: Add new Koha::Patron::Message method to SIP2
This bug adds Koha::Patron::Message::message_without_newlines, which has been added to C4::SIP::ILS::Patron in lieu of Koha::Patron::Message::message. The aim of this change is to prevent SIP2 units from crashing out when they encounter a patron message with newlines (\n or \r) in it, as units generally use a newline character to denote the end of a SIP2 transaction.
To test:
a) go to /cgi-bin/koha/sip2/institutions
*) create an institution, name CPL, timeout 300, the rest default
b) go to /cgi-bin/koha/sip2/accounts
*) create an account, userid koha, institution CPL, terminator crlf, the rest default
c) go to /cgi-bin/koha/members/moremember.pl?borrowernumber=51
*) click add message in toolbar
*) enter some multi-line message e.g. test[RETURN]1[RETURN]2[RETURN]3[RETURN][RETURN][RETURN]
d) run tail -f /var/log/koha/kohadev/sip-output.log, keep this window open
e) run ./misc/sip_cli_emulator.pl -a 127.0.0.1 -p 6001 -su koha -sp koha -l CPL --patron 42 -m patron_information
f) look at the tail log, notice how the MSG 64 line has a newline before the final pipe (|) character
== APPLY PATCH ==
g) restart_all
h) repeat steps e-f
i) notice how in the tail log, the MSG 64 line now has the final pipe character contiguously placed with the successive characters
== SIGN OFF ==
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit ab88c85f3b)
Signed-off-by: Jacob O'Mara <Jacob.omara@openfifth.co.uk>
This commit is contained in:
parent
afd493f26d
commit
ca8c626fdf
|
|
@ -215,7 +215,7 @@ sub new {
|
|||
while ( my $message = $patron_messages->next ) {
|
||||
my $messagedt = dt_from_string( $message->message_date, 'iso' );
|
||||
my $formatted_date = output_pref( { dt => $messagedt, dateonly => 1 } );
|
||||
push @messages_array, $formatted_date . ": " . $message->message;
|
||||
push @messages_array, $formatted_date . ": " . $message->message_without_newlines;
|
||||
}
|
||||
if (@messages_array) {
|
||||
$ilspatron{screen_msg} .= " Messages for you: " . join( ' / ', @messages_array );
|
||||
|
|
|
|||
|
|
@ -77,6 +77,27 @@ sub delete {
|
|||
return $self->SUPER::delete($self);
|
||||
}
|
||||
|
||||
=head3 message_without_newlines
|
||||
|
||||
my $message_without_newlines = $message->message_without_newlines
|
||||
|
||||
This method returns the user's message, with all instances of \n and \r removed
|
||||
|
||||
=cut
|
||||
|
||||
sub message_without_newlines {
|
||||
my ($self) = @_;
|
||||
my $message = $self->message
|
||||
or return;
|
||||
|
||||
$message =~ s/\n/ /g;
|
||||
$message =~ s/\r//g;
|
||||
$message =~ s/^\s+|\s+$//g; # left and right trim
|
||||
$message =~ s/ +/ /g; # duplicate spaces
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
=head3 _type
|
||||
|
||||
=cut
|
||||
|
|
|
|||
Loading…
Reference in New Issue