|
Lines 213-251
sub anonymize_last_borrowers {
Link Here
|
| 213 |
my $anonymous_patron = C4::Context->preference('AnonymousPatron'); |
213 |
my $anonymous_patron = C4::Context->preference('AnonymousPatron'); |
| 214 |
|
214 |
|
| 215 |
my $dtf = Koha::Database->new->schema->storage->datetime_parser; |
215 |
my $dtf = Koha::Database->new->schema->storage->datetime_parser; |
| 216 |
my $rs = $self->_resultset->search( |
216 |
|
|
|
217 |
# Perform bulk update directly on items_last_borrower table to avoid N+1 queries |
| 218 |
my $schema = Koha::Database->new->schema; |
| 219 |
my $items_last_borrower_rs = $schema->resultset('ItemsLastBorrower')->search( |
| 217 |
{ |
220 |
{ |
| 218 |
created_on => { '<' => $dtf->format_datetime($older_than_date), }, |
221 |
created_on => { '<' => $dtf->format_datetime($older_than_date) }, |
| 219 |
'items_last_borrowers.borrowernumber' => { 'not' => undef }, # Keep forever |
222 |
borrowernumber => { '!=' => $anonymous_patron, 'not' => undef }, |
| 220 |
'items_last_borrowers.borrowernumber' => { '!=' => $anonymous_patron }, |
223 |
'itemnumber.damaged' => 0, |
|
|
224 |
'itemnumber.itemlost' => 0, |
| 225 |
'itemnumber.withdrawn' => 0, |
| 221 |
}, |
226 |
}, |
| 222 |
{ |
227 |
{ join => 'itemnumber' } |
| 223 |
join => ["items_last_borrowers"], |
|
|
| 224 |
distinct => 1, |
| 225 |
} |
| 226 |
); |
228 |
); |
| 227 |
my $patrons = Koha::Patrons->_new_from_dbic($rs); |
|
|
| 228 |
|
| 229 |
my $nb_rows = 0; |
| 230 |
while ( my $patron = $patrons->next ) { |
| 231 |
my $last_borrowers_to_anonymize = $patron->_result->items_last_borrowers->search( |
| 232 |
{ |
| 233 |
( |
| 234 |
$older_than_date |
| 235 |
? ( created_on => { '<' => $dtf->format_datetime($older_than_date) } ) |
| 236 |
: (), |
| 237 |
"itemnumber.damaged" => 0, |
| 238 |
"itemnumber.itemlost" => 0, |
| 239 |
"itemnumber.withdrawn" => 0, |
| 240 |
), |
| 241 |
}, |
| 242 |
{ join => ['itemnumber'] } |
| 243 |
); |
| 244 |
$nb_rows += |
| 245 |
$last_borrowers_to_anonymize->update( { 'items_last_borrower.borrowernumber' => $anonymous_patron } ); |
| 246 |
} |
| 247 |
|
229 |
|
| 248 |
return $nb_rows; |
230 |
return $items_last_borrower_rs->update( { borrowernumber => $anonymous_patron } ); |
| 249 |
} |
231 |
} |
| 250 |
|
232 |
|
| 251 |
=head3 delete |
233 |
=head3 delete |
| 252 |
- |
|
|