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

(-)a/misc/cronjobs/cleanup_database.pl (-40 / +80 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 114-119 Usage: $0 [-h|--help] [--confirm] [--sessions] [--sessdays DAYS] [-v|--verbose] Link Here
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.
116
   --reports DAYS          Purge reports data saved more than DAYS days ago. The data is created by running runreport.pl with the --store-results option.
118
   --reports DAYS          Purge reports data saved more than DAYS days ago. The data is created by running runreport.pl with the --store-results option.
119
   --edifact-messages DAYS   Purge entries from edifact_messages table older than DAYS days.
120
                             Defaults to 365 days if no days specified.
117
USAGE
121
USAGE
118
    exit $_[0];
122
    exit $_[0];
119
}
123
}
Lines 158-208 my @preserve_logs; Link Here
158
my $jobs_days;
162
my $jobs_days;
159
my @jobs_types;
163
my @jobs_types;
160
my $reports;
164
my $reports;
165
my $edifact_msg_days;
161
166
162
my $command_line_options = join(" ",@ARGV);
167
my $command_line_options = join(" ",@ARGV);
163
168
164
GetOptions(
169
GetOptions(
165
    'h|help'            => \$help,
170
    'h|help'                     => \$help,
166
    'confirm'           => \$confirm,
171
    'confirm'                    => \$confirm,
167
    'sessions'          => \$sessions,
172
    'sessions'                   => \$sessions,
168
    'sessdays:i'        => \$sess_days,
173
    'sessdays:i'                 => \$sess_days,
169
    'v|verbose'         => \$verbose,
174
    'v|verbose'                  => \$verbose,
170
    'm|mail:i'          => \$mail,
175
    'm|mail:i'                   => \$mail,
171
    'zebraqueue:i'      => \$zebraqueue_days,
176
    'zebraqueue:i'               => \$zebraqueue_days,
172
    'merged'            => \$purge_merged,
177
    'merged'                     => \$purge_merged,
173
    'import:i'          => \$pImport,
178
    'import:i'                   => \$pImport,
174
    'z3950'             => \$pZ3950,
179
    'z3950'                      => \$pZ3950,
175
    'logs:i'            => \$pLogs,
180
    'logs:i'                     => \$pLogs,
176
    'log-module:s'      => \@log_modules,
181
    'log-module:s'               => \@log_modules,
177
    'preserve-log:s'    => \@preserve_logs,
182
    'preserve-log:s'             => \@preserve_logs,
178
    'messages:i'        => \$pMessages,
183
    'messages:i'                 => \$pMessages,
179
    'fees:i'            => \$fees_days,
184
    'fees:i'                     => \$fees_days,
180
    'searchhistory:i'   => \$pSearchhistory,
185
    'searchhistory:i'            => \$pSearchhistory,
181
    'list-invites:i'    => \$pListShareInvites,
186
    'list-invites:i'             => \$pListShareInvites,
182
    'restrictions:i'    => \$pDebarments,
187
    'restrictions:i'             => \$pDebarments,
183
    'all-restrictions'  => \$allDebarments,
188
    'all-restrictions'           => \$allDebarments,
184
    'del-exp-selfreg'   => \$pExpSelfReg,
189
    'del-exp-selfreg'            => \$pExpSelfReg,
185
    'del-unv-selfreg:i' => \$pUnvSelfReg,
190
    'del-unv-selfreg:i'          => \$pUnvSelfReg,
186
    'unique-holidays:i' => \$special_holidays_days,
191
    'unique-holidays:i'          => \$special_holidays_days,
187
    'temp-uploads'      => \$temp_uploads,
192
    'temp-uploads'               => \$temp_uploads,
188
    'temp-uploads-days:i' => \$temp_uploads_days,
193
    'temp-uploads-days:i'        => \$temp_uploads_days,
189
    'uploads-missing:i' => \$uploads_missing,
194
    'uploads-missing:i'          => \$uploads_missing,
190
    'oauth-tokens'      => \$oauth_tokens,
195
    'oauth-tokens'               => \$oauth_tokens,
191
    'statistics:i'      => \$pStatistics,
196
    'statistics:i'               => \$pStatistics,
192
    'deleted-catalog:i' => \$pDeletedCatalog,
197
    'deleted-catalog:i'          => \$pDeletedCatalog,
193
    'deleted-patrons:i' => \$pDeletedPatrons,
198
    'deleted-patrons:i'          => \$pDeletedPatrons,
194
    'old-issues:i'      => \$pOldIssues,
199
    'old-issues:i'               => \$pOldIssues,
195
    'old-reserves:i'    => \$pOldReserves,
200
    'old-reserves:i'             => \$pOldReserves,
196
    'transfers:i'       => \$pTransfers,
201
    'transfers:i'                => \$pTransfers,
197
    'pseudo-transactions:i'      => \$pPseudoTransactions,
202
    'pseudo-transactions:i'      => \$pPseudoTransactions,
198
    'pseudo-transactions-from:s' => \$pPseudoTransactionsFrom,
203
    'pseudo-transactions-from:s' => \$pPseudoTransactionsFrom,
199
    'pseudo-transactions-to:s'   => \$pPseudoTransactionsTo,
204
    'pseudo-transactions-to:s'   => \$pPseudoTransactionsTo,
200
    'labels'            => \$labels,
205
    'labels'                     => \$labels,
201
    'cards'             => \$cards,
206
    'cards'                      => \$cards,
202
    'return-claims'     => \$return_claims,
207
    'return-claims'              => \$return_claims,
203
    'jobs-type:s'       => \@jobs_types,
208
    'jobs-type:s'                => \@jobs_types,
204
    'jobs-days:i'       => \$jobs_days,
209
    'jobs-days:i'                => \$jobs_days,
205
    'reports:i'           => \$reports,
210
    'reports:i'                  => \$reports,
211
    'edifact-messages:i'         => \$edifact_msg_days,
206
) || usage(1);
212
) || usage(1);
207
213
208
# Use default values
214
# Use default values
Lines 217-222 $pDebarments = DEFAULT_DEBARMENTS_PURGEDAYS if defined($pDebarment Link Here
217
$pMessages         = DEFAULT_MESSAGES_PURGEDAYS           if defined($pMessages)         && $pMessages == 0;
223
$pMessages         = DEFAULT_MESSAGES_PURGEDAYS           if defined($pMessages)         && $pMessages == 0;
218
$jobs_days         = DEFAULT_JOBS_PURGEDAYS               if defined($jobs_days)         && $jobs_days == 0;
224
$jobs_days         = DEFAULT_JOBS_PURGEDAYS               if defined($jobs_days)         && $jobs_days == 0;
219
@jobs_types        = (DEFAULT_JOBS_PURGETYPES)            if $jobs_days                  && @jobs_types == 0;
225
@jobs_types        = (DEFAULT_JOBS_PURGETYPES)            if $jobs_days                  && @jobs_types == 0;
226
$edifact_msg_days  = DEFAULT_EDIFACT_MSG_PURGEDAYS        if defined($edifact_msg_days)  && $edifact_msg_days == 0;
220
227
221
if ($help) {
228
if ($help) {
222
    usage(0);
229
    usage(0);
Lines 256-261 unless ( $sessions Link Here
256
    || $return_claims
263
    || $return_claims
257
    || $jobs_days
264
    || $jobs_days
258
    || $reports
265
    || $reports
266
    || $edifact_msg_days
259
) {
267
) {
260
    print "You did not specify any cleanup work for the script to do.\n\n";
268
    print "You did not specify any cleanup work for the script to do.\n\n";
261
    usage(1);
269
    usage(1);
Lines 725-730 if ($reports) { Link Here
725
    }
733
    }
726
}
734
}
727
735
736
if($edifact_msg_days) {
737
    print "Purging edifact messages older than $edifact_msg_days days.\n" if $verbose;
738
    my $count = PurgeEdifactMessages($edifact_msg_days, $confirm);
739
    if ( $verbose ) {
740
        say $confirm
741
          ? sprintf( "Done with purging %d edifact messages", $count )
742
          : sprintf( "%d edifact messages would have been removed", $count );
743
    }
744
}
745
728
cronlogaction({ action => 'End', info => "COMPLETED" });
746
cronlogaction({ action => 'End', info => "COMPLETED" });
729
747
730
exit(0);
748
exit(0);
Lines 872-874 sub PurgeSavedReports { Link Here
872
        });
890
        });
873
    $sth->execute( $reports );
891
    $sth->execute( $reports );
874
}
892
}
875
- 
893
894
sub PurgeEdifactMessages {
895
    my ( $days, $doit ) = @_;
896
897
    my $count = 0;
898
    my $schema = Koha::Database->new()->schema();
899
900
    $sth = $dbh->prepare(
901
        q{
902
            SELECT id
903
            FROM edifact_messages
904
            WHERE transfer_date < date_sub(curdate(), INTERVAL ? DAY)
905
        }
906
    );
907
    $sth->execute($days) or die $dbh->errstr;
908
909
    while ( my ($msg_id) = $sth->fetchrow_array) {
910
        my $msg = $schema->resultset('EdifactMessage')->find($msg_id);
911
        $msg->delete if $doit;
912
        $count++;
913
    }
914
    return $count;
915
}

Return to bug 30069