From fd76365c1b7791adbb5978859142d2acb8b601f6 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Thu, 2 Dec 2004 17:00:30 +0000 Subject: [PATCH] added automatic file versioning to file assets --- docs/upgrades/upgrade_6.2.9-6.3.0.sql | 3 ++- lib/WebGUI/Asset.pm | 1 + lib/WebGUI/Asset/File.pm | 38 +++++++++++++++++++++++++-- lib/WebGUI/Operation/User.pm | 4 +-- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/docs/upgrades/upgrade_6.2.9-6.3.0.sql b/docs/upgrades/upgrade_6.2.9-6.3.0.sql index 5039c6f1e..497dc3bff 100644 --- a/docs/upgrades/upgrade_6.2.9-6.3.0.sql +++ b/docs/upgrades/upgrade_6.2.9-6.3.0.sql @@ -93,7 +93,8 @@ create table FileAsset ( assetId varchar(22) not null primary key, storageId varchar(22) not null, filename varchar(256) not null, - fileSize int not null + fileSize int not null, + olderVersions text ); INSERT INTO settings VALUES ('commerceCheckoutCanceledTemplateId','1'); diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index b0db394fe..dfa63e530 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -501,6 +501,7 @@ sub purge { } WebGUI::SQL->commit; $self = undef; + return 1; } sub setParent { diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm index 4364819da..b9bf397cd 100644 --- a/lib/WebGUI/Asset/File.pm +++ b/lib/WebGUI/Asset/File.pm @@ -74,7 +74,11 @@ sub definition { fileSize=>{ fieldType=>'hidden', defaultValue=>undef - } + }, + olderVersions=>{ + fieldType=>'hidden', + defaultValue=>undef + } } }); return $class->SUPER::definition($definition); @@ -117,6 +121,26 @@ sub getName { } +#------------------------------------------------------------------- + +=head2 purge + +=cut + +sub purge { + my $self = shift; + my @old = split("\n",$self->get("olderVersions")); + foreach my $oldone (@old) { + my ($storageId, $filename) = split("|",$oldone); + my $storage = WebGUI::Storage->new($storageId); + $storage->delete; + } + my $storage = WebGUI::Storage->new($self->get("storageId")); + $storage->delete; + return $self->SUPER::purge; +} + + #------------------------------------------------------------------- =head2 www_editSave @@ -131,11 +155,21 @@ sub www_editSave { my $storage = WebGUI::Storage->create; my $filename = $storage->addFileFromFormPost("file"); if (defined $filename) { + my $oldVersions; + if ($self->get($filename)) { # do file versioning + my @old = split("\n",$self->get("olderVersions")); + push(@old,$self->get{"storageId")."|".$self->get("filename")); + $oldVersions = join("\n",@old); + } $self->update({ filename=>$filename, storageId=>$storage->getId, - fileSize=>$storage->getFileSize + fileSize=>$storage->getFileSize, + olderVersions=>$oldVersions }); + } else { + $storage->delete; + } return ""; } diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index e1d7e2cc5..0acebeaa8 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -242,13 +242,13 @@ sub www_editUser { if ($u->userId eq $session{user}{userId}) { $tabform->getTab("account")->hidden("status",$u->status); } else { - $tabform->getTab("account")->select("status",\%status,$i18n->get(816),[$u->status]); + $tabform->getTab("account")->selectList("status",\%status,$i18n->get(816),[$u->status]); } my $options; foreach (@{$session{config}{authMethods}}) { $options->{$_} = $_; } - $tabform->getTab("account")->select( + $tabform->getTab("account")->selectList( -name=>"authMethod", -options=>$options, -label=>$i18n->get(164),