diff --git a/lib/WebGUI/AssetAspect/Subscriber.pm b/lib/WebGUI/AssetAspect/Subscriber.pm index 272e14a..e143871 100644 --- a/lib/WebGUI/AssetAspect/Subscriber.pm +++ b/lib/WebGUI/AssetAspect/Subscriber.pm @@ -389,6 +389,7 @@ sub subscribe { my $requireConfirm = shift // $self->get('alwaysConfirmSubscription'); my $session = $self->session; + if ( $requireConfirm ) { if ( $user->isInGroup( $self->getSubscriptionGroup->getId ) ) { $self->sendNoMutationEmail( $user, 'subscribe' ); @@ -472,6 +473,24 @@ sub www_confirmMutation { } +sub subscribeAnonymous { + my $self = shift; + my $email = shift; # TODO || return ? + my $session = $self->session; + + my $emailUser = WebGUI::User::SpecialState->newByEmail( $session, $email ); + + if ( !defined $emailUser ) { + $emailUser = WebGUI::User::SpecialState->create( $session ); + $emailUser->update( { email => $email } ); + } + $emailUser->addSpecialState( 'Subscriber', $self->getId ); + + $self->subscribe( $emailUser, 1 ); + + return; +} + #---------------------------------------------------------------------------- sub www_processSubscription { my $self = shift; @@ -501,13 +520,14 @@ sub www_processSubscription { $self->unsubscribe( $emailUser, 1 ); } if ( $action eq 'subscribe' ) { - if ( !defined $emailUser ) { - $emailUser = WebGUI::User::SpecialState->create( $session ); - $emailUser->update( { email => $email } ); - } - $emailUser->addSpecialState( 'Subscriber', $self->getId ); + $self->subscribeAnonymous( $email ); + #if ( !defined $emailUser ) { + # $emailUser = WebGUI::User::SpecialState->create( $session ); + # $emailUser->update( { email => $email } ); + #} + #$emailUser->addSpecialState( 'Subscriber', $self->getId ); - $self->subscribe( $emailUser, 1 ); + #$self->subscribe( $emailUser, 1 ); } } else {