refactored storage api to handle new session stuff

This commit is contained in:
JT Smith 2006-01-12 19:15:34 +00:00
parent 02c5a65857
commit 1e5034acd6
11 changed files with 84 additions and 45 deletions

View file

@ -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.

View file

@ -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;

View file

@ -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};

View file

@ -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));

View file

@ -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",

View file

@ -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;
}

View file

@ -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=>'<a href="'.$self->getUrl('func=deleteFileConfirm&file='.$column).'">'.$i18n->get("deleteImage").'</a>',
-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);
}

View file

@ -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!<img src="%s" />&nbsp;%s!, $location->getFileIconUrl($_), $_; } @{ $location->getFiles };
my $fileValue = join "<br />\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;

View file

@ -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!<img src="%s" />!, $location->getUrl($_) } @{ $location->getFiles };
my $fileValue = join "<br />\n", @files;

View file

@ -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');

View file

@ -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 )