X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=tools%2Fcleanborrowers.pl;h=0b37c20140dadca19eecc931a7cbfff7b10bb7b4;hb=884c8a2b7cceeb13b2478ecd9b941a5ddec6470f;hp=c6ecac549fe75f7190ae9c54df44271c92a3e801;hpb=2e0e56a016f4829b479ec260435e185400b72a57;p=koha_fer diff --git a/tools/cleanborrowers.pl b/tools/cleanborrowers.pl index c6ecac549f..0b37c20140 100755 --- a/tools/cleanborrowers.pl +++ b/tools/cleanborrowers.pl @@ -33,13 +33,15 @@ This script allows to do 2 things. =cut use strict; +#use warnings; FIXME - Bug 2505 use CGI; use C4::Auth; use C4::Output; -use C4::Dates; +use C4::Dates qw/format_date format_date_in_iso/; use C4::Members; # GetBorrowersWhoHavexxxBorrowed. use C4::Circulation; # AnonymiseIssueHistory. -use Date::Calc qw/Date_to_Days Today/; +use C4::VirtualShelves (); #no import +use Date::Calc qw/Today Add_Delta_YM/; my $cgi = new CGI; @@ -59,24 +61,26 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( query => $cgi, type => "intranet", authnotrequired => 0, - flagsrequired => { tools => 1, catalogue => 1 }, + flagsrequired => { tools => 'delete_anonymize_patrons', catalogue => 1 }, } ); if ( $params->{'step2'} ) { $filterdate1 = format_date_in_iso($params->{'filterdate1'}); $filterdate2 = format_date_in_iso($params->{'filterdate2'}); - my $checkbox = $params->{'checkbox'}; + my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'}; my $totalDel; - if ($checkbox eq "borrower") { - my $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1); + my $membersToDelete; + if ($checkboxes{borrower}) { + $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1, 1); $totalDel = scalar @$membersToDelete; + } - my $totalAno; - if ($checkbox eq "issue") { - my $membersToAnonymize = + my $membersToAnonymize; + if ($checkboxes{issue}) { + $membersToAnonymize = GetBorrowersWithIssuesHistoryOlderThan($filterdate2); $totalAno = scalar @$membersToAnonymize; } @@ -85,10 +89,13 @@ if ( $params->{'step2'} ) { step2 => 1, totalToDelete => $totalDel, totalToAnonymize => $totalAno, + memberstodelete_list => $membersToDelete, + memberstoanonymize_list => $membersToAnonymize, filterdate1 => format_date($filterdate1), filterdate2 => format_date($filterdate2), ); - +### TODO : Use GetBorrowersNamesAndLatestIssue function in order to get the borrowers to delete or anonymize. +### Now, we are only using total, which is not enough imlo #writing the template output_html_with_http_headers $cgi, $cookie, $template->output; exit; @@ -104,20 +111,22 @@ if ( $params->{'step3'} ) { # delete members if ($do_delete) { - my $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1); + my $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1, 1); $totalDel = scalar(@$membersToDelete); $radio = $params->{'radio'}; if ( $radio eq 'trash' ) { my $i; for ( $i = 0 ; $i < $totalDel ; $i++ ) { MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} ); + C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'}); DelMember( $membersToDelete->[$i]->{'borrowernumber'} ); } } else { # delete completly. my $i; for ( $i = 0 ; $i < $totalDel ; $i++ ) { - DelMember($membersToDelete->[$i]->{'borrowernumber'}); + C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'}); + DelMember($membersToDelete->[$i]->{'borrowernumber'}); } } $template->param( @@ -147,10 +156,8 @@ if ( $params->{'step3'} ) { #default value set to the template are the 'CNIL' value. my ( $year, $month, $day ) = &Today(); -my $tmpyear = $year - 1; -my $tmpmonth = $month - 3; -$filterdate1 = format_date($tmpyear . "-" . $month . "-" . $day); -$filterdate2 = format_date($year . "-" . $tmpmonth . "-" . $day); +$filterdate1 = format_date(sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YM($year, $month, $day, -1, 0))); +$filterdate2 = format_date(sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YM($year, $month, $day, 0, -3))); $template->param( step1 => '1',