Merge remote-tracking branch 'origin/new/bug_6966'
[srvgit] / misc / cronjobs / cleanup_database.pl
index 1333111..12aa12b 100755 (executable)
@@ -38,23 +38,24 @@ use Getopt::Long;
 
 sub usage {
     print STDERR <<USAGE;
-Usage: $0 [-h|--help] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS]
-        [-m|--mail]
+Usage: $0 [-h|--help] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged]
+
    -h --help          prints this help message, and exits, ignoring all
                       other options
    --sessions         purge the sessions table.  If you use this while users 
                       are logged into Koha, they will have to reconnect.
-   --sessdays DAYS    purge only sessions older than DAYS days (use together with sessions parameter).
+   --sessdays DAYS    purge only sessions older than DAYS days.
    -v --verbose       will cause the script to give you a bit more information
                       about the run.
    --zebraqueue DAYS  purge completed entries from the zebraqueue from 
                       more than DAYS days ago.
    -m --mail          purge the mail queue. 
+   --merged           purged completed entries from need_merge_authorities.
 USAGE
     exit $_[0];
 }
 
-my ( $help, $sessions, $sess_days, $verbose, $zebraqueue_days, $mail );
+my ( $help, $sessions, $sess_days, $verbose, $zebraqueue_days, $mail, $purge_merged);
 
 GetOptions(
     'h|help'       => \$help,
@@ -63,13 +64,15 @@ GetOptions(
     'v|verbose'    => \$verbose,
     'm|mail'       => \$mail,
     'zebraqueue:i' => \$zebraqueue_days,
+    'merged'       => \$purge_merged,
 ) || usage(1);
+$sessions=1 if $sess_days && $sess_days>0;
 
 if ($help) {
     usage(0);
 }
 
-if ( !( $sessions || $zebraqueue_days || $mail ) ) {
+if ( !( $sessions || $zebraqueue_days || $mail || $purge_merged) ) {
     print "You did not specify any cleanup work for the script to do.\n\n";
     usage(1);
 }
@@ -134,6 +137,14 @@ if ($mail) {
     $sth->execute() or $dbh->errstr;
     print "Done with purging the mail queue.\n" if ($verbose);
 }
+
+if($purge_merged) {
+    print "Purging completed entries from need_merge_authorities.\n" if $verbose;
+    $sth = $dbh->prepare("DELETE FROM need_merge_authorities WHERE done=1");
+    $sth->execute() or die $dbh->errstr;
+    print "Done with purging need_merge_authorities.\n" if $verbose;
+}
+
 exit(0);
 
 sub RemoveOldSessions {
@@ -148,9 +159,9 @@ sub RemoveOldSessions {
 
     while ( $sth->fetch ) {
         $lasttime = 0;
-        if ( $a_session =~ /lasttime:\s+(\d+)/ ) {
+        if ( $a_session =~ /lasttime:\s+'?(\d+)/ ) {
             $lasttime = $1;
-        } elsif ( $a_session =~ /(ATIME|CTIME):\s+(\d+)/ ) {
+        } elsif ( $a_session =~ /(ATIME|CTIME):\s+'?(\d+)/ ) {
             $lasttime = $2;
         }
         if ( $lasttime && $lasttime < $limit ) {