Began refactoring Subscriber aspect to allow (un)subscription by email.

This commit is contained in:
Martin Kamerbeek 2010-10-13 10:33:33 +02:00
parent 37120bafa8
commit 28e49e3dab

View file

@ -389,6 +389,7 @@ sub subscribe {
my $requireConfirm = shift // $self->get('alwaysConfirmSubscription'); my $requireConfirm = shift // $self->get('alwaysConfirmSubscription');
my $session = $self->session; my $session = $self->session;
if ( $requireConfirm ) { if ( $requireConfirm ) {
if ( $user->isInGroup( $self->getSubscriptionGroup->getId ) ) { if ( $user->isInGroup( $self->getSubscriptionGroup->getId ) ) {
$self->sendNoMutationEmail( $user, 'subscribe' ); $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 { sub www_processSubscription {
my $self = shift; my $self = shift;
@ -501,13 +520,14 @@ sub www_processSubscription {
$self->unsubscribe( $emailUser, 1 ); $self->unsubscribe( $emailUser, 1 );
} }
if ( $action eq 'subscribe' ) { if ( $action eq 'subscribe' ) {
if ( !defined $emailUser ) { $self->subscribeAnonymous( $email );
$emailUser = WebGUI::User::SpecialState->create( $session ); #if ( !defined $emailUser ) {
$emailUser->update( { email => $email } ); # $emailUser = WebGUI::User::SpecialState->create( $session );
} # $emailUser->update( { email => $email } );
$emailUser->addSpecialState( 'Subscriber', $self->getId ); #}
#$emailUser->addSpecialState( 'Subscriber', $self->getId );
$self->subscribe( $emailUser, 1 ); #$self->subscribe( $emailUser, 1 );
} }
} }
else { else {