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

(-)a/C4/Suggestions.pm (-23 lines)
Lines 27-33 BEGIN { Link Here
27
        GetSuggestion
27
        GetSuggestion
28
        ModStatus
28
        ModStatus
29
        ModSuggestion
29
        ModSuggestion
30
        DelSuggestionsOlderThan
31
        GetUnprocessedSuggestions
30
        GetUnprocessedSuggestions
32
        MarcRecordFromNewSuggestion
31
        MarcRecordFromNewSuggestion
33
    );
32
    );
Lines 188-215 sub DelSuggestion { Link Here
188
    }
187
    }
189
}
188
}
190
189
191
=head2 DelSuggestionsOlderThan
192
    &DelSuggestionsOlderThan($days)
193
194
    Delete all suggestions older than TODAY-$days , that have be accepted or rejected.
195
    We do now allow a negative number. If you want to delete all suggestions, just use Koha::Suggestions->delete or so.
196
197
=cut
198
199
sub DelSuggestionsOlderThan {
200
    my ($days) = @_;
201
    return unless $days && $days > 0;
202
    my $dbh = C4::Context->dbh;
203
    my $sth = $dbh->prepare(
204
        q{
205
        DELETE FROM suggestions
206
        WHERE STATUS<>'ASKED'
207
            AND manageddate < ADDDATE(NOW(), ?)
208
    }
209
    );
210
    $sth->execute("-$days");
211
}
212
213
=head2 GetUnprocessedSuggestions
190
=head2 GetUnprocessedSuggestions
214
191
215
Missing POD for GetUnprocessedSuggestions.
192
Missing POD for GetUnprocessedSuggestions.
(-)a/misc/cronjobs/purge_suggestions.pl (-2 / +7 lines)
Lines 38-44 GetOptions( Link Here
38
    'v|verbose' => \$verbose,
38
    'v|verbose' => \$verbose,
39
);
39
);
40
40
41
my $usage = << 'ENDUSAGE';
41
my $usage = <<'ENDUSAGE';
42
This script deletes old suggestions
42
This script deletes old suggestions
43
Parameters:
43
Parameters:
44
-help|? This message
44
-help|? This message
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 => 50;
22
use Test::More tests => 49;
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 423-466 subtest 'GetUnprocessedSuggestions' => sub { Link Here
423
    );
423
    );
424
};
424
};
425
425
426
subtest 'DelSuggestionsOlderThan' => sub {
427
    plan tests => 6;
428
429
    Koha::Suggestions->delete;
430
431
    # Add four suggestions; note that STATUS needs uppercase (FIXME)
432
    my $d1 = output_pref( { dt => dt_from_string->add( days => -2 ), dateformat => 'sql' } );
433
    my $d2 = output_pref( { dt => dt_from_string->add( days => -4 ), dateformat => 'sql' } );
434
    my $sugg01 =
435
        $builder->build( { source => 'Suggestion', value => { manageddate => $d1, date => $d2, STATUS => 'ASKED' } } );
436
    my $sugg02 = $builder->build(
437
        { source => 'Suggestion', value => { manageddate => $d1, date => $d2, STATUS => 'CHECKED' } } );
438
    my $sugg03 =
439
        $builder->build( { source => 'Suggestion', value => { manageddate => $d2, date => $d2, STATUS => 'ASKED' } } );
440
    my $sugg04 = $builder->build(
441
        { source => 'Suggestion', value => { manageddate => $d2, date => $d2, STATUS => 'ACCEPTED' } } );
442
443
    # Test no parameter: should do nothing
444
    C4::Suggestions::DelSuggestionsOlderThan();
445
    is( Koha::Suggestions->count, 4, 'No suggestions deleted' );
446
447
    # Test zero: should do nothing too
448
    C4::Suggestions::DelSuggestionsOlderThan(0);
449
    is( Koha::Suggestions->count, 4, 'No suggestions deleted again' );
450
451
    # Test negative value
452
    C4::Suggestions::DelSuggestionsOlderThan(-1);
453
    is( Koha::Suggestions->count, 4, 'No suggestions deleted for -1' );
454
455
    # Test positive values
456
    C4::Suggestions::DelSuggestionsOlderThan(5);
457
    is( Koha::Suggestions->count, 4, 'No suggestions>5d deleted' );
458
    C4::Suggestions::DelSuggestionsOlderThan(3);
459
    is( Koha::Suggestions->count, 3, '1 suggestions>3d deleted' );
460
    C4::Suggestions::DelSuggestionsOlderThan(1);
461
    is( Koha::Suggestions->count, 2, '1 suggestions>1d deleted' );
462
};
463
464
subtest 'EmailPurchaseSuggestions' => sub {
426
subtest 'EmailPurchaseSuggestions' => sub {
465
    plan tests => 11;
427
    plan tests => 11;
466
428
467
- 

Return to bug 39727