View | Details | Raw Unified | Return to bug 23260
Collapse All | Expand All

(-)a/Koha/Patrons.pm (-30 / +11 lines)
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
- 

Return to bug 23260