From f3b938926250d7661c961547ce6e0a48993ab962 Mon Sep 17 00:00:00 2001 From: Baptiste Wojtkowski Date: Thu, 19 Feb 2026 15:52:52 +0000 Subject: [PATCH] Bug 39727: Remove DelSuggestionsOlderThan from C4/Suggestions.pm To test: Test the cronjob purge_suggestions.pl --- C4/Suggestions.pm | 23 ---------------- misc/cronjobs/purge_suggestions.pl | 9 +++++-- t/db_dependent/Suggestions.t | 42 ++---------------------------- 3 files changed, 9 insertions(+), 65 deletions(-) diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index d80e452a744..0d214acd906 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -27,7 +27,6 @@ BEGIN { GetSuggestion ModStatus ModSuggestion - DelSuggestionsOlderThan GetUnprocessedSuggestions MarcRecordFromNewSuggestion ); @@ -188,28 +187,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. diff --git a/misc/cronjobs/purge_suggestions.pl b/misc/cronjobs/purge_suggestions.pl index 14903bbcc54..6869ae1d90a 100755 --- a/misc/cronjobs/purge_suggestions.pl +++ b/misc/cronjobs/purge_suggestions.pl @@ -38,7 +38,7 @@ GetOptions( 'v|verbose' => \$verbose, ); -my $usage = << 'ENDUSAGE'; +my $usage = <<'ENDUSAGE'; This script deletes old suggestions Parameters: -help|? This message @@ -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"; } diff --git a/t/db_dependent/Suggestions.t b/t/db_dependent/Suggestions.t index f617947a43a..36c579f3b2b 100755 --- a/t/db_dependent/Suggestions.t +++ b/t/db_dependent/Suggestions.t @@ -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 => 11; -- 2.43.0