From 8f1de4806708264d20eac2ecf8f911a13f1c4daf Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Mon, 20 Oct 2014 15:37:17 +0300 Subject: [PATCH] Bug 13113 - Prevent juvenile/children from reserving ageRestricted material There is no reason for underage borrowers to reserve ageRestricted material and then be denied it's check-out due to ageRestriction. This patch prevents reserving material for borrowers not suitably aged. # # # # # # # A PRIORI # # # # # # # BOTH THE STAFF CLIENT AND THE OPAC 1. Find a Record with Items, update the MARC Subfield 521a to "PEGI 16". 2. Get a Borrower who is younger than 16 years. 3. Place a hold for the underage Borrower for the ageRestricted Record. 4. You can reserve an ageRestricted Record with ease. STAFF CLIENT ONLY 5. Check-in an Item from the ageRestricted Record and catch the reservation. 6. Check-out the ageRestricted Item for this underage Borrower. 7. You get a notification about being unable to check-out due to age restriction. How lame is that for a 12 year old? # # # # # # # # # A POSTERIORI # # # # # # # # # STAFF CLIENT 1. Find a Record with Items, update the MARC Subfield 521a to "PEGI 16". 2. Get a Borrower who is younger than 16 years. 3. Check-out an ageRestricted Item for this underage Borrower. 4. You get a notification about having the maximum amount of reserves. 5. Place a hold for the underage Borrower for the ageRestricted Record. 6. You get a notification, that placing a hold on ageRestricted material is forbidden. OPAC A. In OPAC go to opac-detail.pl for the ageRestricted Biblio. The "Place Hold" -button is missing on the right sidebar if the underage user is logged in. B. From the opac-search.pl a hold can still be placed, but it will fail giving an error about age restrictions. Includes Unit tests. --- C4/Reserves.pm | 8 +++-- .../bootstrap/en/includes/opac-detail-sidebar.inc | 2 +- opac/opac-detail.pl | 7 ++++ t/db_dependent/Reserves.t | 37 +++++++++++++++++++- 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 7a075a4..97990ac 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -486,12 +486,16 @@ sub CanItemBeReserved{ # we retrieve borrowers and items informations # # item->{itype} will come for biblioitems if necessery my $item = GetItem($itemnumber); + my $biblioData = C4::Biblio::GetBiblioData( $item->{biblionumber} ); + my $borrower = C4::Members::GetMember('borrowernumber'=>$borrowernumber); # If an item is damaged and we don't allow holds on damaged items, we can stop right here return 0 if ( $item->{damaged} && !C4::Context->preference('AllowHoldsOnDamagedItems') ); - my $borrower = C4::Members::GetMember('borrowernumber'=>$borrowernumber); - + #Check for the age restriction + my ($ageRestriction, $daysToAgeRestriction) = C4::Circulation::GetAgeRestriction( $biblioData->{agerestriction}, $borrower ); + return 0 if $daysToAgeRestriction && $daysToAgeRestriction > 0; + my $controlbranch = C4::Context->preference('ReservesControlBranch'); my $itemtypefield = C4::Context->preference('item-level_itypes') ? "itype" : "itemtype"; diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc index b15333b..d7c0209 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc @@ -1,7 +1,7 @@