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

(-)a/misc/cronjobs/cleanup_database.pl (-2 / +41 lines)
Lines 29-34 use constant DEFAULT_SHARE_INVITATION_EXPIRY_DAYS => 14; Link Here
29
use constant DEFAULT_DEBARMENTS_PURGEDAYS         => 30;
29
use constant DEFAULT_DEBARMENTS_PURGEDAYS         => 30;
30
use constant DEFAULT_JOBS_PURGEDAYS               => 1;
30
use constant DEFAULT_JOBS_PURGEDAYS               => 1;
31
use constant DEFAULT_JOBS_PURGETYPES              => qw{ update_elastic_index };
31
use constant DEFAULT_JOBS_PURGETYPES              => qw{ update_elastic_index };
32
use constant DEFAULT_EDIFACT_MSG_PURGEDAYS        => 365;
32
33
33
use Koha::Script -cron;
34
use Koha::Script -cron;
34
use C4::Context;
35
use C4::Context;
Lines 49-58 use Koha::Item::Transfers; Link Here
49
use Koha::PseudonymizedTransactions;
50
use Koha::PseudonymizedTransactions;
50
use Koha::Patron::Messages;
51
use Koha::Patron::Messages;
51
use Koha::Patron::Debarments qw( DelDebarment );
52
use Koha::Patron::Debarments qw( DelDebarment );
53
use Koha::Database;
52
54
53
sub usage {
55
sub usage {
54
    print STDERR <<USAGE;
56
    print STDERR <<USAGE;
55
Usage: $0 [-h|--help] [--confirm] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged] [--import DAYS] [--logs DAYS] [--searchhistory DAYS] [--restrictions DAYS] [--all-restrictions] [--fees DAYS] [--temp-uploads] [--temp-uploads-days DAYS] [--uploads-missing 0|1 ] [--statistics DAYS] [--deleted-catalog DAYS] [--deleted-patrons DAYS] [--old-issues DAYS] [--old-reserves DAYS] [--transfers DAYS] [--labels DAYS] [--cards DAYS] [--bg-days DAYS [--bg-type TYPE] ]
57
Usage: $0 [-h|--help] [--confirm] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged] [--import DAYS] [--logs DAYS] [--searchhistory DAYS] [--restrictions DAYS] [--all-restrictions] [--fees DAYS] [--temp-uploads] [--temp-uploads-days DAYS] [--uploads-missing 0|1 ] [--statistics DAYS] [--deleted-catalog DAYS] [--deleted-patrons DAYS] [--old-issues DAYS] [--old-reserves DAYS] [--transfers DAYS] [--labels DAYS] [--cards DAYS] [--bg-days DAYS [--bg-type TYPE] ] [--edifact-messages DAYS]
56
58
57
   -h --help          prints this help message, and exits, ignoring all
59
   -h --help          prints this help message, and exits, ignoring all
58
                      other options
60
                      other options
Lines 113-118 Usage: $0 [-h|--help] [--confirm] [--sessions] [--sessdays DAYS] [-v|--verbose] Link Here
113
   --jobs-days DAYS        Purge all finished background jobs this many days old. Defaults to 1 if no DAYS provided.
115
   --jobs-days DAYS        Purge all finished background jobs this many days old. Defaults to 1 if no DAYS provided.
114
   --jobs-type TYPES       What type of background job to purge. Defaults to "update_elastic_index" if omitted
116
   --jobs-type TYPES       What type of background job to purge. Defaults to "update_elastic_index" if omitted
115
                           Specifying "all" will purge all types. Repeatable.
117
                           Specifying "all" will purge all types. Repeatable.
118
   --edifact-messages DAYS   Purge entries from edifact_messages table older than DAYS days.
119
                             Defaults to 365 days if no days specified.
116
USAGE
120
USAGE
117
    exit $_[0];
121
    exit $_[0];
