From 5e89a7e09866dcb88e45d5e69761f0854b15b775 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 21 Mar 2013 13:56:01 +0100 Subject: [PATCH] Bug 9886: ParseLetter removes too often punctuation characters from fields This patch makes ParseLetter somewhat more restrictive in removing punctuation characters from the end of a table field. Based on the assumption that we want to remove punctuation from fields in biblio and biblioitems (like ISBD). ParseLetter should not remove e.g. a parenthesis in itemcallnumber, but still removes e.g. a colon (:) at the end of a title. Removed an unneeded global and lookahead from the regex. Test plan: 1) Add a colon (:) to the end of a title. 2) Add a colon to the end of item copynumber. 3) Place a hold on that item. Check it in. Confirm hold. 4) Check the email or print notice generated. There should be no colon at the end of the title, but the colon in the copynumber should still be there. Signed-off-by: Kyle M Hall Signed-off-by: Katrin Fischer I compared checkout notices with lots of different fields before and after applying the patch. For example the ) at the end of a field in branches is now longer removed. Other fields looked ok before and after. Passes all tests and QA script. Signed-off-by: Jared Camins-Esakov (cherry picked from commit 4b1c71e91a19fcf37e302bba66019807b18cb307) Signed-off-by: Jared Camins-Esakov --- C4/Letters.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index fdbb473dcc..b8e2722ad7 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -620,7 +620,11 @@ sub _parseletter { while ( my ($field, $val) = each %$values ) { my $replacetablefield = "<<$table.$field>>"; my $replacefield = "<<$field>>"; - $val =~ s/\p{P}(?=$)//g if $val; + $val =~ s/\p{P}$// if $val && $table=~/biblio/; + #BZ 9886: Assuming that we want to eliminate ISBD punctuation here + #Therefore adding the test on biblio. This includes biblioitems, + #but excludes items. Removed unneeded global and lookahead. + my $replacedby = defined ($val) ? $val : ''; ($letter->{title} ) and do { $letter->{title} =~ s/$replacetablefield/$replacedby/g; -- 2.39.5