|
Lines 20-27
Link Here
|
| 20 |
use strict; |
20 |
use strict; |
| 21 |
use warnings; |
21 |
use warnings; |
| 22 |
|
22 |
|
| 23 |
BEGIN { |
23 |
use constant DEFAULT_ZEBRAQ_PURGEDAYS => 30; |
|
|
24 |
use constant DEFAULT_IMPORT_PURGEDAYS => 60; |
| 25 |
use constant DEFAULT_LOGS_PURGEDAYS => 180; |
| 24 |
|
26 |
|
|
|
27 |
BEGIN { |
| 25 |
# find Koha's Perl modules |
28 |
# find Koha's Perl modules |
| 26 |
# test carefully before changing this |
29 |
# test carefully before changing this |
| 27 |
use FindBin; |
30 |
use FindBin; |
|
Lines 31-44
BEGIN {
Link Here
|
| 31 |
use C4::Context; |
34 |
use C4::Context; |
| 32 |
use C4::Dates; |
35 |
use C4::Dates; |
| 33 |
|
36 |
|
| 34 |
#use C4::Debug; |
|
|
| 35 |
#use C4::Letters; |
| 36 |
#use File::Spec; |
| 37 |
use Getopt::Long; |
37 |
use Getopt::Long; |
| 38 |
|
38 |
|
| 39 |
sub usage { |
39 |
sub usage { |
| 40 |
print STDERR <<USAGE; |
40 |
print STDERR <<USAGE; |
| 41 |
Usage: $0 [-h|--help] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged] |
41 |
Usage: $0 [-h|--help] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged] [--import DAYS] [--logs DAYS] |
| 42 |
|
42 |
|
| 43 |
-h --help prints this help message, and exits, ignoring all |
43 |
-h --help prints this help message, and exits, ignoring all |
| 44 |
other options |
44 |
other options |
|
Lines 47-61
Usage: $0 [-h|--help] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueu
Link Here
|
| 47 |
--sessdays DAYS purge only sessions older than DAYS days. |
47 |
--sessdays DAYS purge only sessions older than DAYS days. |
| 48 |
-v --verbose will cause the script to give you a bit more information |
48 |
-v --verbose will cause the script to give you a bit more information |
| 49 |
about the run. |
49 |
about the run. |
| 50 |
--zebraqueue DAYS purge completed entries from the zebraqueue from |
50 |
--zebraqueue DAYS purge completed zebraqueue entries older than DAYS days. |
| 51 |
more than DAYS days ago. |
51 |
Defaults to 30 days if no days specified. |
| 52 |
-m --mail purge the mail queue. |
52 |
-m --mail purge the mail queue. |
| 53 |
--merged purged completed entries from need_merge_authorities. |
53 |
--merged purged completed entries from need_merge_authorities. |
|
|
54 |
--import DAYS purge records from import tables older than DAYS days. |
| 55 |
Defaults to 60 days if no days specified. |
| 56 |
--logs DAYS purge entries from action_logs older than DAYS days. |
| 57 |
Defaults to 180 days if no days specified. |
| 54 |
USAGE |
58 |
USAGE |
| 55 |
exit $_[0]; |
59 |
exit $_[0]; |
| 56 |
} |
60 |
} |
| 57 |
|
61 |
|
| 58 |
my ( $help, $sessions, $sess_days, $verbose, $zebraqueue_days, $mail, $purge_merged); |
62 |
my ( $help, $sessions, $sess_days, $verbose, $zebraqueue_days, $mail, $purge_merged, $pImport, $pLogs); |
| 59 |
|
63 |
|
| 60 |
GetOptions( |
64 |
GetOptions( |
| 61 |
'h|help' => \$help, |
65 |
'h|help' => \$help, |
|
Lines 65-78
GetOptions(
Link Here
|
| 65 |
'm|mail' => \$mail, |
69 |
'm|mail' => \$mail, |
| 66 |
'zebraqueue:i' => \$zebraqueue_days, |
70 |
'zebraqueue:i' => \$zebraqueue_days, |
| 67 |
'merged' => \$purge_merged, |
71 |
'merged' => \$purge_merged, |
|
|
72 |
'import:i' => \$pImport, |
| 73 |
'logs:i' => \$pLogs, |
| 68 |
) || usage(1); |
74 |
) || usage(1); |
|
|
75 |
|
| 69 |
$sessions=1 if $sess_days && $sess_days>0; |
76 |
$sessions=1 if $sess_days && $sess_days>0; |
|
|
77 |
# if --import, --logs or --zebraqueue were passed without number of days, |
| 78 |
# use defaults |
| 79 |
$pImport= DEFAULT_IMPORT_PURGEDAYS if defined($pImport) && $pImport==0; |
| 80 |
$pLogs= DEFAULT_LOGS_PURGEDAYS if defined($pLogs) && $pLogs==0; |
| 81 |
$zebraqueue_days= DEFAULT_ZEBRAQ_PURGEDAYS if defined($zebraqueue_days) && $zebraqueue_days==0; |
| 70 |
|
82 |
|
| 71 |
if ($help) { |
83 |
if ($help) { |
| 72 |
usage(0); |
84 |
usage(0); |
| 73 |
} |
85 |
} |
| 74 |
|
86 |
|
| 75 |
if ( !( $sessions || $zebraqueue_days || $mail || $purge_merged) ) { |
87 |
if ( !( $sessions || $zebraqueue_days || $mail || $purge_merged || $pImport || $pLogs) ) { |
| 76 |
print "You did not specify any cleanup work for the script to do.\n\n"; |
88 |
print "You did not specify any cleanup work for the script to do.\n\n"; |
| 77 |
usage(1); |
89 |
usage(1); |
| 78 |
} |
90 |
} |
|
Lines 145-150
if($purge_merged) {
Link Here
|
| 145 |
print "Done with purging need_merge_authorities.\n" if $verbose; |
157 |
print "Done with purging need_merge_authorities.\n" if $verbose; |
| 146 |
} |
158 |
} |
| 147 |
|
159 |
|
|
|
160 |
if($pImport) { |
| 161 |
print "Purging records from import tables.\n" if $verbose; |
| 162 |
PurgeImportTables(); |
| 163 |
print "Done with purging import tables.\n" if $verbose; |
| 164 |
} |
| 165 |
|
| 166 |
if($pLogs) { |
| 167 |
print "Purging records from action_logs.\n" if $verbose; |
| 168 |
$sth = $dbh->prepare("DELETE FROM action_logs WHERE timestamp < date_sub(curdate(), interval ? DAY)"); |
| 169 |
$sth->execute($pLogs) or die $dbh->errstr; |
| 170 |
print "Done with purging action_logs.\n" if $verbose; |
| 171 |
} |
| 172 |
|
| 148 |
exit(0); |
173 |
exit(0); |
| 149 |
|
174 |
|
| 150 |
sub RemoveOldSessions { |
175 |
sub RemoveOldSessions { |
|
Lines 173-175
sub RemoveOldSessions {
Link Here
|
| 173 |
print "$count sessions were deleted.\n"; |
198 |
print "$count sessions were deleted.\n"; |
| 174 |
} |
199 |
} |
| 175 |
} |
200 |
} |
| 176 |
- |
201 |
|
|
|
202 |
sub PurgeImportTables { |
| 203 |
#First purge import_records |
| 204 |
#Delete cascades to import_biblios, import_items and import_record_matches |
| 205 |
$sth = $dbh->prepare("DELETE FROM import_records WHERE upload_timestamp < date_sub(curdate(), interval ? DAY)"); |
| 206 |
$sth->execute($pImport) or die $dbh->errstr; |
| 207 |
|
| 208 |
# Now purge import_batches |
| 209 |
# Timestamp cannot be used here without care, because records are added |
| 210 |
# continuously to batches without updating timestamp (z3950 search). |
| 211 |
# So we only delete older empty batches. |
| 212 |
# This delete will therefore not have a cascading effect. |
| 213 |
$sth = $dbh->prepare("DELETE ba |
| 214 |
FROM import_batches ba |
| 215 |
LEFT JOIN import_records re ON re.import_batch_id=ba.import_batch_id |
| 216 |
WHERE re.import_record_id IS NULL AND |
| 217 |
ba.upload_timestamp < date_sub(curdate(), interval ? DAY)"); |
| 218 |
$sth->execute($pImport) or die $dbh->errstr; |
| 219 |
} |