Lines 17-23
Link Here
|
17 |
# |
17 |
# |
18 |
# Written by Antoine Farnault antoine@koha-fr.org on Nov. 2006. |
18 |
# Written by Antoine Farnault antoine@koha-fr.org on Nov. 2006. |
19 |
|
19 |
|
20 |
|
|
|
21 |
=head1 cleanborrowers.pl |
20 |
=head1 cleanborrowers.pl |
22 |
|
21 |
|
23 |
This script allows to do 2 things. |
22 |
This script allows to do 2 things. |
Lines 33-38
This script allows to do 2 things.
Link Here
|
33 |
=cut |
32 |
=cut |
34 |
|
33 |
|
35 |
use strict; |
34 |
use strict; |
|
|
35 |
|
36 |
#use warnings; FIXME - Bug 2505 |
36 |
#use warnings; FIXME - Bug 2505 |
37 |
use CGI; |
37 |
use CGI; |
38 |
use C4::Auth; |
38 |
use C4::Auth; |
Lines 40-46
use C4::Output;
Link Here
|
40 |
use C4::Dates qw/format_date format_date_in_iso/; |
40 |
use C4::Dates qw/format_date format_date_in_iso/; |
41 |
use C4::Members; # GetBorrowersWhoHavexxxBorrowed. |
41 |
use C4::Members; # GetBorrowersWhoHavexxxBorrowed. |
42 |
use C4::Circulation; # AnonymiseIssueHistory. |
42 |
use C4::Circulation; # AnonymiseIssueHistory. |
43 |
use C4::VirtualShelves (); #no import |
43 |
use C4::VirtualShelves (); #no import |
44 |
use Date::Calc qw/Today Add_Delta_YM/; |
44 |
use Date::Calc qw/Today Add_Delta_YM/; |
45 |
|
45 |
|
46 |
my $cgi = new CGI; |
46 |
my $cgi = new CGI; |
Lines 51-65
my $cgi = new CGI;
Link Here
|
51 |
# * multivalued CGI paramaters are returned as a packaged string separated by "\0" (null) |
51 |
# * multivalued CGI paramaters are returned as a packaged string separated by "\0" (null) |
52 |
my $params = $cgi->Vars; |
52 |
my $params = $cgi->Vars; |
53 |
|
53 |
|
54 |
my $filterdate1; # the date which filter on issue history. |
54 |
my $filterdate1; # the date which filter on issue history. |
55 |
my $filterdate2; # the date which filter on borrowers last issue. |
55 |
my $filterdate2; # the date which filter on borrowers last issue. |
56 |
my $borrower_dateexpiry; |
56 |
my $borrower_dateexpiry; |
57 |
my $borrower_categorycode; |
57 |
my $borrower_categorycode; |
58 |
|
58 |
|
59 |
# getting the template |
59 |
# getting the template |
60 |
my ( $template, $loggedinuser, $cookie ) = get_template_and_user( |
60 |
my ( $template, $loggedinuser, $cookie ) = get_template_and_user( |
61 |
{ |
61 |
{ template_name => "tools/cleanborrowers.tmpl", |
62 |
template_name => "tools/cleanborrowers.tmpl", |
|
|
63 |
query => $cgi, |
62 |
query => $cgi, |
64 |
type => "intranet", |
63 |
type => "intranet", |
65 |
authnotrequired => 0, |
64 |
authnotrequired => 0, |
Lines 68-105
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
Link Here
|
68 |
); |
67 |
); |
69 |
|
68 |
|
70 |
if ( $params->{'step2'} ) { |
69 |
if ( $params->{'step2'} ) { |
71 |
$filterdate1 = format_date_in_iso($params->{'filterdate1'}); |
70 |
$filterdate1 = format_date_in_iso( $params->{'filterdate1'} ); |
72 |
$filterdate2 = format_date_in_iso($params->{'filterdate2'}); |
71 |
$filterdate2 = format_date_in_iso( $params->{'filterdate2'} ); |
73 |
$borrower_dateexpiry = format_date_in_iso($params->{'borrower_dateexpiry'}); |
72 |
$borrower_dateexpiry = format_date_in_iso( $params->{'borrower_dateexpiry'} ); |
74 |
$borrower_categorycode = $params->{'borrower_categorycode'}; |
73 |
$borrower_categorycode = $params->{'borrower_categorycode'}; |
75 |
|
74 |
|
76 |
my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'}; |
75 |
my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'}; |
77 |
|
76 |
|
78 |
my $totalDel; |
77 |
my $totalDel; |
79 |
my $membersToDelete; |
78 |
my $membersToDelete; |
80 |
if ($checkboxes{borrower}) { |
79 |
if ( $checkboxes{borrower} ) { |
81 |
$membersToDelete = GetBorrowersWhoHaveNotBorrowedSince({ not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode }); |
80 |
$membersToDelete = |
|
|
81 |
GetBorrowersWhoHaveNotBorrowedSince( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } ); |
82 |
$totalDel = scalar @$membersToDelete; |
82 |
$totalDel = scalar @$membersToDelete; |
83 |
|
83 |
|
84 |
} |
84 |
} |
85 |
my $totalAno; |
85 |
my $totalAno; |
86 |
my $membersToAnonymize; |
86 |
my $membersToAnonymize; |
87 |
if ($checkboxes{issue}) { |
87 |
if ( $checkboxes{issue} ) { |
88 |
$membersToAnonymize = |
88 |
$membersToAnonymize = GetBorrowersWithIssuesHistoryOlderThan($filterdate2); |
89 |
GetBorrowersWithIssuesHistoryOlderThan($filterdate2); |
89 |
$totalAno = scalar @$membersToAnonymize; |
90 |
$totalAno = scalar @$membersToAnonymize; |
|
|
91 |
} |
90 |
} |
92 |
|
91 |
|
93 |
$template->param( |
92 |
$template->param( |
94 |
step2 => 1, |
93 |
step2 => 1, |
95 |
totalToDelete => $totalDel, |
94 |
totalToDelete => $totalDel, |
96 |
totalToAnonymize => $totalAno, |
95 |
totalToAnonymize => $totalAno, |
97 |
memberstodelete_list => $membersToDelete, |
96 |
memberstodelete_list => $membersToDelete, |
98 |
memberstoanonymize_list => $membersToAnonymize, |
97 |
memberstoanonymize_list => $membersToAnonymize, |
99 |
filterdate1 => format_date($filterdate1), |
98 |
filterdate1 => format_date($filterdate1), |
100 |
filterdate2 => format_date($filterdate2), |
99 |
filterdate2 => format_date($filterdate2), |
101 |
borrower_dateexpiry => $borrower_dateexpiry, |
100 |
borrower_dateexpiry => $borrower_dateexpiry, |
102 |
borrower_categorycode => $borrower_categorycode, |
101 |
borrower_categorycode => $borrower_categorycode, |
103 |
); |
102 |
); |
104 |
|
103 |
|
105 |
### TODO : Use GetBorrowersNamesAndLatestIssue function in order to get the borrowers to delete or anonymize. |
104 |
### TODO : Use GetBorrowersNamesAndLatestIssue function in order to get the borrowers to delete or anonymize. |
Lines 108-141
if ( $params->{'step2'} ) {
Link Here
|
108 |
} |
107 |
} |
109 |
|
108 |
|
110 |
if ( $params->{'step3'} ) { |
109 |
if ( $params->{'step3'} ) { |
111 |
$filterdate1 = format_date_in_iso($params->{'filterdate1'}); |
110 |
$filterdate1 = format_date_in_iso( $params->{'filterdate1'} ); |
112 |
$filterdate2 = format_date_in_iso($params->{'filterdate2'}); |
111 |
$filterdate2 = format_date_in_iso( $params->{'filterdate2'} ); |
113 |
$borrower_dateexpiry = format_date_in_iso($params->{'borrower_dateexpiry'}); |
112 |
$borrower_dateexpiry = format_date_in_iso( $params->{'borrower_dateexpiry'} ); |
114 |
$borrower_categorycode = $params->{'borrower_categorycode'}; |
113 |
$borrower_categorycode = $params->{'borrower_categorycode'}; |
115 |
|
114 |
|
116 |
my $do_delete = $params->{'do_delete'}; |
115 |
my $do_delete = $params->{'do_delete'}; |
117 |
my $do_anonym = $params->{'do_anonym'}; |
116 |
my $do_anonym = $params->{'do_anonym'}; |
118 |
|
117 |
|
119 |
my ( $totalDel, $totalAno, $radio ) = ( 0, 0, 0 ); |
118 |
my ( $totalDel, $totalAno, $radio ) = ( 0, 0, 0 ); |
120 |
|
119 |
|
121 |
# delete members |
120 |
# delete members |
122 |
if ($do_delete) { |
121 |
if ($do_delete) { |
123 |
my $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince({ not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode }); |
122 |
my $membersToDelete = |
|
|
123 |
GetBorrowersWhoHaveNotBorrowedSince( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } ); |
124 |
$totalDel = scalar(@$membersToDelete); |
124 |
$totalDel = scalar(@$membersToDelete); |
125 |
$radio = $params->{'radio'}; |
125 |
$radio = $params->{'radio'}; |
126 |
if ( $radio eq 'trash' ) { |
126 |
if ( $radio eq 'trash' ) { |
127 |
my $i; |
127 |
my $i; |
128 |
for ( $i = 0 ; $i < $totalDel ; $i++ ) { |
128 |
for ( $i = 0 ; $i < $totalDel ; $i++ ) { |
129 |
MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} ); |
129 |
MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} ); |
130 |
C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'}); |
130 |
C4::VirtualShelves::HandleDelBorrower( $membersToDelete->[$i]->{'borrowernumber'} ); |
131 |
DelMember( $membersToDelete->[$i]->{'borrowernumber'} ); |
131 |
DelMember( $membersToDelete->[$i]->{'borrowernumber'} ); |
132 |
} |
132 |
} |
133 |
} |
133 |
} else { # delete completly. |
134 |
else { # delete completly. |
|
|
135 |
my $i; |
134 |
my $i; |
136 |
for ( $i = 0 ; $i < $totalDel ; $i++ ) { |
135 |
for ( $i = 0 ; $i < $totalDel ; $i++ ) { |
137 |
C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'}); |
136 |
C4::VirtualShelves::HandleDelBorrower( $membersToDelete->[$i]->{'borrowernumber'} ); |
138 |
DelMember($membersToDelete->[$i]->{'borrowernumber'}); |
137 |
DelMember( $membersToDelete->[$i]->{'borrowernumber'} ); |
139 |
} |
138 |
} |
140 |
} |
139 |
} |
141 |
$template->param( |
140 |
$template->param( |
Lines 143-149
if ( $params->{'step3'} ) {
Link Here
|
143 |
TotalDel => $totalDel |
142 |
TotalDel => $totalDel |
144 |
); |
143 |
); |
145 |
} |
144 |
} |
146 |
|
145 |
|
147 |
# Anonymising all members |
146 |
# Anonymising all members |
148 |
if ($do_anonym) { |
147 |
if ($do_anonym) { |
149 |
$totalAno = AnonymiseIssueHistory($filterdate2); |
148 |
$totalAno = AnonymiseIssueHistory($filterdate2); |
Lines 152-158
if ( $params->{'step3'} ) {
Link Here
|
152 |
do_anonym => '1', |
151 |
do_anonym => '1', |
153 |
); |
152 |
); |
154 |
} |
153 |
} |
155 |
|
154 |
|
156 |
$template->param( |
155 |
$template->param( |
157 |
step3 => '1', |
156 |
step3 => '1', |
158 |
trash => ( $radio eq "trash" ) ? (1) : (0), |
157 |
trash => ( $radio eq "trash" ) ? (1) : (0), |
Lines 164-174
if ( $params->{'step3'} ) {
Link Here
|
164 |
} |
163 |
} |
165 |
|
164 |
|
166 |
$template->param( |
165 |
$template->param( |
167 |
step1 => '1', |
166 |
step1 => '1', |
168 |
filterdate1 => $filterdate1, |
167 |
filterdate1 => $filterdate1, |
169 |
filterdate2 => $filterdate2, |
168 |
filterdate2 => $filterdate2, |
170 |
DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), |
169 |
DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), |
171 |
borrower_categorycodes => GetBorrowercategoryList(), |
170 |
borrower_categorycodes => GetBorrowercategoryList(), |
172 |
); |
171 |
); |
173 |
|
172 |
|
174 |
#writing the template |
173 |
#writing the template |
175 |
- |
|
|