From 6266be5b658b659a8392103c2e654912857919d5 Mon Sep 17 00:00:00 2001 From: Matthew Wilson Date: Wed, 18 Jan 2006 15:22:43 +0000 Subject: [PATCH] lots more fixes and enhanced User.t --- lib/WebGUI/Asset.pm | 2 +- lib/WebGUI/Asset/Event.pm | 2 +- lib/WebGUI/Asset/FilePile.pm | 30 +++++++++--------- lib/WebGUI/Asset/Shortcut.pm | 8 ++--- lib/WebGUI/AssetClipboard.pm | 8 ++--- lib/WebGUI/AssetLineage.pm | 2 +- lib/WebGUI/AssetVersioning.pm | 2 +- lib/WebGUI/Auth/LDAP.pm | 2 +- t/User.t | 60 ++++++++++++++++++++++++++++++++++- 9 files changed, 87 insertions(+), 29 deletions(-) diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 3b2044a21..fb28d5def 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1285,7 +1285,7 @@ sub publish { my $assetIds = $self->session->db->buildArrayRef("select assetId from asset where lineage like ".$self->session->db->quote($self->get("lineage").'%')); my $idList = $self->session->db->quoteAndJoin($assetIds); $self->session->db->write("update asset set state='published', stateChangedBy=".$self->session->db->quote($self->session->user->userId).", stateChanged=".$self->session->datetime->time()." where assetId in (".$idList.")"); - my $cache = WebGUI::Cache->new; + my $cache = WebGUI::Cache->new($self->session); foreach my $id (@{$assetIds}) { # we do the purge directly cuz it's a lot faster than instantiating all these assets $cache->deleteChunk(["asset",$id]); diff --git a/lib/WebGUI/Asset/Event.pm b/lib/WebGUI/Asset/Event.pm index 343e823f9..bf5e89685 100644 --- a/lib/WebGUI/Asset/Event.pm +++ b/lib/WebGUI/Asset/Event.pm @@ -121,7 +121,7 @@ sub getEditForm { }) ); } - $tabform->getTab("display")->template($self->session, + $tabform->getTab("display")->template( -name=>"templateId", -value=>$self->getValue("templateId"), -namespace=>"EventsCalendar/Event", diff --git a/lib/WebGUI/Asset/FilePile.pm b/lib/WebGUI/Asset/FilePile.pm index 6d6204a56..d0c1ac093 100644 --- a/lib/WebGUI/Asset/FilePile.pm +++ b/lib/WebGUI/Asset/FilePile.pm @@ -149,40 +149,40 @@ sub edit { #------------------------------------------------------------------- sub editSave { - my $class = shift; - my $tempStorage = WebGUI::Storage->create; + my $self = shift; + my $tempStorage = WebGUI::Storage->create($self->session); $tempStorage->addFileFromFormPost("file"); foreach my $filename (@{$tempStorage->getFiles}) { - my $storage = WebGUI::Storage::Image->create; + my $storage = WebGUI::Storage::Image->create($self->session); $storage->addFileFromFilesystem($tempStorage->getPath($filename)); - $storage->setPrivileges($class->getParent->get("ownerUserId"),$class->getParent->get("groupIdView"),$class->getParent->get("groupIdEdit")); + $storage->setPrivileges($self->getParent->get("ownerUserId"),$self->getParent->get("groupIdView"),$self->getParent->get("groupIdEdit")); my %data; - my $className = 'WebGUI::Asset::File'; - $className = "WebGUI::Asset::File::Image" if ($storage->isImage($filename)); - foreach my $definition (@{$className->definition}) { + my $selfName = 'WebGUI::Asset::File'; + $selfName = "WebGUI::Asset::File::Image" if ($storage->isImage($filename)); + foreach my $definition (@{$selfName->definition($self->session)}) { foreach my $property (keys %{$definition->{properties}}) { - $data{$property} = $class->session->form->process( + $data{$property} = $self->session->form->process( $property, $definition->{properties}{$property}{fieldType}, $definition->{properties}{$property}{defaultValue} ); } } - $data{className} = $className; + $data{className} = $selfName; $data{storageId} = $storage->getId; $data{filename} = $data{title} = $data{menuTitle} = $filename; $data{templateId} = 'PBtmpl0000000000000024'; - $data{templateId} = 'PBtmpl0000000000000088' if ($className eq "WebGUI::Asset::File::Image"); - $data{url} = $class->getParent->getUrl.'/'.$filename; - my $newAsset = $class->getParent->addChild(\%data); + $data{templateId} = 'PBtmpl0000000000000088' if ($selfName eq "WebGUI::Asset::File::Image"); + $data{url} = $self->getParent->getUrl.'/'.$filename; + my $newAsset = $self->getParent->addChild(\%data); delete $newAsset->{_storageLocation}; $newAsset->setSize($storage->getFileSize($filename)); - $newAsset->generateThumbnail if ($className eq "WebGUI::Asset::File::Image"); + $newAsset->generateThumbnail if ($selfName eq "WebGUI::Asset::File::Image"); $newAsset->commit; } $tempStorage->delete; - return $class->getParent->www_manageAssets if ($class->session->form->process("proceed") eq "manageAssets"); - return $class->getParent->www_view; + return $self->getParent->www_manageAssets if ($self->session->form->process("proceed") eq "manageAssets"); + return $self->getParent->www_view; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm index 4a39959de..53b446f23 100644 --- a/lib/WebGUI/Asset/Shortcut.pm +++ b/lib/WebGUI/Asset/Shortcut.pm @@ -349,7 +349,7 @@ sub getOverridesList { my %overrides = $self->getOverrides; $output .= ''; $output .= ''; - foreach my $definition (@{$self->getShortcutOriginal->definition}) { + foreach my $definition (@{$self->getShortcutOriginal->definition($self->session)}) { foreach my $prop (keys %{$definition->{properties}}) { next if $definition->{properties}{$prop}{fieldType} eq 'hidden'; $output .= ''; @@ -383,7 +383,7 @@ sub getOverrides { my $orig = $self->getShortcutOriginal; unless (exists $orig->{_propertyDefinitions}) { my %properties; - foreach my $definition (@{$orig->definition}) { + foreach my $definition (@{$orig->definition($self->session)}) { %properties = (%properties, %{$definition->{properties}}); } $orig->{_propertyDefinitions} = \%properties; @@ -740,7 +740,7 @@ sub www_editOverride { my %overrides = $self->getOverrides; my $output = ''; my %props; - foreach my $def (@{$self->getShortcutOriginal->definition}) { + foreach my $def (@{$self->getShortcutOriginal->definition($self->session)}) { %props = (%props,%{$def->{properties}}); } $output .= '
'.$i18n->get('fieldName').''.$i18n->get('edit delete fieldname').''.$i18n->get('Original Value').''.$i18n->get('New value').''.$i18n->get('Replacement value').'
'; @@ -780,7 +780,7 @@ sub www_saveOverride { my %overrides = $self->getOverrides; my $output = ''; my %props; - foreach my $def (@{$self->getShortcutOriginal->definition}) { + foreach my $def (@{$self->getShortcutOriginal->definition($self->session)}) { %props = (%props,%{$def->{properties}}); } my $fieldType = $props{$fieldName}{fieldType}; diff --git a/lib/WebGUI/AssetClipboard.pm b/lib/WebGUI/AssetClipboard.pm index 0c6e60e63..989a9f694 100644 --- a/lib/WebGUI/AssetClipboard.pm +++ b/lib/WebGUI/AssetClipboard.pm @@ -129,7 +129,7 @@ sub getAssetsInClipboard { assetData.title desc "); while (my ($id, $date, $class) = $sth->array) { - push(@assets, WebGUI::Asset->new($id,$class,$date)); + push(@assets, WebGUI::Asset->new($self->session,$id,$class,$date)); } $sth->finish; return \@assets; @@ -150,7 +150,7 @@ Alphanumeric ID tag of Asset. sub paste { my $self = shift; my $assetId = shift; - my $pastedAsset = WebGUI::Asset->newByDynamicClass($assetId); + my $pastedAsset = WebGUI::Asset->newByDynamicClass($self->session,$assetId); return 0 unless ($self->get("state") eq "published"); if ($self->getId eq $pastedAsset->get("parentId") || $pastedAsset->setParent($self)) { $pastedAsset->publish; @@ -189,7 +189,7 @@ sub www_copyList { my $self = shift; return $self->session->privilege->insufficient() unless $self->canEdit; foreach my $assetId ($self->session->request->param("assetId")) { - my $asset = WebGUI::Asset->newByDynamicClass($assetId); + my $asset = WebGUI::Asset->newByDynamicClass($self->session,$assetId); if ($asset->canEdit) { my $newAsset = $asset->duplicate; $newAsset->update({ title=>$newAsset->getTitle.' (copy)'}); @@ -265,7 +265,7 @@ sub www_cutList { my $self = shift; return $self->session->privilege->insufficient() unless $self->canEdit; foreach my $assetId ($self->session->request->param("assetId")) { - my $asset = WebGUI::Asset->newByDynamicClass($assetId); + my $asset = WebGUI::Asset->newByDynamicClass($self->session,$assetId); if ($asset->canEdit) { $asset->cut; } diff --git a/lib/WebGUI/AssetLineage.pm b/lib/WebGUI/AssetLineage.pm index f09ef4ba6..0feda3478 100644 --- a/lib/WebGUI/AssetLineage.pm +++ b/lib/WebGUI/AssetLineage.pm @@ -307,7 +307,7 @@ sub getLineage { my $cmd = "use ".$className; eval ($cmd); $self->session->errorHandler->fatal("Couldn't compile asset package: ".$className.". Root cause: ".$@) if ($@); - foreach my $definition (@{$className->definition}) { + foreach my $definition (@{$className->definition($self->session)}) { unless ($definition->{tableName} eq "asset") { my $tableName = $definition->{tableName}; $tables .= " left join $tableName on assetData.assetId=".$tableName.".assetId and assetData.revisionDate=".$tableName.".revisionDate"; diff --git a/lib/WebGUI/AssetVersioning.pm b/lib/WebGUI/AssetVersioning.pm index 4a0a54aa2..131389b8b 100644 --- a/lib/WebGUI/AssetVersioning.pm +++ b/lib/WebGUI/AssetVersioning.pm @@ -202,7 +202,7 @@ sub purgeRevision { my $self = shift; if ($self->getRevisionCount > 1) { $self->session->db->beginTransaction; - foreach my $definition (@{$self->definition}) { + foreach my $definition (@{$self->definition($self->session)}) { $self->session->db->write("delete from ".$definition->{tableName}." where assetId=".$self->session->db->quote($self->getId)." and revisionDate=".$self->session->db->quote($self->get("revisionDate"))); } $self->session->db->commit; diff --git a/lib/WebGUI/Auth/LDAP.pm b/lib/WebGUI/Auth/LDAP.pm index 01f7c1c12..571e8413b 100644 --- a/lib/WebGUI/Auth/LDAP.pm +++ b/lib/WebGUI/Auth/LDAP.pm @@ -418,7 +418,7 @@ sub new { my $self = WebGUI::Auth->new($session,$authMethod,$userId,\@callable); my $connection = $session->scratch->get("ldapConnection") || $session->setting->get("ldapConnection"); my $ldaplink = WebGUI::LDAPLink->new($session,$connection); - $self->{_connection} = $ldaplink->get; + $self->{_connection} = $ldaplink->get if $ldaplink; my $i18n = WebGUI::International->new($session, "AuthLDAP"); my %ldapStatusCode = map { $_ => $i18n->get("LDAPLink_".$_) } (0..21, 32,33,34,36, 48..54, 64..71, 80); diff --git a/t/User.t b/t/User.t index b8df1ff96..bce82ed51 100644 --- a/t/User.t +++ b/t/User.t @@ -17,7 +17,7 @@ use WebGUI::Session; use WebGUI::Utility; use WebGUI::User; -use Test::More tests => 34; # increment this value for each test you create +use Test::More tests => 49; # increment this value for each test you create my $session = WebGUI::Test->session; @@ -141,6 +141,64 @@ $user = WebGUI::User->new($session); is($user->userId, '1', 'new() -- returns visitor with no args'); $user = ""; +$user = WebGUI::User->new($session, "new", "ROYSUNIQUEUSERID000002"); +is($user->userId, "ROYSUNIQUEUSERID000002", 'new() -- override user id'); +$user->authMethod("LDAP"); +is($user->authMethod, "LDAP", 'authMethod() -- set to LDAP'); + +#get/set karma +my $oldKarma = $user->karma; +$user->karma('69', 'peter gibbons', 'test karma'); +is($user->karma, $oldKarma+69, 'karma() -- get/set add amount'); + +my ($source, $description) = $session->db->quickArray("select source, description from karmaLog where userId=".$session->db->quote($user->userId)); + +is($source, 'peter gibbons', 'karma() -- get/set source'); +is($description, 'test karma', 'karma() -- get/set description'); + +$oldKarma = $user->karma; +$user->karma('-69', 'peter gibbons', 'lumberg took test karma away'); +is($user->karma, $oldKarma-69, 'karma() -- get/set subtract amount'); + +#Let's test referringAffiliate +$lastUpdate = time(); +$user->referringAffiliate(10); +is($user->referringAffiliate, '10', 'referringAffiliate() -- get/set'); +is($user->lastUpdated, $lastUpdate, 'lastUpdated() -- referringAffiliate'); + +#Let's try adding this user to some groups +my @groups = qw|2 4|; +$user->addToGroups(\@groups); + +my ($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('2')." and userId=".$session->db->quote($user->userId)); +ok($result, 'addToGroups() -- added to first test group'); + +($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('4')." and userId=".$session->db->quote($user->userId)); +ok($result, 'addToGroups() -- added to second test group'); + +#Let's delete this user from our test groups +$user->deleteFromGroups(\@groups); + +($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('2')." and userId=".$session->db->quote($user->userId)); +is($result, '0', 'deleteFromGroups() -- removed from first test group'); + +($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('4')." and userId=".$session->db->quote($user->userId)); +is($result, '0', 'deleteFromGroups() -- removed from second test group'); + +#Let's delete this user +my $userId = $user->userId; +$user->delete; + +my ($count) = $session->db->quickArray("select count(*) from users where userId=".$session->db->quote($userId)); +is($count, '0', 'delete() -- users table'); + +($count) = $session->db->quickArray("select count(*) from userProfileData where userId=".$session->db->quote($userId)); +is($count, '0', 'delete() -- userProfileData table'); + +($count) = $session->db->quickArray("select count(*) from messageLog where userId=".$session->db->quote($userId)); +is($count, '0', 'delete() -- messageLog table'); + + #identifier() and uncache() SKIP: { skip("identifier() -- deprecated",1);