Bug 24476: Allow direct editing of autorenew_checkouts by patron
[srvgit] / opac / opac-user.pl
index 99a32eb..d94d3d0 100755 (executable)
@@ -27,8 +27,6 @@ use C4::Circulation;
 use C4::External::BakerTaylor qw( image_url link_url );
 use C4::Reserves;
 use C4::Members;
-use C4::Members::AttributeTypes;
-use C4::Members::Attributes qw/GetBorrowerAttributeValue/;
 use C4::Output;
 use C4::Biblio;
 use C4::Items;
@@ -45,6 +43,7 @@ use Koha::Patrons;
 use Koha::Patron::Messages;
 use Koha::Patron::Discharge;
 use Koha::Patrons;
+use Koha::Token;
 
 use constant ATTRIBUTE_SHOW_BARCODE => 'SHOW_BCODE';
 
@@ -85,6 +84,18 @@ $template->param( shibbolethAuthentication => C4::Context->config('useshibboleth
 
 # get borrower information ....
 my $patron = Koha::Patrons->find( $borrowernumber );
+
+if( $query->param('update_arc') && C4::Context->preference("AllowPatronToControlAutorenewal") ){
+    die "Wrong CSRF token"
+        unless Koha::Token->new->check_csrf({
+            session_id => scalar $query->cookie('CGISESSID'),
+            token  => scalar $query->param('csrf_token'),
+        });
+
+    my $autorenew_checkouts = $query->param('borrower_autorenew_checkouts');
+    $patron->autorenew_checkouts( $autorenew_checkouts )->store() if defined $autorenew_checkouts;
+}
+
 my $borr = $patron->unblessed;
 # unblessed is a hash vs. object/undef. Hence the use of curly braces here.
 my $borcat = $borr ? $borr->{categorycode} : q{};
@@ -135,6 +146,11 @@ if (   C4::Context->preference('OpacRenewalAllowed')
     );
 }
 
+my $maxoutstanding = C4::Context->preference('maxoutstanding');
+if ( $amountoutstanding && ( $amountoutstanding > $maxoutstanding ) ){
+    $borr->{blockedonfines} = 1;
+}
+
 # Warningdate is the date that the warning starts appearing
 if ( $borr->{'dateexpiry'} && C4::Context->preference('NotifyBorrowerDeparture') ) {
     my $days_to_expiry = Date_to_Days( $warning_year, $warning_month, $warning_day ) - Date_to_Days( $today_year, $today_month, $today_day );
@@ -161,6 +177,9 @@ $template->param(
                     surname           => $borr->{surname},
                     RENEW_ERROR       => $renew_error,
                     borrower          => $borr,
+                    csrf_token             => Koha::Token->new->generate_csrf({
+                        session_id => scalar $query->cookie('CGISESSID'),
+                    }),
                 );
 
 #get issued items ....
@@ -282,11 +301,11 @@ $template->param( canrenew     => $canrenew );
 $template->param( OVERDUES       => \@overdues );
 $template->param( overdues_count => $overdues_count );
 
-my $show_barcode = Koha::Patron::Attribute::Types->search(
+my $show_barcode = Koha::Patron::Attribute::Types->search( # FIXME we should not need this search
     { code => ATTRIBUTE_SHOW_BARCODE } )->count;
 if ($show_barcode) {
-    my $patron_show_barcode = GetBorrowerAttributeValue($borrowernumber, ATTRIBUTE_SHOW_BARCODE);
-    undef $show_barcode if defined($patron_show_barcode) && !$patron_show_barcode;
+    my $patron_show_barcode = $patron->get_extended_attribute(ATTRIBUTE_SHOW_BARCODE);
+    undef $show_barcode if $patron_show_barcode and not $patron_show_barcode->attribute;
 }
 $template->param( show_barcode => 1 ) if $show_barcode;