From d4c9973c1ec4eec0ecbc1ea833c860f611274c1e Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Fri, 21 May 2010 18:09:08 +0200 Subject: [PATCH] Add basic logging. --- lib/WebGUI/AssetAspect/Subscriber.pm | 68 +++++++++++++++++++++++----- sbin/install_newsletter.pl | 27 ++++++----- 2 files changed, 72 insertions(+), 23 deletions(-) diff --git a/lib/WebGUI/AssetAspect/Subscriber.pm b/lib/WebGUI/AssetAspect/Subscriber.pm index 9557a59..a830eb2 100644 --- a/lib/WebGUI/AssetAspect/Subscriber.pm +++ b/lib/WebGUI/AssetAspect/Subscriber.pm @@ -3,6 +3,7 @@ package WebGUI::AssetAspect::Subscriber; use strict; use warnings; use Class::C3; +use Carp; use WebGUI::Asset::Template; use WebGUI::Macro; @@ -282,33 +283,76 @@ sub sendNoMutationEmail { return; } +sub logConfirmation { + my $self = shift; + my $code = shift || return; + my $session = $self->session; + my $db = $session->db; + + $db->write( + ' update assetAspectSubscriber_log set ' + .' confirmationIp=?, confirmationDate=?, confirmed=? where code=? and assetId=?', + [ + $session->env->getIp, + time(), + 1, + $code, + $self->getId, + ] + ); + + return; +}; + +sub logRequest { + my $self = shift; + my $type = shift || croak 'No type passed to logrequest'; + my $user = shift || croak 'No user passed to logRequest'; + my $code = shift; + my $session = $self->session; + my $db = $session->db; + + $db->write( + ' insert into assetAspectSubscriber_log set ' + .' assetId=?, requestIp=?, requestDate=?, code=?, confirmed=?, anonymous=?, type=?, userId=?, email=?', + [ + $self->getId, + $session->env->getIp, + time(), + $code, + 0, + $self->session->user->isVisitor, + $type, + $user->getId, + $user->get('email'), + ] + ); + + return; +}; + #---------------------------------------------------------------------------- sub subscribe { my $self = shift; my $user = shift || $self->session->user; my $requireConfirm = shift // $self->get('alwaysConfirmSubscription'); my $session = $self->session; - my $db = $self->session->db; if ( $requireConfirm ) { if ( $user->isInGroup( $self->getSubscriptionGroup->getId ) ) { $self->sendNoMutationEmail( $user, 'subscribe' ); + $self->logRequest( 'already_subscribed', $user ); } else { my $code = $self->session->id->generate; - - $db->write( 'replace into NewsletterCollection_subscriptions set assetId=?, userId=?, code=?, confirmed=?', [ - $self->getId, - $user->getId, - $code, - 0, - ] ); + $self->logRequest( 'subscribe', $user, $code ); $self->sendSubscriptionConfirmation( $user, $code ); } } else { $self->getSubscriptionGroup->addUsers( [ $user->getId ] ); + $self->logRequest( 'subscribe', $user ); } return; @@ -320,6 +364,7 @@ sub unsubscribe { my $user = shift || $self->session->user; $self->getSubscriptionGroup->deleteUsers( [ $user->getId ] ); + $self->logRequest( 'unsubscribe', $user ); return; } @@ -332,16 +377,15 @@ sub www_confirmSubscription { my $code = $form->get('code'); return unless $code; - my $userId = $db->quickScalar( 'select userId from NewsletterCollection_subscriptions where confirmed=? and code=?', [ + my $userId = $db->quickScalar( 'select userId from assetAspectSubscriber_log where confirmed=? and code=?', [ 0, $code, ] ); -# $db->write( 'update NewsletterCollection_subscriptions set confirmed=1, code=NULL where code=?', [ -# $code -# ] ); if ( $userId ) { $self->getSubscriptionGroup->addUsers( [ $userId ] ); + + $self->logConfirmation( $code ); } else { return $self->processStyle( 'Verkeerde code' ); diff --git a/sbin/install_newsletter.pl b/sbin/install_newsletter.pl index fe8dfd6..00653a6 100644 --- a/sbin/install_newsletter.pl +++ b/sbin/install_newsletter.pl @@ -68,6 +68,22 @@ sub installSubscriberAspectTable { primary key( assetId, revisionDate ) ); EOSQL + + $session->db->write(<db->write(<