diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 52b01abb5..fc2c828b6 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -43,7 +43,6 @@ - add: workflow activity for expiry of email-unvalidated users. This is not enabled by default; add an instance of it to an appropriate workflow if you want it to run. - - fix: new profile fields and new users not handling profile defaults right - fix: subscription dates - fix: Default Rich Editor setting not rendering correctly - fix: visitor name disappearing on preview in CS diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index 4bffa70ca..bea70b4e5 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -351,11 +351,10 @@ sub www_editUser { foreach my $field (@{$category->getFields}) { next if $field->getId =~ /contentPositions/; my $label = $field->getLabel . ($field->isRequired ? "*" : ''); - my $defaultValue = WebGUI::Operation::Shared::secureEval($session, $field->get('dataDefault')); if ($field->getId eq "alias" && $u->userId eq '1') { - $tabform->getTab("profile")->raw($field->formField({label=>$label, value=>$defaultValue},1,undef,1)); + $tabform->getTab("profile")->raw($field->formField({label=>$label},1,undef,1)); } else { - $tabform->getTab("profile")->raw($field->formField({label=>$label, value=>$defaultValue},1,$u)); + $tabform->getTab("profile")->raw($field->formField({label=>$label},1,$u)); } } $tabform->getTab("profile")->fieldSetEnd($category->getLabel); diff --git a/lib/WebGUI/ProfileField.pm b/lib/WebGUI/ProfileField.pm index 9864e5013..60013a384 100644 --- a/lib/WebGUI/ProfileField.pm +++ b/lib/WebGUI/ProfileField.pm @@ -107,14 +107,6 @@ sub create { my $self = $class->new($session,$id); $self->setCategory($categoryId); $self->set($properties); - - # Since we're creating a new profile field, give every user the default value for it. - my $default = WebGUI::Operation::Shared::secureEval($session,$properties->{dataDefault}); - foreach my $userId ($session->db->buildArray("SELECT userId FROM users")) { - my $user = WebGUI::User->new($session, $userId); - $user->profileField($id, $default); - } - return $self; } @@ -191,7 +183,7 @@ sub formField { } else { $default = WebGUI::Operation::Shared::secureEval($self->session,$properties->{dataDefault}); } - $properties->{value} = $default unless defined $properties->{value}; + $properties->{value} = $default; if ($withWrapper == 1) { return WebGUI::Form::DynamicField->new($self->session,%{$properties})->displayFormWithWrapper; } elsif ($withWrapper == 2) { diff --git a/lib/WebGUI/User.pm b/lib/WebGUI/User.pm index dc3823e50..089a6a4d4 100644 --- a/lib/WebGUI/User.pm +++ b/lib/WebGUI/User.pm @@ -63,13 +63,6 @@ sub _create { $session->db->write("insert into users (userId,dateCreated) values (?,?)",[$userId, time()]); WebGUI::Group->new($session,2)->addUsers([$userId]); WebGUI::Group->new($session,7)->addUsers([$userId]); - - # Give user all profile fields as default values. - foreach my $field (@{WebGUI::ProfileField->getFields($session)}) { - my $defaultValue = WebGUI::Operation::Shared::secureEval($session, $field->get('dataDefault')); - $session->db->write("INSERT INTO userProfileData (userId, fieldName, fieldData) VALUES (?, ?, ?)", [$userId, $field->getId, $defaultValue]); - } - return $userId; } @@ -392,8 +385,22 @@ sub new { my %user; tie %user, 'Tie::CPHash'; %user = $session->db->quickHash("select * from users where userId=".$session->db->quote($userId)); - my %profile = $session->db->buildHash("SELECT fieldName, fieldData FROM userProfileData WHERE userId = ?", [$user{userId}]); - $profile{alias} = $user{username} if $profile{alias} !~ /\w/; + my %profile = $session->db->buildHash("select userProfileField.fieldName, userProfileData.fieldData + from userProfileField, userProfileData where userProfileField.fieldName=userProfileData.fieldName and + userProfileData.userId=".$session->db->quote($user{userId})); + my %default = $session->db->buildHash("select fieldName, dataDefault from userProfileField"); + foreach my $key (keys %default) { + my $value; + if ($profile{$key} eq "" && $default{$key}) { + $value = eval($default{$key}); + if (ref $value eq "ARRAY") { + $profile{$key} = $$value[0]; + } else { + $profile{$key} = $value; + } + } + } + $profile{alias} = $user{username} if ($profile{alias} =~ /^\W+$/ || $profile{alias} eq ""); $userData = { _userId => $userId, _user => \%user,