Bug 39727: Remove DelSuggestionsOlderThan from C4/Suggestions.pm

To test:
Test the cronjob purge_suggestions.pl

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
This commit is contained in:
Baptiste Wojtkowski 2026-02-19 15:52:52 +00:00 committed by Pedro Amorim
parent b2505f31c3
commit d294b2ce2a
No known key found for this signature in database
GPG Key ID: 06B75BA7F3894D55
3 changed files with 8 additions and 64 deletions

View File

@ -27,7 +27,6 @@ BEGIN {
GetSuggestion
ModStatus
ModSuggestion
DelSuggestionsOlderThan
GetUnprocessedSuggestions
MarcRecordFromNewSuggestion
);
@ -178,28 +177,6 @@ sub DelSuggestion {
}
}
=head2 DelSuggestionsOlderThan
&DelSuggestionsOlderThan($days)
Delete all suggestions older than TODAY-$days , that have be accepted or rejected.
We do now allow a negative number. If you want to delete all suggestions, just use Koha::Suggestions->delete or so.
=cut
sub DelSuggestionsOlderThan {
my ($days) = @_;
return unless $days && $days > 0;
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare(
q{
DELETE FROM suggestions
WHERE STATUS<>'ASKED'
AND manageddate < ADDDATE(NOW(), ?)
}
);
$sth->execute("-$days");
}
=head2 GetUnprocessedSuggestions
Missing POD for GetUnprocessedSuggestions.

View File

@ -63,7 +63,12 @@ if ( !$confirm || $help || !defined($days) ) {
print $usage;
} elsif ( $days and $days > 0 ) {
print "Purging suggestions older than $days days\n" if $verbose;
DelSuggestionsOlderThan($days);
Koha::Suggestions->search( { STATUS => { '!=' => 'ASKED' } } )->filter_by_last_update(
{
days => $days,
timestamp_column_name => 'manageddate',
}
)->delete;
} else {
warn "This script requires a positive number of days. Aborted.\n";
}

View File

@ -19,7 +19,7 @@ use Modern::Perl;
use DateTime::Duration;
use Test::NoWarnings;
use Test::More tests => 50;
use Test::More tests => 49;
use Test::Warn;
use t::lib::Mocks;
@ -38,7 +38,7 @@ use Koha::Suggestions;
BEGIN {
use_ok(
'C4::Suggestions',
qw( ModSuggestion DelSuggestion MarcRecordFromNewSuggestion GetUnprocessedSuggestions DelSuggestionsOlderThan )
qw( ModSuggestion DelSuggestion MarcRecordFromNewSuggestion GetUnprocessedSuggestions )
);
}
@ -423,44 +423,6 @@ subtest 'GetUnprocessedSuggestions' => sub {
);
};
subtest 'DelSuggestionsOlderThan' => sub {
plan tests => 6;
Koha::Suggestions->delete;
# Add four suggestions; note that STATUS needs uppercase (FIXME)
my $d1 = output_pref( { dt => dt_from_string->add( days => -2 ), dateformat => 'sql' } );
my $d2 = output_pref( { dt => dt_from_string->add( days => -4 ), dateformat => 'sql' } );
my $sugg01 =
$builder->build( { source => 'Suggestion', value => { manageddate => $d1, date => $d2, STATUS => 'ASKED' } } );
my $sugg02 = $builder->build(
{ source => 'Suggestion', value => { manageddate => $d1, date => $d2, STATUS => 'CHECKED' } } );
my $sugg03 =
$builder->build( { source => 'Suggestion', value => { manageddate => $d2, date => $d2, STATUS => 'ASKED' } } );
my $sugg04 = $builder->build(
{ source => 'Suggestion', value => { manageddate => $d2, date => $d2, STATUS => 'ACCEPTED' } } );
# Test no parameter: should do nothing
C4::Suggestions::DelSuggestionsOlderThan();
is( Koha::Suggestions->count, 4, 'No suggestions deleted' );
# Test zero: should do nothing too
C4::Suggestions::DelSuggestionsOlderThan(0);
is( Koha::Suggestions->count, 4, 'No suggestions deleted again' );
# Test negative value
C4::Suggestions::DelSuggestionsOlderThan(-1);
is( Koha::Suggestions->count, 4, 'No suggestions deleted for -1' );
# Test positive values
C4::Suggestions::DelSuggestionsOlderThan(5);
is( Koha::Suggestions->count, 4, 'No suggestions>5d deleted' );
C4::Suggestions::DelSuggestionsOlderThan(3);
is( Koha::Suggestions->count, 3, '1 suggestions>3d deleted' );
C4::Suggestions::DelSuggestionsOlderThan(1);
is( Koha::Suggestions->count, 2, '1 suggestions>1d deleted' );
};
subtest 'EmailPurchaseSuggestions' => sub {
plan tests => 13;