From 90d124de32df04c14f13d8837e997a5e3194acf4 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 23 Feb 2005 22:03:54 +0000 Subject: [PATCH] more bug fixes --- docs/gotcha.txt | 4 +++ sbin/Hourly/ArchiveOldPosts.pm | 6 ++--- sbin/Hourly/DeleteExpiredClipboard.pm | 13 ++++------ sbin/Hourly/DeleteExpiredTrash.pm | 36 ++++++--------------------- sbin/Hourly/EmptyTrash.pm | 31 ----------------------- sbin/Hourly/TrashExpiredContent.pm | 11 ++++---- 6 files changed, 23 insertions(+), 78 deletions(-) delete mode 100644 sbin/Hourly/EmptyTrash.pm diff --git a/docs/gotcha.txt b/docs/gotcha.txt index 1ad3db9e1..6b2b924b1 100644 --- a/docs/gotcha.txt +++ b/docs/gotcha.txt @@ -28,6 +28,10 @@ save you many hours of grief. still being upgraded. Each site will have a maintenance message displayed until its upgrade is complete. + * The EmptyTrash scheduler plugin has been removed since there's no + need for it with the more useful DeleteExpiredTrash module in + place. + * This upgrade process will run for a very long time and output a lot of debug information which will be useful if something goes wrong. You may wish to pipe the debug info to a log diff --git a/sbin/Hourly/ArchiveOldPosts.pm b/sbin/Hourly/ArchiveOldPosts.pm index 36b2cdd81..14bdd0a3d 100644 --- a/sbin/Hourly/ArchiveOldPosts.pm +++ b/sbin/Hourly/ArchiveOldPosts.pm @@ -18,12 +18,10 @@ use WebGUI::SQL; #----------------------------------------- sub process { + return ""; # disabled for the time being my $epoch = WebGUI::DateTime::time(); - my $a = WebGUI::SQL->read("select forumId,archiveAfter,masterForumId from forum"); + my $a = WebGUI::SQL->read("select assetId,archiveAfter,masterForumId from forum"); while (my $forum = $a->hashRef) { - if ($forum->{masterForumId}) { - ($forum->{archiveAfter}) = WebGUI::SQL->quickArray("select archiveAfter from forum where masterForumId=".quote($forum->{masterForumId})); - } my $archiveDate = $epoch - $forum->{archiveAfter}; my $b = WebGUI::SQL->read("select forumThreadId from forumThread where forumId=".quote($forum->{forumId})." and lastPostDate<$archiveDate"); while (my ($threadId) = $b->array) { diff --git a/sbin/Hourly/DeleteExpiredClipboard.pm b/sbin/Hourly/DeleteExpiredClipboard.pm index 90fba4f7b..e9547ec3a 100644 --- a/sbin/Hourly/DeleteExpiredClipboard.pm +++ b/sbin/Hourly/DeleteExpiredClipboard.pm @@ -12,8 +12,8 @@ package Hourly::DeleteExpiredClipboard; use strict; +use WebGUI::Asset; use WebGUI::DateTime; -use WebGUI::Page; use WebGUI::Session; use WebGUI::SQL; @@ -21,15 +21,12 @@ use WebGUI::SQL; sub process { if ($session{config}{DeleteExpiredClipboard_offset} ne "") { my $expireDate = (time()-(86400*$session{config}{DeleteExpiredClipboard_offset})); - WebGUI::ErrorHandler::audit("moving expired clipboard items to trash"); - my $sth = WebGUI::SQL->read("select pageId from page where parentId=2 and bufferDate <".$expireDate); - while (my ($pageId) = $sth->array) { - my $page = WebGUI::Page->new($pageId); - $page->delete; + my $sth = WebGUI::SQL->read("select assetId,className from asset where state='clipboard' and lastUpdated <".$expireDate); + while (my ($id, $class) = $sth->array) { + my $asset = WebGUI::Asset->newByDynamicClass($id,$class); + $asset->trash; } $sth->finish; - WebGUI::SQL->write("update wobject set pageId=3, bufferPrevId=2, bufferDate=" .WebGUI::DateTime::time() - ." where pageId=2 and bufferDate < ". $expireDate ); } } diff --git a/sbin/Hourly/DeleteExpiredTrash.pm b/sbin/Hourly/DeleteExpiredTrash.pm index d473df26a..b1ad68656 100644 --- a/sbin/Hourly/DeleteExpiredTrash.pm +++ b/sbin/Hourly/DeleteExpiredTrash.pm @@ -12,43 +12,21 @@ package Hourly::DeleteExpiredTrash; use strict; +use WebGUI::Asset; use WebGUI::DateTime; -use WebGUI::Page; use WebGUI::Session; use WebGUI::SQL; #----------------------------------------- sub process { if ($session{config}{DeleteExpiredTrash_offset} ne "") { - my (%properties, $base, $extended, $b, $w, $cmd, $purgeDate, $a, $pageId); - tie %properties, 'Tie::CPHash'; - - $purgeDate = (WebGUI::DateTime::time()-(86400*$session{config}{DeleteExpiredTrash_offset})); - - # Delete wobjects - $b = WebGUI::SQL->read("select * from wobject where pageId=3 and bufferDate<" . $purgeDate); - while ($base = $b->hashRef) { - $extended = WebGUI::SQL->quickHashRef("select * from ".$base->{namespace}." - where wobjectId=".quote($base->{wobjectId})); - %properties = (%{$base}, %{$extended}); - $cmd = "WebGUI::Wobject::".$properties{namespace}; - $w = $cmd->new(\%properties); - WebGUI::ErrorHandler::audit("purging expired wobject ". $base->{wobjectId} ." from trash"); - $w->purge; - + my $expireDate = (time()-(86400*$session{config}{DeleteExpiredTrash_offset})); + my $sth = WebGUI::SQL->read("select assetId,className from asset where state='trash' and lastUpdated <".$expireDate); + while (my ($id, $class) = $sth->array) { + my $asset = WebGUI::Asset->newByDynamicClass($id,$class); + $asset->purge; } - $b->finish; - - # Delete pages and all subpages - $a = WebGUI::SQL->read("select pageId from page where parentId=3 and bufferDate<" . $purgeDate); - while (($pageId) = $a->array) { - WebGUI::ErrorHandler::audit("purging expired page ". $pageId ." from trash"); - WebGUI::Operation::Trash::_recursePageTree($pageId); - WebGUI::Operation::Trash::_purgeWobjects($pageId); - my $page = WebGUI::Page->new($pageId); - $page->purge; - } - $a->finish; + $sth->finish; } } diff --git a/sbin/Hourly/EmptyTrash.pm b/sbin/Hourly/EmptyTrash.pm deleted file mode 100644 index e23a33bef..000000000 --- a/sbin/Hourly/EmptyTrash.pm +++ /dev/null @@ -1,31 +0,0 @@ -package Hourly::EmptyTrash; - -#------------------------------------------------------------------- -# WebGUI is Copyright 2001-2005 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::DateTime; -use WebGUI::Operation::Trash; -use WebGUI::Session; -use WebGUI::SQL; - -#----------------------------------------- -sub process { - my @date = WebGUI::DateTime::localtime(WebGUI::DateTime::time()); - if ($date[1] == $session{config}{EmptyTrash_day} && $date[4] == 1) { # only occurs at 1am on the day in question. - WebGUI::ErrorHandler::audit("emptying system trash"); - WebGUI::Operation::Trash::_recursePageTree(3); - WebGUI::Operation::Trash::_purgeWobjects(3); - - } -} - -1; - diff --git a/sbin/Hourly/TrashExpiredContent.pm b/sbin/Hourly/TrashExpiredContent.pm index e1300509f..2cd833856 100644 --- a/sbin/Hourly/TrashExpiredContent.pm +++ b/sbin/Hourly/TrashExpiredContent.pm @@ -11,8 +11,8 @@ package Hourly::TrashExpiredContent; #------------------------------------------------------------------- use strict; +use WebGUI::Asset; use WebGUI::DateTime; -use WebGUI::Page; use WebGUI::Session; use WebGUI::SQL; @@ -21,13 +21,12 @@ sub process { my $offset = $session{config}{TrashExpiredContent_offset}; if ($offset ne "") { my $epoch = time()-(86400*$offset); - my $sth = WebGUI::SQL->read("select pageId from page where endDate<".$epoch); - while (my ($pageId) = $sth->array) { - my $page = WebGUI::Page->new($pageId); - $page->delete; + my $sth = WebGUI::SQL->read("select assetId,className from asset where endDate<".$epoch); + while (my ($assetId, $class) = $sth->array) { + my $asset = WebGUI::Asset->newByDynamicClass($assetId,$class); + $asset->trash; } $sth->finish; - WebGUI::SQL->write("update wobject set pageId=3, endDate=endDate+31536000 where endDate<".$epoch); } }