From 998eb9d981506241681fa2fc4684b9239de311ee Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sun, 12 Oct 2003 23:56:56 +0000 Subject: [PATCH] added purge --- lib/WebGUI/Forum.pm | 21 +++++++++++++++++++++ lib/WebGUI/Wobject.pm | 5 +++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/WebGUI/Forum.pm b/lib/WebGUI/Forum.pm index 8cfafbb1d..f896b5117 100644 --- a/lib/WebGUI/Forum.pm +++ b/lib/WebGUI/Forum.pm @@ -66,6 +66,27 @@ sub new { bless {_properties=>$properties}, $self; } +sub purge { + my ($self); + my $a = WebGUI::SQL->read("select * from forumThread where forumId=".$self->get("forumId")); + while (my ($threadId) = $a->array) { + my $b = WebGUI::SQL->read("select * from forumPost where forumThreadId=".$threadId); + while (my ($postId) = $b->array) { + WebGUI::SQL->write("delete from forumPostAttachment where forumPostId=".$postId); + WebGUI::SQL->write("delete from forumPostRating where forumPostId=".$postId); + WebGUI::SQL->write("delete from forumBookmark where forumPostId=".$postId); + } + $b->finish; + WebGUI::SQL->write("delete from forumThreadSubscription where forumThreadId=".$threadId); + WebGUI::SQL->write("delete from forumRead where forumThreadId=".$threadId); + WebGUI::SQL->write("delete from forumPost where forumThreadId=".$threadId); + } + $a->finish; + WebGUI::SQL->write("delete from forumSubscription where forumId=".$self->get("forumId")); + WebGUI::SQL->write("delete from forumThread where forumId=".$self->get("forumId")); + WebGUI::SQL->write("delete from forum where forumId=".$self->get("forumId")); +} + sub recalculateRating { my ($self) = @_; my ($count) = WebGUI::SQL->quickArray("select count(*) from forumThread where forumId=".$self->get("forumId")." and rating>0"); diff --git a/lib/WebGUI/Wobject.pm b/lib/WebGUI/Wobject.pm index 1dacb92b7..0eeea4ee2 100644 --- a/lib/WebGUI/Wobject.pm +++ b/lib/WebGUI/Wobject.pm @@ -745,10 +745,11 @@ NOTE: This method is meant to be extended by all sub-classes. =cut sub purge { - my ($node); + my WebGUI::Forum->new($_[0]->get("forumId")); + $forum->purge; WebGUI::SQL->write("delete from ".$_[0]->get("namespace")." where wobjectId=".$_[0]->get("wobjectId")); WebGUI::SQL->write("delete from wobject where wobjectId=".$_[0]->get("wobjectId")); - $node = WebGUI::Node->new($_[0]->get("wobjectId")); + my $node = WebGUI::Node->new($_[0]->get("wobjectId")); $node->delete; }