Bug 9811: Remove useless orderby management
[koha_fer] / opac / opac-reserve.pl
index 4bba9a6..a842869 100755 (executable)
@@ -35,6 +35,7 @@ use C4::Branch; # GetBranches
 use C4::Overdues;
 use C4::Debug;
 use Koha::DateUtils;
+use Date::Calc qw/Today Date_to_Days/;
 # use Data::Dumper;
 
 my $MAXIMUM_NUMBER_OF_RESERVES = C4::Context->preference("maxreserves");
@@ -65,6 +66,17 @@ sub get_out {
 # get borrower information ....
 my ( $borr ) = GetMemberDetails( $borrowernumber );
 
+# check if this user can place a reserve, -1 means use sys pref, 0 means dont block, 1 means block
+if ( $borr->{'BlockExpiredPatronOpacActions'} ) {
+
+    if ( $borr->{'is_expired'} ) {
+
+        # cannot reserve, their card has expired and the rules set mean this is not allowed
+        $template->param( message => 1, expired_patron => 1 );
+        get_out( $query, $cookie, $template->output );
+    }
+}
+
 # Pass through any reserve charge
 if ($borr->{reservefee} > 0){
     $template->param( RESERVE_CHARGE => sprintf("%.2f",$borr->{reservefee}));
@@ -147,8 +159,8 @@ foreach my $biblioNumber (@biblionumbers) {
     }
 
     # Compute the priority rank.
-    my ( $rank, $reserves ) =
-      GetReservesFromBiblionumber( $biblioNumber, 1 );
+    my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblioNumber, all_dates => 1 });
+    my $rank = scalar( @$reserves );
     $biblioData->{reservecount} = 1;    # new reserve
     foreach my $res (@{$reserves}) {
         my $found = $res->{found};
@@ -307,7 +319,7 @@ if ( $borr->{lost} && ($borr->{lost} == 1) ) {
                      lost    => 1
                     );
 }
-if ( CheckBorrowerDebarred($borrowernumber) ) {
+if ( $borr->{'debarred'} ) {
     $noreserves = 1;
     $template->param(
                      message  => 1,
@@ -426,18 +438,18 @@ foreach my $biblioNum (@biblionumbers) {
         # change the background color.
         my $issues= GetItemIssue($itemNum);
         if ( $issues->{'date_due'} ) {
-            $itemLoopIter->{dateDue} = format_sqlduedatetime($issues->{date_due});
+            $itemLoopIter->{dateDue} = output_pref({ dt => dt_from_string($issues->{date_due}, 'sql'), as_due_date => 1 });
             $itemLoopIter->{backgroundcolor} = 'onloan';
         }
 
         # checking reserve
-        my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemNum);
+        my ($reservedate,$reservedfor,$expectedAt,undef,$wait) = GetReservesFromItemnumber($itemNum);
         my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
 
-       # the item could be reserved for this borrower vi a host record, flag this
-       if ($reservedfor eq $borrowernumber){
-               $itemLoopIter->{already_reserved} = 1;
-       }
+        # the item could be reserved for this borrower vi a host record, flag this
+        if ($reservedfor eq $borrowernumber){
+            $itemLoopIter->{already_reserved} = 1;
+        }
 
         if ( defined $reservedate ) {
             $itemLoopIter->{backgroundcolor} = 'reserved';
@@ -446,6 +458,8 @@ foreach my $biblioNum (@biblionumbers) {
             $itemLoopIter->{ReservedForSurname}        = $ItemBorrowerReserveInfo->{'surname'};
             $itemLoopIter->{ReservedForFirstname}      = $ItemBorrowerReserveInfo->{'firstname'};
             $itemLoopIter->{ExpectedAtLibrary}         = $expectedAt;
+            #waiting status
+            $itemLoopIter->{waitingdate} = $wait;
         }
 
         $itemLoopIter->{notforloan} = $itemInfo->{notforloan};
@@ -505,14 +519,7 @@ foreach my $biblioNum (@biblionumbers) {
             $numCopiesAvailable++;
         }
 
-       # FIXME: move this to a pm
-        my $dbh = C4::Context->dbh;
-        my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
-        $sth2->execute($itemLoopIter->{ReservedForBorrowernumber}, $itemNum);
-        while (my $wait_hashref = $sth2->fetchrow_hashref) {
-            $itemLoopIter->{waitingdate} = format_date($wait_hashref->{waitingdate});
-        }
-       $itemLoopIter->{imageurl} = getitemtypeimagelocation( 'opac', $itemTypes->{ $itemInfo->{itype} }{imageurl} );
+        $itemLoopIter->{imageurl} = getitemtypeimagelocation( 'opac', $itemTypes->{ $itemInfo->{itype} }{imageurl} );
 
     # Show serial enumeration when needed
         if ($itemLoopIter->{enumchron}) {