From 23602496768d076f25ca6a6e73f73a6a0fb749c6 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Wed, 29 Jan 2014 09:37:18 +0200 Subject: [PATCH] [SIGNED-OFF]Improve AgeRestrictionMarker to consider the case where the marker is immediately followed by the age, eg. "K16" in Finland. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit How I tested: Configure Age Restricition (see Syspref AgeRestrictionMarker) and have a biblio record with e.g. PEGI 99 in age restriction field Try to check out to a patron with age < 99 Check out should be blocked Change entry in age restriction field to PEGI99 Checkout should be possible Apply patch Checkout schould now be blocked Patch behaves as expected http://bugs.koha-community.org/show_bug.cgi?id=11630 Signed-off-by: Marc VĂ©ron --- C4/Circulation.pm | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index af55225..9a5ca0c 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -982,30 +982,29 @@ sub CanBookBeIssued { if (($markers)&&($bibvalues)) { # Split $bibvalues to something like FSK 16 or PEGI 6 - my @values = split ' ', $bibvalues; + my @values = split ' ', uc($bibvalues); # Search first occurence of one of the markers - my @markers = split /\|/, $markers; + my @markers = split /\|/, uc($markers); my $index = 0; - my $take = -1; + my $restrictionyear = 0; for my $value (@values) { $index ++; for my $marker (@markers) { $marker =~ s/^\s+//; #remove leading spaces $marker =~ s/\s+$//; #remove trailing spaces - if (uc($marker) eq uc($value)) { - $take = $index; + if ($marker eq $value) { + if ($index <= $#values) { + $restrictionyear += $values[$index]; + } + last; + } elsif ($value =~ /^\Q$marker\E(\d+)$/) { + # Perhaps it is something like "K16" (as in Finland) + $restrictionyear += $1; last; } } - if ($take > -1) { - last; - } - } - # Index points to the next value - my $restrictionyear = 0; - if (($take <= $#values) && ($take >= 0)){ - $restrictionyear += $values[$take]; + last if ($restrictionyear > 0); } if ($restrictionyear > 0) { -- 1.7.10.4