diff --git a/docs/migration.txt b/docs/migration.txt
index a634eecfb..d14545dfa 100644
--- a/docs/migration.txt
+++ b/docs/migration.txt
@@ -813,6 +813,18 @@ perl -pi.bak -e 's!WebGUI\:\:ProfileField\-\>new\(!WebGUI::ProfileField->new(\$s
perl -pi.bak -e 's!WebGUI\:\:ProfileField\-\>create\(!WebGUI::ProfileField->create(\$self->session,!g' fileNameGoesHere
+5.23.21 WebGUI::Storage API Refactored
+
+The WebGUI::Storage API has been refactored to accept $session in it's
+constructors.
+
+perl -pi.bak -e 's!WebGUI\:\:Storage\-\>get\(!WebGUI::Storage->get(\$self->session,!g' fileNameGoesHere
+perl -pi.bak -e 's!WebGUI\:\:Storage\-\>create\(!WebGUI::Storage->create(\$self->session,!g' fileNameGoesHere
+perl -pi.bak -e 's!WebGUI\:\:Storage\:\:Image\-\>get\(!WebGUI::Storage::Image->get(\$self->session,!g' fileNameGoesHere
+perl -pi.bak -e 's!WebGUI\:\:Storage\:\:Image\-\>create\(!WebGUI::Storage::Image->create(\$self->session,!g' fileNameGoesHere
+perl -pi.bak -e 's!WebGUI\:\:Storage\-\>createTemp\(!WebGUI::Storage->createTemp(\$self->session,!g' fileNameGoesHere
+perl -pi.bak -e 's!WebGUI\:\:Storage\:\:Image\-\>createTemp\(!WebGUI::Storage::Image->createTemp(\$self->session,!g' fileNameGoesHere
+
6. Automatic list of Assets in Help System.
diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm
index 232577dd3..3f40dcc87 100644
--- a/lib/WebGUI/Asset/File.pm
+++ b/lib/WebGUI/Asset/File.pm
@@ -57,7 +57,7 @@ sub addRevision {
my $self = shift;
my $newSelf = $self->SUPER::addRevision(@_);
if ($self->get("storageId")) {
- my $newStorage = WebGUI::Storage->get($self->get("storageId"))->copy;
+ my $newStorage = WebGUI::Storage->get($self->session,$self->get("storageId"))->copy;
$newSelf->update({storageId=>$newStorage->getId});
}
return $newSelf;
@@ -184,7 +184,7 @@ sub getStorageLocation {
$self->{_storageLocation} = WebGUI::Storage->create;
$self->update({storageId=>$self->{_storageLocation}->getId});
} else {
- $self->{_storageLocation} = WebGUI::Storage->get($self->get("storageId"));
+ $self->{_storageLocation} = WebGUI::Storage->get($self->session,$self->get("storageId"));
}
}
return $self->{_storageLocation};
@@ -216,7 +216,7 @@ sub purge {
my $self = shift;
my $sth = $self->session->db->read("select storageId from FileAsset where assetId=".$self->session->db->quote($self->getId));
while (my ($storageId) = $sth->array) {
- WebGUI::Storage->get($storageId)->delete;
+ WebGUI::Storage->get($self->session,$storageId)->delete;
}
$sth->finish;
return $self->SUPER::purge;
diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm
index f3eebe3da..4ad431947 100644
--- a/lib/WebGUI/Asset/File/Image.pm
+++ b/lib/WebGUI/Asset/File/Image.pm
@@ -163,7 +163,7 @@ sub getStorageLocation {
$self->{_storageLocation} = WebGUI::Storage::Image->create;
$self->update({storageId=>$self->{_storageLocation}->getId});
} else {
- $self->{_storageLocation} = WebGUI::Storage::Image->get($self->get("storageId"));
+ $self->{_storageLocation} = WebGUI::Storage::Image->get($self->session,$self->get("storageId"));
}
}
return $self->{_storageLocation};
diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm
index 74ab0d200..f1037b503 100644
--- a/lib/WebGUI/Asset/Post.pm
+++ b/lib/WebGUI/Asset/Post.pm
@@ -51,7 +51,7 @@ sub addRevision {
my $self = shift;
my $newSelf = $self->SUPER::addRevision(@_);
if ($self->get("storageId")) {
- my $newStorage = WebGUI::Storage->get($self->get("storageId"))->copy;
+ my $newStorage = WebGUI::Storage->get($self->session,$self->get("storageId"))->copy;
$newSelf->update({storageId=>$newStorage->getId});
}
return $newSelf;
@@ -249,7 +249,7 @@ sub getAvatarUrl {
my $user = WebGUI::User->new($self->get('ownerUserId'));
#Get avatar field, storage Id.
my $storageId = $user->profileField("avatar");
- my $avatar = WebGUI::Storage::Image->get($storageId);
+ my $avatar = WebGUI::Storage::Image->get($self->session,$storageId);
if ($avatar) {
#Get url from storage object.
foreach my $imageName (@{$avatar->getFiles}) {
@@ -391,7 +391,7 @@ sub getStorageLocation {
$self->{_storageLocation} = WebGUI::Storage::Image->create;
$self->update({storageId=>$self->{_storageLocation}->getId});
} else {
- $self->{_storageLocation} = WebGUI::Storage::Image->get($self->get("storageId"));
+ $self->{_storageLocation} = WebGUI::Storage::Image->get($self->session,$self->get("storageId"));
}
}
return $self->{_storageLocation};
@@ -716,7 +716,7 @@ sub purge {
my $self = shift;
my $sth = $self->session->db->read("select storageId from Post where assetId=".$self->session->db->quote($self->getId));
while (my ($storageId) = $sth->array) {
- WebGUI::Storage->get($storageId)->delete;
+ WebGUI::Storage->get($self->session,$storageId)->delete;
}
$sth->finish;
$self->session->db->write("delete from Post_rating where assetId=".$self->session->db->quote($self->getId));
diff --git a/lib/WebGUI/Asset/Template.pm b/lib/WebGUI/Asset/Template.pm
index 9d5c3f031..d637bb81d 100644
--- a/lib/WebGUI/Asset/Template.pm
+++ b/lib/WebGUI/Asset/Template.pm
@@ -381,7 +381,7 @@ sub www_styleWizard {
my $storageId = $self->session->form->file("logo");
my $logo;
if ($storageId) {
- my $storage = WebGUI::Storage::Image->get($self->session->form->file("logo"));
+ my $storage = WebGUI::Storage::Image->get($self->session,$self->session->form->file("logo"));
$logo = $self->addChild({
className=>"WebGUI::Asset::File::Image",
title=>$self->session->form->text("heading")." Logo",
diff --git a/lib/WebGUI/Asset/Wobject/HttpProxy.pm b/lib/WebGUI/Asset/Wobject/HttpProxy.pm
index da4228d87..ed6586e25 100644
--- a/lib/WebGUI/Asset/Wobject/HttpProxy.pm
+++ b/lib/WebGUI/Asset/Wobject/HttpProxy.pm
@@ -99,7 +99,7 @@ sub getCookieJar {
$storage = WebGUI::Storage->create;
$self->update({cookieJarStorageId=>$storage->getId});
} else {
- $storage = WebGUI::Storage->get($self->get("cookieJarStorageId"));
+ $storage = WebGUI::Storage->get($self->session,$self->get("cookieJarStorageId"));
}
return $storage;
}
diff --git a/lib/WebGUI/Asset/Wobject/Product.pm b/lib/WebGUI/Asset/Wobject/Product.pm
index 47a4c3db8..f12a6ea7a 100644
--- a/lib/WebGUI/Asset/Wobject/Product.pm
+++ b/lib/WebGUI/Asset/Wobject/Product.pm
@@ -40,7 +40,7 @@ sub _addFileTab {
return;
}
- my $file = WebGUI::Storage->get($self->get($column));
+ my $file = WebGUI::Storage->get($self->session,$self->get($column));
$tabform->getTab("properties")->readOnly(
-value=>''.$i18n->get("deleteImage").'',
-label=>$i18n->get($internationalId),
@@ -53,7 +53,7 @@ sub _duplicateFile {
my $newAsset = $_[0];
my $column = $_[1];
if($self->get($column)){
- my $file = WebGUI::Storage->get($self->get($column));
+ my $file = WebGUI::Storage->get($self->session,$self->get($column));
my $newstore = $file->copy;
$newAsset->update({ $column=>$newstore->getId });
}
@@ -85,7 +85,7 @@ sub addRevision {
my $newSelf = $self->SUPER::addRevision(@_);
foreach my $field (qw(image1 image2 image3 brochure manual warranty)) {
if ($self->get($field)) {
- my $newStorage = WebGUI::Storage->get($self->get($field))->copy;
+ my $newStorage = WebGUI::Storage->get($self->session,$self->get($field))->copy;
$newSelf->update({$field=>$newStorage->getId});
$self->session->db->write("update Product set $field=".$self->session->db->quote($newStorage->getId)." where assetId=".$self->session->db->quote($newSelf->getId)." and revisionDate=".$self->session->db->quote($newSelf->get("revisionDate")));
}
@@ -286,7 +286,7 @@ sub purge {
while (my @array = $sth->array) {
foreach my $id (@array){
next if ($id eq "");
- WebGUI::Storage->get($id)->delete;
+ WebGUI::Storage->get($self->session,$id)->delete;
}
}
$sth->finish;
@@ -302,12 +302,12 @@ sub purge {
sub purgeRevision {
my $self = shift;
- WebGUI::Storage->get($self->get("image1"))->delete if ($self->get("image1"));
- WebGUI::Storage->get($self->get("image2"))->delete if ($self->get("image2"));
- WebGUI::Storage->get($self->get("image3"))->delete if ($self->get("image3"));
- WebGUI::Storage->get($self->get("brochure"))->delete if ($self->get("brochure"));
- WebGUI::Storage->get($self->get("manual"))->delete if ($self->get("manual"));
- WebGUI::Storage->get($self->get("warranty"))->delete if ($self->get("warranty"));
+ WebGUI::Storage->get($self->session,$self->get("image1"))->delete if ($self->get("image1"));
+ WebGUI::Storage->get($self->session,$self->get("image2"))->delete if ($self->get("image2"));
+ WebGUI::Storage->get($self->session,$self->get("image3"))->delete if ($self->get("image3"));
+ WebGUI::Storage->get($self->session,$self->get("brochure"))->delete if ($self->get("brochure"));
+ WebGUI::Storage->get($self->session,$self->get("manual"))->delete if ($self->get("manual"));
+ WebGUI::Storage->get($self->session,$self->get("warranty"))->delete if ($self->get("warranty"));
return $self->SUPER::purgeRevision;
}
@@ -424,7 +424,7 @@ sub www_deleteFileConfirm {
my $column = $self->session->form->process("file");
return $self->session->privilege->insufficient() unless ($self->canEdit);
my $store = $self->get($column);
- my $file = WebGUI::Storage->get($store);
+ my $file = WebGUI::Storage->get($self->session,$store);
$file->delete;
$self->update({$column => ''});
return $self->www_edit;
@@ -724,40 +724,40 @@ sub view {
#---brochure
my $i18n = WebGUI::International->new($self->session,'Asset_Product');
if ($brochure) {
- $file = WebGUI::Storage->get($brochure);
+ $file = WebGUI::Storage->get($self->session,$brochure);
$var{"brochure.icon"} = $self->getFileIconUrl($file);
$var{"brochure.label"} = $i18n->get(13);
$var{"brochure.URL"} = $self->getFileUrl($file);
}
#---manual
if ($manual) {
- $file = WebGUI::Storage->get($manual);
+ $file = WebGUI::Storage->get($self->session,$manual);
$var{"manual.icon"} = $self->getFileIconUrl($file);
$var{"manual.label"} = $i18n->get(14);
$var{"manual.URL"} = $self->getFileUrl($file);
}
#---warranty
if ($warranty) {
- $file = WebGUI::Storage->get($warranty);
+ $file = WebGUI::Storage->get($self->session,$warranty);
$var{"warranty.icon"} = $self->getFileIconUrl($file);
$var{"warranty.label"} = $i18n->get(15);
$var{"warranty.URL"} = $self->getFileUrl($file);
}
#---image1
if ($image1) {
- $file = WebGUI::Storage->get($image1);
+ $file = WebGUI::Storage->get($self->session,$image1);
$var{thumbnail1} = $self->getThumbnailUrl($file);
$var{image1} = $self->getFileUrl($file);
}
#---image2
if ($image2) {
- $file = WebGUI::Storage->get($image2);
+ $file = WebGUI::Storage->get($self->session,$image2);
$var{thumbnail2} = $self->getThumbnailUrl($file);
$var{image2} = $self->getFileUrl($file);
}
#---image3
if ($image3) {
- $file = WebGUI::Storage->get($image3);
+ $file = WebGUI::Storage->get($self->session,$image3);
$var{thumbnail3} = $self->getThumbnailUrl($file);
$var{image3} = $self->getFileUrl($file);
}
diff --git a/lib/WebGUI/Form/File.pm b/lib/WebGUI/Form/File.pm
index f453f9101..38cd4aaee 100644
--- a/lib/WebGUI/Form/File.pm
+++ b/lib/WebGUI/Form/File.pm
@@ -99,7 +99,7 @@ sub displayForm {
return $self->toHtml unless $self->get("value");
##There are files inside here, for each one, display the image
##and another form control for deleting it.
- my $location = WebGUI::Storage->get($self->get("value"));
+ my $location = WebGUI::Storage->get($self->session,$self->get("value"));
my $id = $location->getId;
my $fileForm = '';
foreach my $file ( @{ $location->getFiles } ) {
@@ -126,7 +126,7 @@ form elements will just return their value.
sub displayValue {
my ($self) = @_;
return '' unless $self->get("value");
- my $location = WebGUI::Storage->get($self->get("value"));
+ my $location = WebGUI::Storage->get($self->session,$self->get("value"));
local $_;
my @files = map { sprintf qq!
%s!, $location->getFileIconUrl($_), $_; } @{ $location->getFiles };
my $fileValue = join "
\n", @files;
@@ -147,14 +147,14 @@ sub getValueFromPost {
my $self = shift;
my $value = $self->session->request->param($self->get("name"));
if ($self->session->request->param(join '_', '_', $self->get("name"), 'delete')) {
- my $storage = WebGUI::Storage->get($value);
+ my $storage = WebGUI::Storage->get($self->session,$value);
$storage->delete;
return '';
}
else {
my $storage;
if ($value) {
- $storage = WebGUI::Storage::Image->get($value);
+ $storage = WebGUI::Storage::Image->get($self->session,$value);
}
else {
$storage = WebGUI::Storage::Image->create;
diff --git a/lib/WebGUI/Form/Image.pm b/lib/WebGUI/Form/Image.pm
index ac55a37dd..04a1f63e6 100644
--- a/lib/WebGUI/Form/Image.pm
+++ b/lib/WebGUI/Form/Image.pm
@@ -101,7 +101,7 @@ profile field.
sub displayValue {
my ($self) = @_;
return '' unless $self->get("value");
- my $location = WebGUI::Storage->get($self->get("value"));
+ my $location = WebGUI::Storage->get($self->session,$self->get("value"));
local $_;
my @files = map { sprintf qq!
!, $location->getUrl($_) } @{ $location->getFiles };
my $fileValue = join "
\n", @files;
diff --git a/lib/WebGUI/Macro/FileUrl.pm b/lib/WebGUI/Macro/FileUrl.pm
index f39afca66..4abfc23e9 100644
--- a/lib/WebGUI/Macro/FileUrl.pm
+++ b/lib/WebGUI/Macro/FileUrl.pm
@@ -44,7 +44,7 @@ sub process {
my $url = shift;
my $asset = WebGUI::Asset->newByUrl($session,$url);
if (defined $asset) {
- my $storage = WebGUI::Storage->get($asset->get("storageId"));
+ my $storage = WebGUI::Storage->get($session,$asset->get("storageId"));
return $storage->getUrl($asset->get("filename"));
} else {
my $i18n = WebGUI::International->new($session, 'Macro_FileUrl');
diff --git a/lib/WebGUI/Storage.pm b/lib/WebGUI/Storage.pm
index 47d2b3e56..c0315f035 100644
--- a/lib/WebGUI/Storage.pm
+++ b/lib/WebGUI/Storage.pm
@@ -22,10 +22,6 @@ use POSIX;
use Storable qw(nstore retrieve);
use strict;
use warnings;
-use WebGUI::ErrorHandler;
-use WebGUI::Id;
-use WebGUI::Session;
-use WebGUI::URL;
use WebGUI::Utility;
use Apache2::Request;
use Apache2::Upload;
@@ -42,7 +38,7 @@ This package provides a mechanism for storing and retrieving files that are not
use WebGUI::Storage;
$store = WebGUI::Storage->create;
- $store = WebGUI::Storage->get($id);
+ $store = WebGUI::Storage->get($self->session,$id);
$filename = $store->addFileFromFilesystem($pathToFile);
$filename = $store->addFileFromFormPost($formVarName);
@@ -318,32 +314,44 @@ sub copy {
#-------------------------------------------------------------------
-=head2 create ( )
+=head2 create ( session )
Creates a new storage location on the file system.
+=head3 session
+
+A reference to the current session;
+
=cut
sub create {
my $class = shift;
- my $id = $self->session->id->generate();
- my $self = $class->get($id);
+ my $session = shift;
+ my $id = $session->id->generate();
+ my $self = $class->get($session,$id);
$self->_makePath;
return $self;
}
+
+
#-------------------------------------------------------------------
-=head2 createTemp ( )
+=head2 createTemp ( session )
Creates a temporary storage location on the file system.
+=head3 session
+
+A reference to the current session.
+
=cut
sub createTemp {
my $class = shift;
+ my $session = shift;
my $id = $self->session->id->generate();
$id =~ m/^(.{2})/;
- my $self = {_id => $id, _part1 => 'temp', _part2 => $1};
+ my $self = {_session=>$session, _id => $id, _part1 => 'temp', _part2 => $1};
bless $self, ref($class)||$class;
$self->_makePath;
return $self;
@@ -385,10 +393,14 @@ sub deleteFile {
#-------------------------------------------------------------------
-=head2 get ( id )
+=head2 get ( session, id )
Returns a WebGUI::Storage object.
+=head3 session
+
+A reference to the current sesion.
+
=head3 id
The unique identifier for this file system storage location.
@@ -397,10 +409,11 @@ The unique identifier for this file system storage location.
sub get {
my $class = shift;
+ my $session = shift;
my $id = shift;
return undef unless $id;
$id =~ m/^(.{2})(.{2})/;
- my $self = {_id => $id, _part1 => $1, _part2 => $2};
+ my $self = {_session=>$session, _id => $id, _part1 => $1, _part2 => $2};
bless $self, ref($class)||$class;
$self->_makePath unless (-e $self->getPath); # create the folder in case it got deleted somehow
return $self;
@@ -663,6 +676,20 @@ sub renameFile {
}
+#-------------------------------------------------------------------
+
+=head3 session ( )
+
+Returns a reference to the current session.
+
+=cut
+
+sub session {
+ my $self = shift;
+ return $self->{_session};
+}
+
+
#-------------------------------------------------------------------
=head2 setPrivileges ( ownerUserId, groupIdView, groupIdEdit )