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

(-)a/C4/Suggestions.pm (-23 lines)
Lines 35-41 our @EXPORT = qw( Link Here
35
    DelSuggestion
35
    DelSuggestion
36
    ModStatus
36
    ModStatus
37
    ModSuggestion
37
    ModSuggestion
38
    DelSuggestionsOlderThan
39
    GetUnprocessedSuggestions
38
    GetUnprocessedSuggestions
40
    MarcRecordFromNewSuggestion
39
    MarcRecordFromNewSuggestion
41
);
40
);
Lines 174-201 sub DelSuggestion { Link Here
174
    }
173
    }
175
}
174
}
176
175
177
=head2 DelSuggestionsOlderThan
178
    &DelSuggestionsOlderThan($days)
179
180
    Delete all suggestions older than TODAY-$days , that have be accepted or rejected.
181
    We do now allow a negative number. If you want to delete all suggestions, just use Koha::Suggestions->delete or so.
182
183
=cut
184
185
sub DelSuggestionsOlderThan {
186
    my ($days) = @_;
187
    return unless $days && $days > 0;
188
    my $dbh = C4::Context->dbh;
189
    my $sth = $dbh->prepare(
190
        q{
191
        DELETE FROM suggestions
192
        WHERE STATUS<>'ASKED'
193
            AND manageddate < ADDDATE(NOW(), ?)
194
    }
195
    );
196
    $sth->execute("-$days");
197
}
198
199
sub GetUnprocessedSuggestions {
176
sub GetUnprocessedSuggestions {
200
    my ($number_of_days_since_the_last_modification) = @_;
177
    my ($number_of_days_since_the_last_modification) = @_;
201
178
(-)a/misc/cronjobs/purge_suggestions.pl (-1 / +6 lines)
Lines 63-69 if ( !$confirm || $help || !defined($days) ) { Link Here
63
    print $usage;
63
    print $usage;
64
} elsif ( $days and $days > 0 ) {
64
} elsif ( $days and $days > 0 ) {
65
    print "Purging suggestions older than $days days\n" if $verbose;
65
    print "Purging suggestions older than $days days\n" if $verbose;
66
    DelSuggestionsOlderThan($days);
66
    Koha::Suggestions->search( { STATUS => { '!=' => 'ASKED' } } )->filter_by_last_update(
67
        {
68
            days                  => $days,
69
            timestamp_column_name => 'manageddate',
70
        }
71
    )->delete;
67
} else {
72
} else {
68
    warn "This script requires a positive number of days. Aborted.\n";
73
    warn "This script requires a positive number of days. Aborted.\n";
69
}
74
}
(-)a/t/db_dependent/Suggestions.t (-41 / +2 lines)
Lines 19-25 use Modern::Perl; Link Here
19
19
20
use DateTime::Duration;
20
use DateTime::Duration;
21
use Test::NoWarnings;
21
use Test::NoWarnings;
22
use Test::More tests => 52;
22
use Test::More tests => 51;
23
use Test::Warn;
23
use Test::Warn;
24
24
25
use t::lib::Mocks;
25
use t::lib::Mocks;
Lines 38-44 use Koha::Suggestions; Link Here
38
BEGIN {
38
BEGIN {
39
    use_ok(
39
    use_ok(
40
        'C4::Suggestions',
40
        'C4::Suggestions',
41
        qw( ModSuggestion DelSuggestion MarcRecordFromNewSuggestion GetUnprocessedSuggestions DelSuggestionsOlderThan )
41
        qw( ModSuggestion DelSuggestion MarcRecordFromNewSuggestion GetUnprocessedSuggestions )
42
    );
42
    );
43
}
43
}
44
44
Lines 429-472 subtest 'GetUnprocessedSuggestions' => sub { Link Here
429
    );
429
    );
430
};
430
};
431
431
432
subtest 'DelSuggestionsOlderThan' => sub {
433
    plan tests => 6;
434
435
    Koha::Suggestions->delete;
436
437
    # Add four suggestions; note that STATUS needs uppercase (FIXME)
438
    my $d1 = output_pref( { dt => dt_from_string->add( days => -2 ), dateformat => 'sql' } );
439
    my $d2 = output_pref( { dt => dt_from_string->add( days => -4 ), dateformat => 'sql' } );
440
    my $sugg01 =
441
        $builder->build( { source => 'Suggestion', value => { manageddate => $d1, date => $d2, STATUS => 'ASKED' } } );
442
    my $sugg02 = $builder->build(
443
        { source => 'Suggestion', value => { manageddate => $d1, date => $d2, STATUS => 'CHECKED' } } );
444
    my $sugg03 =
445
        $builder->build( { source => 'Suggestion', value => { manageddate => $d2, date => $d2, STATUS => 'ASKED' } } );
446
    my $sugg04 = $builder->build(
447
        { source => 'Suggestion', value => { manageddate => $d2, date => $d2, STATUS => 'ACCEPTED' } } );
448
449
    # Test no parameter: should do nothing
450
    C4::Suggestions::DelSuggestionsOlderThan();
451
    is( Koha::Suggestions->count, 4, 'No suggestions deleted' );
452
453
    # Test zero: should do nothing too
454
    C4::Suggestions::DelSuggestionsOlderThan(0);
455
    is( Koha::Suggestions->count, 4, 'No suggestions deleted again' );
456
457
    # Test negative value
458
    C4::Suggestions::DelSuggestionsOlderThan(-1);
459
    is( Koha::Suggestions->count, 4, 'No suggestions deleted for -1' );
460
461
    # Test positive values
462
    C4::Suggestions::DelSuggestionsOlderThan(5);
463
    is( Koha::Suggestions->count, 4, 'No suggestions>5d deleted' );
464
    C4::Suggestions::DelSuggestionsOlderThan(3);
465
    is( Koha::Suggestions->count, 3, '1 suggestions>3d deleted' );
466
    C4::Suggestions::DelSuggestionsOlderThan(1);
467
    is( Koha::Suggestions->count, 2, '1 suggestions>1d deleted' );
468
};
469
470
subtest 'EmailPurchaseSuggestions' => sub {
432
subtest 'EmailPurchaseSuggestions' => sub {
471
    plan tests => 11;
433
    plan tests => 11;
472
434
473
- 

Return to bug 39727