|
Lines 972-1034
sub CanBookBeIssued {
Link Here
|
| 972 |
} |
972 |
} |
| 973 |
} |
973 |
} |
| 974 |
} |
974 |
} |
| 975 |
# |
|
|
| 976 |
# CHECK AGE RESTRICTION |
| 977 |
# |
| 978 |
|
975 |
|
|
|
976 |
## CHECK AGE RESTRICTION |
| 979 |
# get $marker from preferences. Could be something like "FSK|PEGI|Alter|Age:" |
977 |
# get $marker from preferences. Could be something like "FSK|PEGI|Alter|Age:" |
| 980 |
my $markers = C4::Context->preference('AgeRestrictionMarker' ); |
978 |
my $markers = C4::Context->preference('AgeRestrictionMarker'); |
| 981 |
my $bibvalues = $biblioitem->{'agerestriction'}; |
979 |
my $bibvalues = $biblioitem->{'agerestriction'}; |
| 982 |
if (($markers)&&($bibvalues)) |
980 |
my $restriction_age = 0; |
| 983 |
{ |
981 |
|
| 984 |
# Split $bibvalues to something like FSK 16 or PEGI 6 |
982 |
$restriction_age = GetAgeRestriction( $biblioitem->{'agerestriction'} ); |
| 985 |
my @values = split ' ', uc($bibvalues); |
983 |
|
| 986 |
|
984 |
if ( $restriction_age > 0 ) { |
| 987 |
# Search first occurence of one of the markers |
985 |
if ( $borrower->{'dateofbirth'} ) { |
| 988 |
my @markers = split /\|/, uc($markers); |
986 |
my @alloweddate = split /-/, $borrower->{'dateofbirth'}; |
| 989 |
my $index = 0; |
987 |
$alloweddate[0] += $restriction_age; |
| 990 |
my $restrictionyear = 0; |
988 |
|
| 991 |
for my $value (@values) { |
989 |
#Prevent runime eror on leap year (invalid date) |
| 992 |
$index ++; |
990 |
if ( ( $alloweddate[1] == 2 ) && ( $alloweddate[2] == 29 ) ) { |
| 993 |
for my $marker (@markers) { |
991 |
$alloweddate[2] = 28; |
| 994 |
$marker =~ s/^\s+//; #remove leading spaces |
|
|
| 995 |
$marker =~ s/\s+$//; #remove trailing spaces |
| 996 |
if ($marker eq $value) { |
| 997 |
if ($index <= $#values) { |
| 998 |
$restrictionyear += $values[$index]; |
| 999 |
} |
| 1000 |
last; |
| 1001 |
} elsif ($value =~ /^\Q$marker\E(\d+)$/) { |
| 1002 |
# Perhaps it is something like "K16" (as in Finland) |
| 1003 |
$restrictionyear += $1; |
| 1004 |
last; |
| 1005 |
} |
| 1006 |
} |
992 |
} |
| 1007 |
last if ($restrictionyear > 0); |
|
|
| 1008 |
} |
| 1009 |
|
993 |
|
| 1010 |
if ($restrictionyear > 0) { |
994 |
if ( Date_to_Days(Today) < Date_to_Days(@alloweddate) - 1 ) { |
| 1011 |
if ( $borrower->{'dateofbirth'} ) { |
995 |
if ( C4::Context->preference('AgeRestrictionOverride') ) { |
| 1012 |
my @alloweddate = split /-/,$borrower->{'dateofbirth'} ; |
996 |
$needsconfirmation{AGE_RESTRICTION} = "$bibvalues"; |
| 1013 |
$alloweddate[0] += $restrictionyear; |
|
|
| 1014 |
#Prevent runime eror on leap year (invalid date) |
| 1015 |
if (($alloweddate[1] == 2) && ($alloweddate[2] == 29)) { |
| 1016 |
$alloweddate[2] = 28; |
| 1017 |
} |
997 |
} |
| 1018 |
|
998 |
else { |
| 1019 |
if ( Date_to_Days(Today) < Date_to_Days(@alloweddate) -1 ) { |
999 |
$issuingimpossible{AGE_RESTRICTION} = "$bibvalues"; |
| 1020 |
if (C4::Context->preference('AgeRestrictionOverride' )) { |
|
|
| 1021 |
$needsconfirmation{AGE_RESTRICTION} = "$bibvalues"; |
| 1022 |
} |
| 1023 |
else { |
| 1024 |
$issuingimpossible{AGE_RESTRICTION} = "$bibvalues"; |
| 1025 |
} |
| 1026 |
} |
1000 |
} |
| 1027 |
} |
1001 |
} |
| 1028 |
} |
1002 |
} |
| 1029 |
} |
1003 |
} |
| 1030 |
|
1004 |
|
| 1031 |
## check for high holds decreasing loan period |
1005 |
## check for high holds decreasing loan period |
| 1032 |
my $decrease_loan = C4::Context->preference('decreaseLoanHighHolds'); |
1006 |
my $decrease_loan = C4::Context->preference('decreaseLoanHighHolds'); |
| 1033 |
if ( $decrease_loan && $decrease_loan == 1 ) { |
1007 |
if ( $decrease_loan && $decrease_loan == 1 ) { |
| 1034 |
my ( $reserved, $num, $duration, $returndate ) = |
1008 |
my ( $reserved, $num, $duration, $returndate ) = |
|
Lines 3588-3593
sub IsItemIssued {
Link Here
|
| 3588 |
return $sth->fetchrow; |
3562 |
return $sth->fetchrow; |
| 3589 |
} |
3563 |
} |
| 3590 |
|
3564 |
|
|
|
3565 |
sub GetAgeRestriction { |
| 3566 |
my ($record_restrictions) = @_; |
| 3567 |
my $markers = C4::Context->preference('AgeRestrictionMarker'); |
| 3568 |
|
| 3569 |
# Split $record_restrictions to something like FSK 16 or PEGI 6 |
| 3570 |
my @values = split ' ', uc($record_restrictions); |
| 3571 |
return unless @values; |
| 3572 |
|
| 3573 |
# Search first occurence of one of the markers |
| 3574 |
my @markers = split /\|/, uc($markers); |
| 3575 |
return unless @markers; |
| 3576 |
|
| 3577 |
my $index = 0; |
| 3578 |
my $restriction_year = 0; |
| 3579 |
for my $value (@values) { |
| 3580 |
$index++; |
| 3581 |
for my $marker (@markers) { |
| 3582 |
$marker =~ s/^\s+//; #remove leading spaces |
| 3583 |
$marker =~ s/\s+$//; #remove trailing spaces |
| 3584 |
if ( $marker eq $value ) { |
| 3585 |
if ( $index <= $#values ) { |
| 3586 |
$restriction_year += $values[$index]; |
| 3587 |
} |
| 3588 |
last; |
| 3589 |
} |
| 3590 |
elsif ( $value =~ /^\Q$marker\E(\d+)$/ ) { |
| 3591 |
|
| 3592 |
# Perhaps it is something like "K16" (as in Finland) |
| 3593 |
$restriction_year += $1; |
| 3594 |
last; |
| 3595 |
} |
| 3596 |
} |
| 3597 |
last if ( $restriction_year > 0 ); |
| 3598 |
} |
| 3599 |
|
| 3600 |
return $restriction_year; |
| 3601 |
} |
| 3602 |
|
| 3591 |
1; |
3603 |
1; |
| 3592 |
|
3604 |
|
| 3593 |
__END__ |
3605 |
__END__ |