migrate delete expired trash to workflow

This commit is contained in:
JT Smith 2006-03-02 21:15:20 +00:00
parent 346de5ff0b
commit 11a2c5d099
5 changed files with 116 additions and 43 deletions

View file

@ -179,6 +179,9 @@ sub addWorkflow {
$activity = $workflow->addActivity("WebGUI::Workflow::Activity::PurgeOldAssetRevisions", "pbwfactivity0000000008");
$activity->set("title", "delete asset revisions older than a year from the database");
$activity->set("purgeAfter", 60*60*24*365);
$activity = $workflow->addActivity("WebGUI::Workflow::Activity::PurgeOldTrash", "pbwfactivity0000000010");
$activity->set("title", "delete assets from trash that have been sitting around for 30 days");
$activity->set("purgeAfter", 60*60*24*30);
WebGUI::Workflow::Cron->create($session, {
title=>'Weekly Maintenance',
enabled=>1,
@ -214,6 +217,8 @@ sub addWorkflow {
$session->config->delete("DeleteExpiredClipboard_offset");
$session->config->delete("DeleteExpiredEvents_offset");
$session->config->delete("TrashExpiredContent_offset");
$session->config->delete("DeleteExpiredTrash_offset");
$session->config->delete("DeleteExpiredRevisions_offset");
$workflow = WebGUI::Workflow->create($session, {
title=>"Commit Without Approval",
description=>"This workflow commits all the assets in this version tag without asking for any approval.",

View file

@ -283,16 +283,6 @@
"passiveProfileInterval" : 86400,
# Specify the number of days content should remain in the trash
# before it gets purged from the system completely.
"DeleteExpiredTrash_offset" : 30,
# Specify the number of days old revisions of assets should remain
# available for rollbacks.
"DeleteExpiredRevisions_offset" : 365,
# What hour of the day (for example, 22 : 10 PM = 22:00:00)
# should WebGUI try to synchronize user profile information from
# the LDAP server. Note that this will only happen for users

View file

@ -0,0 +1,92 @@
package WebGUI::Workflow::Activity::PurgeOldTrash;
=head1 LEGAL
-------------------------------------------------------------------
WebGUI is Copyright 2001-2006 Plain Black Corporation.
-------------------------------------------------------------------
Please read the legal notices (docs/legal.txt) and the license
(docs/license.txt) that came with this distribution before using
this software.
-------------------------------------------------------------------
http://www.plainblack.com info@plainblack.com
-------------------------------------------------------------------
=cut
use strict;
use base 'WebGUI::Workflow::Activity';
use WebGUI::Asset;
=head1 NAME
Package WebGUI::Workflow::Activity::PurgeOldTrash
=head1 DESCRIPTION
Purges trash that's been in the system for a while.
=head1 SYNOPSIS
See WebGUI::Workflow::Activity for details on how to use any activity.
=head1 METHODS
These methods are available from this class:
=cut
#-------------------------------------------------------------------
=head2 definition ( session, definition )
See WebGUI::Workflow::Activity::defintion() for details.
=cut
sub definition {
my $class = shift;
my $session = shift;
my $definition = shift;
my $i18n = WebGUI::International->new($session, "Asset");
push(@{$definition}, {
name=>$i18n->get("purge old trash"),
properties=> {
purgeAfter=>{
fieldType=>"interval",
defaultValue=>60*60*24*30,
label=>$i18n->get("purge trash after"),
hoverHelp=>$i18n->get("purge trash after help")
}
}
});
return $class->SUPER::definition($session,$definition);
}
#-------------------------------------------------------------------
=head2 execute ( )
See WebGUI::Workflow::Activity::execute() for details.
=cut
sub execute {
my $self = shift;
my $sth = $self->session->db->read("select assetId,className from asset where state='trash' and stateChanged < ?", [time() - $self->get("purgeAfter")]);
while (my ($id, $class) = $sth->array) {
my $asset = WebGUI::Asset->new($self->session, $id,$class);
$asset->purge if (defined $asset);
}
return 1;
}
1;

View file

@ -6,6 +6,25 @@ our $I18N = {
lastUpdated => 0,
context => q|a suffix for a measurement of time, like "3 seconds ago"|
},
'purge old trash' => {
message => q|Purge Old Trash|,
lastUpdated => 0,
context => q|title of the purge trash workflow activity|
},
'purge trash after' => {
message => q|Purge Old Trash After|,
lastUpdated => 0,
context => q|the label used in the purge old trash workflow activity|
},
'purge trash after help' => {
message => q|How long should an asset stay in the trash before it's considered old enough to purge? Note that when it get's purged all it's revisions and descendants will be purged as well.|,
lastUpdated => 0,
context => q|the hover help for the purge trash after field|
},
'purge old asset revisions' => {
message => q|Purge Old Asset Revisions|,
lastUpdated => 0,

View file

@ -1,33 +0,0 @@
package Hourly::DeleteExpiredTrash;
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2006 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#-------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#-------------------------------------------------------------------
use strict;
use WebGUI::Asset;
use WebGUI::Session;
use WebGUI::SQL;
#-----------------------------------------
sub process {
if ($session{config}{DeleteExpiredTrash_offset} ne "") {
my $expireDate = (time()-(86400*$session{config}{DeleteExpiredTrash_offset}));
my $sth = WebGUI::SQL->read("select assetId,className from asset where state='trash' and stateChanged <".$expireDate);
while (my ($id, $class) = $sth->array) {
my $asset = WebGUI::Asset->new($id,$class);
$asset->purge;
}
$sth->finish;
}
}
1;