Add unsubscribe confirmation.
This commit is contained in:
parent
c4e909556a
commit
bcb265e188
1 changed files with 36 additions and 11 deletions
|
|
@ -254,7 +254,7 @@ sub sendSubscriptionConfirmation {
|
||||||
my $session = $self->session;
|
my $session = $self->session;
|
||||||
|
|
||||||
my $var = $self->getEmailVars( $user );
|
my $var = $self->getEmailVars( $user );
|
||||||
my $url = $session->url->getSiteURL . $self->getUrl( "func=confirmSubscription;code=$code" );
|
my $url = $session->url->getSiteURL . $self->getUrl( "func=confirmMutation;code=$code" );
|
||||||
|
|
||||||
$var->{ confirmUrl } = $url;
|
$var->{ confirmUrl } = $url;
|
||||||
$var->{ code } = $code;
|
$var->{ code } = $code;
|
||||||
|
|
@ -376,7 +376,7 @@ sub subscribe {
|
||||||
my $code = $self->session->id->generate;
|
my $code = $self->session->id->generate;
|
||||||
$self->logRequest( 'subscribe', $user, $code );
|
$self->logRequest( 'subscribe', $user, $code );
|
||||||
|
|
||||||
$self->sendSubscriptionConfirmation( $user, $code );
|
$self->sendSubscriptionConfirmation( $user, $code, 'subscribe' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -391,28 +391,53 @@ sub subscribe {
|
||||||
sub unsubscribe {
|
sub unsubscribe {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $user = shift || $self->session->user;
|
my $user = shift || $self->session->user;
|
||||||
|
my $requireConfirm = shift // $self->get('alwaysConfirmSubscription');
|
||||||
|
|
||||||
|
my $session = $self->session;
|
||||||
|
|
||||||
|
if ( $requireConfirm ) {
|
||||||
|
if ( !$user->isInGroup( $self->getSubscriptionGroup->getId ) ) {
|
||||||
|
$self->sendNoMutationEmail( $user, 'unsubscribe' );
|
||||||
|
$self->logRequest( 'already_unsubscribed', $user );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
my $code = $self->session->id->generate;
|
||||||
|
$self->logRequest( 'unsubscribe', $user, $code );
|
||||||
|
|
||||||
|
$self->sendSubscriptionConfirmation( $user, $code, 'unsubscribe' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
$self->getSubscriptionGroup->deleteUsers( [ $user->getId ] );
|
$self->getSubscriptionGroup->deleteUsers( [ $user->getId ] );
|
||||||
$self->logRequest( 'unsubscribe', $user );
|
$self->logRequest( 'unsubscribe', $user );
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
sub www_confirmSubscription {
|
sub www_confirmMutation {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($form, $db) = $self->session->quick( 'form', 'db' );
|
my ($form, $db) = $self->session->quick( 'form', 'db' );
|
||||||
|
|
||||||
my $code = $form->get('code');
|
my $code = $form->get('code');
|
||||||
return unless $code;
|
return unless $code;
|
||||||
|
|
||||||
my $userId = $db->quickScalar( 'select userId from assetAspectSubscriber_log where confirmed=? and code=?', [
|
my ($userId, $type) = $db->quickArray(
|
||||||
|
'select userId, type from assetAspectSubscriber_log where confirmed=? and code=?',
|
||||||
|
[
|
||||||
0,
|
0,
|
||||||
$code,
|
$code,
|
||||||
] );
|
]
|
||||||
|
);
|
||||||
|
|
||||||
if ( $userId ) {
|
if ( $userId ) {
|
||||||
|
if ( $type eq 'subscribe' ) {
|
||||||
$self->getSubscriptionGroup->addUsers( [ $userId ] );
|
$self->getSubscriptionGroup->addUsers( [ $userId ] );
|
||||||
|
}
|
||||||
|
elsif ( $type eq 'unsubscribe' ) {
|
||||||
|
$self->getSubscriptionGroup->deleteUsers( [ $userId ] );
|
||||||
|
}
|
||||||
|
|
||||||
$self->logConfirmation( $code );
|
$self->logConfirmation( $code );
|
||||||
}
|
}
|
||||||
|
|
@ -448,7 +473,7 @@ sub www_processSubscription {
|
||||||
|
|
||||||
my $emailUser = WebGUI::User::SpecialState->newByEmail( $session, $email );
|
my $emailUser = WebGUI::User::SpecialState->newByEmail( $session, $email );
|
||||||
if ( $action eq 'unsubscribe' && defined $emailUser ) {
|
if ( $action eq 'unsubscribe' && defined $emailUser ) {
|
||||||
$self->unsubscribe( $emailUser );
|
$self->unsubscribe( $emailUser, 1 );
|
||||||
}
|
}
|
||||||
if ( $action eq 'subscribe' ) {
|
if ( $action eq 'subscribe' ) {
|
||||||
if ( !defined $emailUser ) {
|
if ( !defined $emailUser ) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue