From fe9edd4901dcb681797b5286895bfa6d14736ef5 Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Tue, 2 Mar 2004 21:19:32 +0000 Subject: [PATCH] Modified the Trash subsystem to use WebGUI::Page. --- lib/WebGUI/Operation/Trash.pm | 68 +++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/lib/WebGUI/Operation/Trash.pm b/lib/WebGUI/Operation/Trash.pm index 71ec994ba..554fe9308 100644 --- a/lib/WebGUI/Operation/Trash.pm +++ b/lib/WebGUI/Operation/Trash.pm @@ -26,13 +26,9 @@ our @ISA = qw(Exporter); our @EXPORT = qw(&www_cutTrashItem &www_deleteTrashItem &www_deleteTrashItemConfirm &www_emptyTrash &www_emptyTrashConfirm &www_manageTrash); -#------------------------------------------------------------------- -sub _purgePage { -} - #------------------------------------------------------------------- sub _purgeUserTrash { - my (%properties, $base, $extended, $b, $wobjectId, $namespace, $w, $cmd, $userId, $bufferId, $a, $pageId); + my (%properties, $base, $extended, $b, $wobjectId, $namespace, $w, $cmd, $userId, $bufferId, $page, $currentPage, $currentWobjectPage); tie %properties, 'Tie::CPHash'; $userId = $session{user}{userId}; @@ -52,13 +48,16 @@ sub _purgeUserTrash { $b->finish; # Delete pages and all subpages - $a = WebGUI::SQL->read("select pageId from page where parentId=3 and bufferUserId=" . $userId); - while (($pageId) = $a->array) { - _recursePageTree($pageId); - _purgeWobjects($pageId); - WebGUI::SQL->write("delete from page where pageId=$pageId"); - } - $a->finish; + $page = WebGUI::Page->getPage(3); + foreach $currentPage ($page->daughters) { + print "page: ".$currentPage->get('menuTitle')." - UID: ".$currentPage->get('bufferUserId')."\n\n\n
"; + if ($currentPage->get('bufferUserId') == $userId) { + foreach $currentWobjectPage ($currentPage->self_and_descendants) { + _purgeWobjects($currentWobjectPage->get('pageId')); + } + $currentPage->purge; + } + } } #------------------------------------------------------------------- @@ -139,19 +138,19 @@ sub www_cutTrashItem { ."where wobjectId=" .$session{form}{wid}); WebGUI::ErrorHandler::audit("moved wobject ". $session{form}{wid} ." from trash to clipboard"); } elsif ($session{form}{pageId} ne "") { + my $page = WebGUI::Page->getPage($session{form}{pageId}); + if ( ($session{setting}{sharedTrash} ne "1") && (!(WebGUI::Privilege::isInGroup(3)) ) ) { - my ($bufferUserId) = WebGUI::SQL->quickArray("select bufferUserId from page " - ."where pageId=" .$session{form}{pageId}); + my ($bufferUserId) = $page->get("bufferUserId"); return WebGUI::Privilege::insufficient() unless ($bufferUserId eq $session{user}{userId}); } - WebGUI::SQL->write("update page set parentId=2, " - ."bufferUserId=". $session{user}{userId} .", " - ."bufferDate=". time() .", " - ."bufferPrevId=3 " - ."where pageId=" .$session{form}{pageId}); + + $page->cut; + WebGUI::ErrorHandler::audit("moved page ". $session{form}{pageId} ." from trash to clipboard"); } WebGUI::Session::refreshPageInfo($session{page}{pageId}); + return ""; } @@ -192,18 +191,19 @@ sub www_deleteTrashItemConfirm { } WebGUI::ErrorHandler::audit("purged wobject ". $session{form}{wid} ." from trash"); } elsif ($session{form}{pageId} ne "") { - if ( ($session{setting}{sharedTrash} eq "1") || (WebGUI::Privilege::isInGroup(3)) ) { - _recursePageTree($session{form}{pageId}); - _purgeWobjects($session{form}{pageId}); - WebGUI::SQL->write("delete from page where pageId=" .$session{form}{pageId}); - } else { - my ($bufferUserId) = WebGUI::SQL->quickArray("select bufferUserId from page " - ."where pageId=" .$session{form}{pageId}); + my $page = WebGUI::Page->getPage($session{form}{pageId}); + + unless ( ($session{setting}{sharedTrash} eq "1") || (WebGUI::Privilege::isInGroup(3)) ) { + my ($bufferUserId) = $page->get("bufferUserId"); return WebGUI::Privilege::insufficient() unless ($bufferUserId eq $session{user}{userId}); - _recursePageTree($session{form}{pageId}); - _purgeWobjects($session{form}{pageId}); - WebGUI::SQL->write("delete from page where pageId=" .$session{form}{pageId}); } + + foreach my $currentPage ($page->self_and_descendants) { + _purgeWobjects($currentPage->get("pageId")); + } + + $page->purge; + WebGUI::ErrorHandler::audit("purged page ". $session{form}{pageId} ." from trash"); } WebGUI::Session::refreshPageInfo($session{page}{pageId}); @@ -233,7 +233,7 @@ sub www_emptyTrash { #------------------------------------------------------------------- sub www_emptyTrashConfirm { return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4)); - my ($allUsers); + my ($allUsers, $page, $currentPage, $currentWobjectPage); if ($session{setting}{sharedTrash} eq "1") { $allUsers = 1; } elsif ($session{form}{systemTrash} eq "1") { @@ -243,7 +243,13 @@ sub www_emptyTrashConfirm { $allUsers = 0; } if ($allUsers eq "1") { - _recursePageTree(3); + $page = WebGUI::Page->getPage(3); + foreach $currentPage ($page->daughters) { + foreach $currentWobjectPage ($currentPage->self_and_descendants) { + _purgeWobjects($currentPage->get("pageId")); + } + $page->purge; + } _purgeWobjects(3); WebGUI::ErrorHandler::audit("emptied system trash"); } else {