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

(-)a/Koha/Item.pm (-20 / +28 lines)
Lines 971-998 sub last_returned_by { Link Here
971
        # Clean up the table by deleting older entries, depending on what StoreLastBorrower is set to
971
        # Clean up the table by deleting older entries, depending on what StoreLastBorrower is set to
972
        my $max_stored_borrowers = C4::Context->preference('StoreLastBorrower') || 0;
972
        my $max_stored_borrowers = C4::Context->preference('StoreLastBorrower') || 0;
973
973
974
        # If StoreLastBorrower is 0 or disabled, bail without storing anything. Also delete any remaining rows from the table.
974
        my $schema = Koha::Database->new->schema;
975
        if ( $max_stored_borrowers == 0 ) {
975
        $schema->txn_do(
976
            $self->_result->last_returned_by->delete_all;
976
            sub {
977
            return $self;
978
        }
979
977
980
        #Create an entry for last_returned_by
978
                # If StoreLastBorrower is 0 or disabled, bail without storing anything. Also delete any remaining rows from the table.
981
        my $new_record = $self->_result->create_related(
979
                if ( $max_stored_borrowers == 0 ) {
982
            'last_returned_by',
980
                    $self->_result->last_returned_by->delete_all;
983
            { borrowernumber => $borrowernumber, itemnumber => $self->itemnumber }
981
                    return $self;
984
        );
982
                }
985
983
986
        # Get all entries, ordered by newest first
984
                # Create an entry for last_returned_by
987
        my @all_entries =
985
                my $new_record = $self->_result->create_related(
988
            $self->_result->last_returned_by( {}, { order_by => [ { '-desc' => 'created_on' }, { '-desc' => 'id' } ] } )
986
                    'last_returned_by',
989
            ->all;
987
                    { borrowernumber => $borrowernumber, itemnumber => $self->itemnumber }
988
                );
990
989
991
        # If we have more than the limit, delete the excess oldest ones
990
                # Get all entries, ordered by newest first
992
        if ( scalar(@all_entries) > $max_stored_borrowers ) {
991
                my @all_entries = $self->_result->last_returned_by(
993
            my @entries_to_delete = splice( @all_entries, $max_stored_borrowers );
992
                    {},
994
            $_->delete for @entries_to_delete;
993
                    {
995
        }
994
                        order_by => [ { '-desc' => 'created_on' }, { '-desc' => 'id' } ],
995
                    }
996
                )->all;
997
998
                # If we have more than the limit, delete the excess oldest ones
999
                if ( scalar(@all_entries) > $max_stored_borrowers ) {
1000
                    my @entries_to_delete = splice( @all_entries, $max_stored_borrowers );
1001
                    $_->delete for @entries_to_delete;
1002
                }
1003
            }
1004
        );
996
1005
997
        return $self;
1006
        return $self;
998
    }
1007
    }
999
- 

Return to bug 26993