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 |
- |
|
|