118
}
122
}
Lines 156-161 my @log_modules; Link Here
156
my @preserve_logs;
160
my @preserve_logs;
157
my $jobs_days;
161
my $jobs_days;
158
my @jobs_types;
162
my @jobs_types;
163
my $edifact_msg_days;
159
164
160
my $command_line_options = join(" ",@ARGV);
165
my $command_line_options = join(" ",@ARGV);
161
166
Lines 200-205 GetOptions( Link Here
200
    'return-claims'     => \$return_claims,
205
    'return-claims'     => \$return_claims,
201
    'jobs-type:s'       => \@jobs_types,
206
    'jobs-type:s'       => \@jobs_types,
202
    'jobs-days:i'       => \$jobs_days,
207
    'jobs-days:i'       => \$jobs_days,
208
    'edifact-messages:i' => \$edifact_msg_days,
203
) || usage(1);
209
) || usage(1);
204
210
205
# Use default values
211
# Use default values
Lines 214-219 $pDebarments = DEFAULT_DEBARMENTS_PURGEDAYS if defined($pDebarment Link Here
214
$pMessages         = DEFAULT_MESSAGES_PURGEDAYS           if defined($pMessages)         && $pMessages == 0;
220
$pMessages         = DEFAULT_MESSAGES_PURGEDAYS           if defined($pMessages)         && $pMessages == 0;
215
$jobs_days         = DEFAULT_JOBS_PURGEDAYS               if defined($jobs_days)         && $jobs_days == 0;
221
$jobs_days         = DEFAULT_JOBS_PURGEDAYS               if defined($jobs_days)         && $jobs_days == 0;
216
@jobs_types        = (DEFAULT_JOBS_PURGETYPES)            if $jobs_days                  && @jobs_types == 0;
222
@jobs_types        = (DEFAULT_JOBS_PURGETYPES)            if $jobs_days                  && @jobs_types == 0;
223
$edifact_msg_days  = DEFAULT_EDIFACT_MSG_PURGEDAYS        if defined($edifact_msg_days)  && $edifact_msg_days == 0;
217
224
218
if ($help) {
225
if ($help) {
219
    usage(0);
226
    usage(0);
Lines 252-257 unless ( $sessions Link Here
252
    || $cards
259
    || $cards
253
    || $return_claims
260
    || $return_claims
254
    || $jobs_days
261
    || $jobs_days
262
    || $edifact_msg_days
255
) {
263
) {
256
    print "You did not specify any cleanup work for the script to do.\n\n";
264
    print "You did not specify any cleanup work for the script to do.\n\n";
257
    usage(1);
265
    usage(1);
Lines 713-718 if ($jobs_days) { Link Here
713
    }
721
    }
714
}
722
}
715
723
724
if($edifact_msg_days) {
725
    print "Purging edifact messages older than $edifact_msg_days days.\n" if $verbose;
726
    my $count = PurgeEdifactMessages($edifact_msg_days, $confirm);
727
    if ( $verbose ) {
728
        say $confirm
729
          ? sprintf( "Done with purging %d edifact messages", $count )
730
          : sprintf( "%d edifact messages would have been removed", $count );
731
    }
732
}
733
716
cronlogaction({ action => 'End', info => "COMPLETED" });
734
cronlogaction({ action => 'End', info => "COMPLETED" });
717
735
718
exit(0);
736
exit(0);
Lines 851-853 sub DeleteSpecialHolidays { Link Here
851
    print "Removed $count unique holidays\n" if $verbose;
869
    print "Removed $count unique holidays\n" if $verbose;
852
}
870
}
853
871
854
- 
872
sub PurgeEdifactMessages {
873
    my ( $days, $doit ) = @_;
874
875
    my $count = 0;
876
    my $schema = Koha::Database->new()->schema();
877
878
    $sth = $dbh->prepare(
879
        q{
880
            SELECT id
881
            FROM edifact_messages
882
            WHERE transfer_date < date_sub(curdate(), INTERVAL ? DAY)
883
        }
884
    );
885
    $sth->execute($days) or die $dbh->errstr;
886
887
    while ( my ($msg_id) = $sth->fetchrow_array) {
888
        my $msg = $schema->resultset('EdifactMessage')->find($msg_id);
889
        $msg->delete if $doit;
890
        $count++;
891
    }
892
    return $count;
893
}

Return to bug 30069