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